ブロック浮動小数点数

提供:MonoBook

ブロック浮動小数点数とは、「ひとつの指数部」を共有し、「仮数の配列」のような一定サイズのブロックとして扱うことでデータ容量を節約した浮動小数点数のことです。

一般的な浮動小数点数では指数部と仮数部で表現されます。人工知能向けにFP16やBF16などはビット数を削る競争をしていましたが、8ビット、さらに4ビットくらいになると削るのも難しくなりました。

そこで「指数部は共有し、複数のブロックで仮数部だけを可変にする」という節約法が編み出されました。

とくに人工知能の計算で使われる行列データは、多くの場合「同じ層のデータなら、数値の大きさの範囲が似通っている」という性質があります。つまり「指数部はほぼ同じ値」なので「何度も書くのは無駄」だということになります。それなら共有すればいいじゃんという結論に至ったようです。

データとしては「1個の指数部」「続く32個(32ブロック)は仮数部」というような表現となります。