bfloat16 (brain floating point、BF16)とは、浮動小数点を16ビット長で表す形式のひとつである。
bfloat16は「単純にFP32の仮数部を切り詰めた」というものである。
汎用的なFP16に対して、BF16は「FP32に高速変換できる」のが利点。
FP16
| sign
|
exponent (5 bit)
|
fraction (10 bit)
|
| ┃
|
┌───────┐
|
┌─────────────────┐
|
|
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0
|
|
15 |
14 |
|
10 |
9 |
|
0
|
bfloat16
| sign
|
exponent (8 bit)
|
fraction (7 bit)
|
| ┃
|
┌─────────────┐
|
┌───────────┐
|
|
0 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0
|
|
15 |
14 |
|
7 |
6 |
|
0
|
FP32
| sign
|
exponent (8 bit)
|
fraction (23 bit)
|
| ┃
|
┌─────────────┐
|
┌───────────────────────────────────────────┐
|
|
0 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0
|
|
31 |
30 |
|
23 |
22 |
|
0
|
主なBF16をサポートする製品