「Bfloat16」を編集中

ナビゲーションに移動 検索に移動

警告: ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。ログインまたはアカウントを作成すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。

この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。

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

MonoBookへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細はMonoBook:著作権を参照)。 著作権保護されている作品は、許諾なしに投稿しないでください!

このページを編集するには、下記の確認用の質問に回答してください (詳細):

取り消し 編集の仕方 (新しいウィンドウで開きます)

このページで使用されているテンプレート: