ディープラーニングハードウェア機械学習

FP16

えふぴーじゅうろく · 16-bit floating point (Half precision)
24 views

FP16(半精度浮動小数点数)は、コンピュータで数値を表現するためのデータフォーマットの一つで、符号部1ビット、指数部5ビット、仮数部10ビットの計16ビット(2バイト)で実数を表現します。ディープラーニングのトレーニングや推論において、メモリ帯域幅の節約や計算速度の高速化、モデル軽量化のために広く採用されているデータ型です。

FP16とは

FP16とは、「半精度浮動小数点数」と呼ばれるデータフォーマットであり、1つの数値を16ビット(2バイト)のデータ量で表現する仕様のことです。AIやディープラーニングの分野において、モデルの計算処理を高速化し、必要なメモリ容量を削減するための主要なデータ型として広く利用されています。

詳しく解説

FP16は、一般的なコンピュータ計算で使われる32ビットの単精度浮動小数点数(FP32)に比べ、半分のデータサイズで数値を扱います。具体的なビット構成は、正負を示す符号部が1ビット、数値の大きさを決める指数部が5ビット、数値の精度を決める仮数部が10ビットです。ディープラーニングのモデルは数億〜数千億個のパラメータ(重み)を持ちますが、これをFP32からFP16に変換することで、モデル全体のメモリサイズを半分に削減できます。これにより、GPUなどのハードウェアにおけるメモリ転送速度のボトルネックが解消され、演算処理の高速化(スループット向上)が実現します。また、現代の多くのAI特化型プロセッサはFP16の計算を高速に行う専用の演算コア(Tensorコアなど)を搭載しており、ハードウェアの性能を最大限に引き出すことができます。

具体例・使われ方

具体的な利用例として、大規模言語モデル(LLM)の「推論」処理や「微調整(ファインチューニング)」が挙げられます。例えば、パラメータ数が非常に多いモデルを1枚のGPUメモリに収めて実行したい場合、FP16形式でデータを保持することでメモリ不足を回避できます。また、NVIDIAのGPUを用いた「混合精度トレーニング」では、計算の大部分をFP16で行い、累積誤差が問題となる特定の計算のみをFP32で行うことで、モデルの予測精度を維持したまま学習速度を大幅に向上させています。

似た用語との違い

混同されやすい概念に「FP32」と「BF16」があります。FP32は32ビットで表現される単精度浮動小数点数であり、FP16に比べて表現できる数値の範囲が広く精度も高いですが、メモリ使用量と計算コストが2倍になります。一方、BF16(Brain Floating Point 16)はFP16と同じく16ビットのデータ型ですが、指数部を8ビット(FP32と同じ)、仮数部を7ビットに設計しています。これにより、BF16はFP16よりも表現できる数値の範囲が格段に広く、ディープラーニングの学習時における「勾配消失」や「アンダーフロー」のリスクを低減しやすいという違いがあります。

注意点

FP16を採用する際の最大の注意点は、表現できる「数値の精度」と「数値の範囲」が限られていることです。指数部が5ビットしかないため、極端に小さな値(約6.10 × 10^-5未満)や大きな値(65504超)を表現できず、計算途中でアンダーフロー(値が0になる現象)やオーバーフロー(値が無限大になる現象)が発生しやすくなります。ディープラーニングの学習(トレーニング)をFP16のみで行うと、学習が不安定になったり、モデルの性能が著しく低下したりすることがあるため、スケールファクター(損失スケーリング)などの特別な技術を用いてこれらの問題に対処する必要があります。

更新日時: 2026年9月7日 05:31