モデルの量子化

量子化は、ニューラル ネットワーク モデルのサイズとメモリ フットプリントを削減するために使用される手法です。モデルの量子化により、ディープ ニューラル ネットワーク モデルのメモリ フットプリントと計算要件を削減できます。重み量子化は、ニューラル ネットワークの重みとアクティベーションを高精度浮動小数点数から 16 ビットまたは 8 ビット整数などの低精度形式に変換する一般的な量子化手法です。モデルの重みを標準の浮動小数点データ型 (例: 32 ビット浮動小数点) から低精度のデータ型 (例: 8 ビット整数) に変換します。これにより、モデルのサイズとメモリ要件が削減され、(計算の複雑さが軽減されることにより) 推論の速度が向上します。性別)。モデルの量子化により、コンピューティング リソースとメモリ リソースが限られているエッジ デバイスに大規模なモデル (LLM など) を展開しやすくなります。

浮動小数点表現:

さまざまなデータ型の中でも浮動小数点数は、さまざまな値を高精度に表現できるため、ディープラーニングで主に使用されます。通常、浮動小数点数は次のように使用します。 n 値を保存するビット。これ n ビットはさらに 3 つの異なるコンポーネントに分割されます。

  1. シンボル: 符号ビットは、数値の正または負の数を表します。 1 ビットを使用します。0 は正の数を表し、1 は負の数を表します。
  2. 索引: 指数は、底のべき乗を表すビットです (通常は 2 進数表現で 2)。指数には正または負の値を指定することもでき、数値で非常に大きな値または非常に小さな値を表すことができます。
  3. 有効数/仮数: 残りのビットは、仮数とも呼ばれる有効な数を格納するために使用されます。これは数値の有効桁を表します。数値の精度は、有効数字の長さに大きく依存します。

深層学習で最も一般的に使用されるデータ型には、float32 (FP32) と float16 (FP16) があります。

FP32 は「全精度」(4 バイト) と呼ばれることが多く、FP16 は「半精度」(2 バイト) と呼ばれます。 INT8 データ型の方が優れており、重みを格納するために 1 バイトを使用できます。これは、2⁸ = 256 個の異なる値を格納できる 8 ビット表現で構成されます。

参考文献

【1】https://www.hopsworks.ai/dictionary/model-quantization

【2】https://medium.com/@sachinsoni600517/introduction-to-model-quantization-4effc7a17000