DistilBERT Humor NLP モデルの量子化

Dec 13 2022
Optimum Intel と Intel Neural Compressor による高速推論のための FP32 から INT8 への移行
量子化は、推論時間を短縮するのに役立つモデル圧縮手法です。32 ビット浮動小数点 (FP32) 型から 8 ビット整数 (INT8) 型への量子化により、精度がわずかに低下するだけでパフォーマンスが向上します。
UnsplashのTengyartによる写真

量子化は、推論時間を短縮するのに役立つモデル圧縮手法です。32 ビット浮動小数点 (FP32) 型から 8 ビット整数 (INT8) 型への量子化により、精度がわずかに低下するだけでパフォーマンスが向上します。一般に、モデルのサイズは 4 ~ 5 倍縮小でき、推論時間は 3 倍以上削減できます ( source )。

最初に、 と を含むいくつかのライブラリを量子化用にインポートする必要がありneural_compressorますoptimum.intel

torchデバイスを次のように設定していますcpu

これで量子化を適用できます。optimum.intel 詳細については、 GitHub リポジトリのテキスト分類の例をご覧ください。以前にトレーニングしたモデルをロードしましょう:

IncTrainerまたはIntel® Neural Compressor Trainer クラスを使用するようにトレーナーをセットアップしました。

これで、量子化を実行するためのすべての準備が整いました。GitHubリポジトリquantization.yml からダウンロードしたという構成ファイルを使用していることに注意してください。このファイルの構成パラメーターを変更して、モデルの量子化方法を調整できます。ここでは、トレーニング後の動的量子化を適用しています。これは、再トレーニングを必要としない手法ですが、通常は精度が少し犠牲になります。optimum.intel

次に、次のように量子化を実行できますoptimizer.fit()

最適化されたモデルができたので、それをベースライン モデルと比較できます。

量子化されたモデルをディスクに保存し、FP32 と新しく量子化された INT8 モデルの両方を利用できるようにします。

ディスクに保存された INT8 モデル

FP32 モデルで評価を実行すると、次のようになります。

INT8 の場合:

精度はほぼ同じですが、INT8 モデルは FP32 モデルよりも 1.5​​ 倍高速です。完全なコードは、こちらの GitHubにあります。

Intel Neural Compressor をスタンドアロンでインストールすることも、Intel AI Analytics Toolkitの一部としてインストールすることもできます。インテルの AI ハードウェアおよびソフトウェア ソリューションの詳細については、こちらをご覧ください。