メインメニューを開く

差分

Bfloat16

290 バイト追加, 2023年10月2日 (月) 01:49
編集の要約なし
{{小文字}}'''bfloat16''' (brain floating point、BF16)とは、浮動小数点を16ビット長で表す形式のひとつである。とは、[[浮動小数点]]を16ビット長で表す形式のひとつです。
bfloat16は「単純にFP32の仮数部を切り詰めた」というものである。[[Google]]が[[TensorFlow]]向けに[[開発]]したものです。汎用的なFP16に対して、BF16は「FP32に高速変換できる」のが利点。BF16は「単純に[[FP32]]の仮数部を切り詰めた」という[[仕様]]になっています。汎用的な「[[FP16]]」に対して「BF16はFP32と高速変換できる」のが利点であり、FP32との変換が頻繁に発生する用途(主に[[人工知能]])向けだと言われています。
{| class="wikitable" style="text-align:center; border-width:0;"
|+ [[FP16]]
|- style="line-height:70%;"
| colspan="2" style="border-width:0; background:#FFFFFF;" |sign| colspan="25" | sign| style="border-width:0; background:#FFFFFF;" colspan="5" | exponent (5 bit)| colspan="10" style="border-width:0; background:#FFFFFF;" colspan="10"| fraction (10 bit)
|- style="line-height:70%;"
| colspan="2" style="border-width:0; background:#FFFFFF;" colspan="2" |   ┃| colspan="5" style="border-width:0; background:#FFFFFF;" |┌───────┐| colspan="510" | ┌───────┐| style="border-width:0; background:#FFFFFF;" colspan="10"| ┌─────────────────┐
|- style="font-size:9pt;"
| style="border-width:0; background:#FFFFFF;" | || style="background:#C4FCFF;" |  0  || style="background:#9FFFAC;" |  0  || style="background:#9FFFAC;" |  1  || style="background:#9FFFAC;" |  1  || style="background:#9FFFAC;" |  0  || style="background:#9FFFAC;" |  0  || style="background:#FFACAC;" |  0  || style="background:#FFACAC;" |  1  || style="background:#FFACAC;" |  0  || style="background:#FFACAC;" |  0  || style="background:#FFACAC;" |  0  || style="background:#FFACAC;" |  0  || style="background:#FFACAC;" |  0  || style="background:#FFACAC;" |  0  || style="background:#FFACAC;" |  0  || style="background:#FFACAC;" |  0 
|-
| style="border-width:0; background:#FFFFFF;" | || style="border-width:0; background:#FFFFFF;" | 15 || style="border-width:0; background:#FFFFFF;" | 14 || colspan="3" style="border-width:0; background:#FFFFFF;" colspan="3" | || style="border-width:0; background:#FFFFFF;" | 10 || style="border-width:0; background:#FFFFFF;" | 9 || colspan="8" style="border-width:0; background:#FFFFFF;" colspan="8" | || style="border-width:0; background:#FFFFFF;" | 0
|}
{| class="wikitable" style="text-align:center; border-width:0;"
|+ bfloat16
|- style="line-height:70%;"
| colspan="2" style="border-width:0; background:#FFFFFF;" |sign| colspan="28" | sign| style="border-width:0; background:#FFFFFF;" colspan="8" | exponent (8 bit)| colspan="7" style="border-width:0; background:#FFFFFF;" colspan="7" | fraction (7 bit)
|- style="line-height:70%;"
| colspan="2" style="border-width:0; background:#FFFFFF;" colspan="2" |   ┃| colspan="8" style="border-width:0; background:#FFFFFF;" |┌─────────────┐| colspan="87" | ┌─────────────┐| style="border-width:0; background:#FFFFFF;" colspan="7" | ┌───────────┐
|- style="font-size:9pt;"
| style="border-width:0; background:#FFFFFF;" | || style="background:#C4FCFF;" |  0  || style="background:#9FFFAC;" |  0  || style="background:#9FFFAC;" |  1  || style="background:#9FFFAC;" |  1  || style="background:#9FFFAC;" |  1  || style="background:#9FFFAC;" |  1  || style="background:#9FFFAC;" |  1  || style="background:#9FFFAC;" |  0  || style="background:#9FFFAC;" |  0  || style="background:#FFACAC;" |  0  || style="background:#FFACAC;" |  1  || style="background:#FFACAC;" |  0  || style="background:#FFACAC;" |  0  || style="background:#FFACAC;" |  0  || style="background:#FFACAC;" |  0  || style="background:#FFACAC;" |  0 
|-
| style="border-width:0; background:#FFFFFF;" | || style="border-width:0; background:#FFFFFF;" | 15 || style="border-width:0; background:#FFFFFF;" | 14 || colspan="6" style="border-width:0; background:#FFFFFF;" colspan="6" | || style="border-width:0; background:#FFFFFF;" | 7 || style="border-width:0; background:#FFFFFF;" | 6 || colspan="5" style="border-width:0; background:#FFFFFF;" colspan="5" | || style="border-width:0; background:#FFFFFF;" | 0
|}
{| class="wikitable" style="text-align:center; border-width:0;"
|+ FP32
|- style="line-height:70%;"
| colspan="2" style="border-width:0; background:#FFFFFF;" |sign| colspan="28" | sign| style="border-width:0; background:#FFFFFF;" colspan="8" | exponent (8 bit)| colspan="23" style="border-width:0; background:#FFFFFF;" colspan="23"| fraction (23 bit)
|- style="line-height:70%;"
| colspan="2" style="border-width:0; background:#FFFFFF;" colspan="2" |   ┃| colspan="8" style="border-width:0; background:#FFFFFF;" |┌─────────────┐| colspan="823" | ┌─────────────┐| style="border-width:0; background:#FFFFFF;" colspan="23"| ┌───────────────────────────────────────────┐
|- style="font-size:9pt;"
| style="border-width:0; background:#FFFFFF;" | || style="background:#C4FCFF;" |  0  || style="background:#9FFFAC;" |  0  || style="background:#9FFFAC;" |  1  || style="background:#9FFFAC;" |  1  || style="background:#9FFFAC;" |  1  || style="background:#9FFFAC;" |  1  || style="background:#9FFFAC;" |  1  || style="background:#9FFFAC;" |  0  || style="background:#9FFFAC;" |  0  || style="background:#FFACAC;" |  0  || style="background:#FFACAC;" |  1  || style="background:#FFACAC;" |  0  || style="background:#FFACAC;" |  0  || style="background:#FFACAC;" |  0  || style="background:#FFACAC;" |  0  || style="background:#FFACAC;" |  0  || style="background:#FFACACACFFAC;" |  01  || style="background:#FFACAC;" |  0  || style="background:#FFACAC;" |  0  || style="background:#FFACAC;" |  0  || style="background:#FFACAC;" |  0  || style="background:#FFACAC;" |  0  || style="background:#FFACAC;" |  0  || style="background:#FFACAC;" |  0  || style="background:#FFACAC;" |  0  || style="background:#FFACAC;" |  0  || style="background:#FFACAC;" |  0  || style="background:#FFACAC;" |  0  || style="background:#FFACAC;" |  0  || style="background:#FFACAC;" |  0  || style="background:#FFACAC;" |  0  || style="background:#FFACAC;" |  0 
|-
| style="border-width:0; background:#FFFFFF;" | || style="border-width:0; background:#FFFFFF;" | 31 || style="border-width:0; background:#FFFFFF;" | 30 || colspan="6" style="border-width:0; background:#FFFFFF;" colspan="6" | || style="border-width:0; background:#FFFFFF;" | 23 || style="border-width:0; background:#FFFFFF;" | 22 || colspan="21" style="border-width:0; background:#FFFFFF;" colspan="21" | || style="border-width:0; background:#FFFFFF;" | 0
|}
FP32からBF16への丸め処理の発動条件は* FP32の仮数部の「7ビット目が0」かつ「8ビット目が1」 == 主なBF16をサポートする製品 ==* [[Intel]]の[[CPU]] ([[AVX-512]]対応製品の一部)* [[NVIDIA]]の[[GPU]] ([[NVIDIA Ampere]]搭載品) == 関連項目 ==* [[半精度浮動小数点数]]* [[binary16]]* [[bfloat16]] [[category: 人工知能]]