量子化
quantization · INT8 · INT4
ひとことで
量子化はモデルの重みの数値精度を下げるもので、例えば16ビット浮動小数点を8ビットや4ビット整数に変換します。これによってモデルはメモリを少なくて済み、処理が速くなります。8ビットでは品質の低下はほとんどなく、4ビットでは目立つものの、しばしば許容できるレベルです。
モデルの重みは数値として保存されます。学習は通常、16ビット浮動小数点を使用します。量子化では、精度を下げて再エンコードします。8ビットや4ビットの整数が一般的で、縮小された範囲を元の範囲に戻すためのスケーリングファクターが使用されます。この後、2つの利点が得られ、2つ目が大きいです。メモリは概ね比例して減少し、数台のアクセラレータが必要だったモデルが1台で済むことがあります。また、デコードは算術演算よりもメモリ帯域幅に依存するため、トークンあたりのバイト数を減らすだけで生成速度が直接的に向上します。手法は作業が行われる場所で異なります。訓練後の量子化は既に訓練済みのモデルを変換し、場合によっては小さなキャリブレーションデータセットを使ってスケーリングファクターを選択します。量子化対応訓練は訓練中に減少した精度をシミュレートし、モデルがそれに適応できるようにします。これにより、非常に低ビット幅でもはるかに多くの労力をかけても優れた結果が得られます。実用上の注意点として、公開された品質の主張は一般的なベンチマークでの平均値であるということです。劣化は均一ではなく、長文コンテキストや多段階推論タスクは特に最初に影響を受けやすいです。量子化をコスト計画に組み込む場合は、自社の評価セットで測定し、導入前に確認することをおすすめします。
よくある質問
- どのくらいの品質が失われるのか?
- 8ビットでは通常、普通のタスクでは検出が難しいほど少量です。4ビットでは劣化が測定可能で、まずは推論が重く長いコンテキストで顕在化します。一般的な主張に頼るのではなく、自分のタスクで評価することを常に行うべきです。
- なぜ量子化が推論を速くするのか?
- トークン生成は算術演算よりもメモリ帯域幅によって制限されます。重みが小さいと、トークンごとに移動するデータ量が減り、演算回数は変わらないにもかかわらず、モデルは出力を早く生成します。