計算機算術
AIの混合精度の学習で、計算の多くをFP16やbfloat16で行いながら、重みの元の値(マスターウェイト)をFP32で保持しておく主な理由はどれか。
- A小さな更新量を重みに足すとき、精度の低い形式では情報落ちで更新が消えてしまうから
- BFP32の方がFP16より計算が速いので、重みの計算をすべてFP32に任せるため
- CFP16やbfloat16では、重みの値をメモリに保存できない決まりになっているから
答えと解説を見る
正解:A. 小さな更新量を重みに足すとき、精度の低い形式では情報落ちで更新が消えてしまうから
学習では、重みに「学習率 × 勾配」という非常に小さな値を何度も足していきます。FP16やbfloat16は仮数が短く、重みに比べて更新量が小さすぎると、足した結果が丸めで元の重みのままになり、更新が消えてしまいます(情報落ち)。そこで重みはFP32で保持して更新を正しく積み重ね、前向きや逆向きの計算には低い精度に変換した写しを使います。計算の速さは低い精度の方が速く、低い精度の値も保存はできます。
- A. 正しい。小さな更新が情報落ちで消えるのを防ぐためです。
- B. 計算は低い精度の方が速くなります。
- C. 低い精度の値もメモリに保存できます。