大規模言語モデルLLM入門 その5 量子化
重みパラメータのビット深度削減
変化量の小さい係数を低ビットにリマッピング
図1 LLMの32ビット浮動小数点の重みパラメータを例えばINT8(8ビット整数)に変換できる.メモリ使用量は1/4となり演算速度が向上する.画像クリックで動画を見る.または記事を読む.[提供・著]井上 祐寛(Takuhiro Inoue).
詳細:[Webinar/Pi5 KIT/data]大規模言語モデルLLMによる生成AIプログラミング入門 |
大規模言語モデルにおける量子化と軽量化技術
モデル軽量化の必要性と量子化技術の基本
大規模言語モデル(LLM)は,数十億ものパラメータをもつため,計算資源の消費が非常に激しくなります.これを軽量化するための方法として,量子化が一般的に利用されています.
量子化とは,パラメータのビット深度を削減し,メモリ消費を抑える技術です.従来のFP32(32ビット浮動小数点)で表現されていた重みパラメータを例えば,INT8(8ビット整数)に変換することで,メモリ使用量は1/4となり,演算速度が向上します.
モデルの重みパラメータの最小値が$-0.423$,最大値が$0.386$であるとしましょう.この範囲をINT8の範囲(-128~+127)にリマッピングすることで,必要なビット数が大幅に減少します.一般に8ビット量子化では,わずか1$\%$程度の性能低下で済むとされ,計算資源の限られたデバイス上でもLLMを実行できます.
スケール・ファクタの計算
量子化を実現する際の重要な要素として,スケール・ファクタが挙げられます.実数値パラメータを整数値に適切にマッピングするための係数で,次のように計算されます.
\[ \text{スケール・ファクタ} = \frac{\text{INT8の範囲の最大値} - \text{最小値}}{\text{実数パラメータの最大値} - \text{最小値}} \]
重みの最小値が$-0.423$,最大値が$0.386$であれば,スケール・ファクタを適用することで,実数パラメータが-128~+127の範囲に収まるように調整できます.これにより,量子化後の値が元の精度をなるべく保つようになり,性能低下を抑えることが可能です.
ほかの軽量化手法との組み合わせ
量子化だけでなく,モデル軽量化には蒸留や枝刈りといったほかの手法も活用されます.
枝刈り(Pruning)により不要なパラメータを削減した後,さらに量子化を適用することで,メモリや演算コストを抑えつつ性能を保持できます.これらの手法を組み合わせることで,より効率的なモデル軽量化が実現され,LLMがさまざまなデバイス上で利用できるようになります.
量子化とは?
量子化(Quantization)は,機械学習モデル,特に大規模なニューラル・ネットワークにおいて,メモリ使用量や計算資源の削減を目的とした技術です.
量子化により,モデルのパラメータが32ビット浮動小数点(FP32)から8ビット整数(INT8)に圧縮されることで,モデル・サイズを大幅に縮小できます.これにより,計算が高速化し,低性能のデバイスやエッジ・デバイス上でのモデル実行が現実的になります.
重みパラメータのリマッピングとビット深度削減
LLMでは,各パラメータの値範囲をINT8の範囲にリマッピングします.
元の実数パラメータの最大値と最小値を取得し,この範囲を整数の範囲にマッピングします.量子化後のビット深度が少なくなることで,メモリ使用量が低下し,演算効率が向上する利点があります.この際,スケール・ファクタの適用により,モデルの性能低下を最小限に抑え,適切な近似が可能です.
高効率モデルのための多様な軽量化技術
量子化は,単独でも効果的な軽量化手法ですが,蒸留や枝刈りなどのほかの技術と組み合わせることで,より高い効率を実現できます.蒸留は,モデルの複雑さを減らしつつも知識を維持する方法で,これと量子化を併用することで,モデルのサイズと計算資源の最適化が可能です.〈著:ZEPマガジン〉
著者紹介
- 株式会社クレスコ入社後,銀行向けシステムなど数多の開発にリード・エンジニアとして従事.後に自社ソリューションとなる統合認証システムの基礎を独力で開発するなど,アイデアと技術でクレスコを牽引する.技術研究所での機械学習研究を経て,人工知能を強みとする部門に異動.現在はテクニカルエバンジェリストとして企業が持つ業務課題へのAI適用に関するコンサルティング,機械学習に関する技術支援を行う一方,自ら研究テーマを持ち共同研究,実験システムの構築も担当.「SoftwareDesign」「やってみよう!機械学習」(技術評論社),「日経ソフトウェア」「AIプログラマになれる本」(日経BP)への記事寄稿,会津大学,はこだて未来大学,琉球大学,早稲田大学のほかWatson SummitやMicrosoftでの講演等,社外でも精力的に活動中
著書
- ラズパイ+USB SDRで作るFlightradar24 Businessアカウント・フィーダ,ZEPエンジニアリング株式会社.
- [VOD/KIT]ラズベリー・パイで学ぶエッジAIプログラミング入門,ZEPエンジニアリング株式会社.
- [VOD/KIT]世界の航空機を同時追跡!Flightradar24 ラズパイ・キット,ZEPエンジニアリング株式会社.
- [VOD/KIT]人工知能カメラM5StickVで作って学ぶ画像解析AI開発入門,ZEPエンジニアリング株式会社.
- いろんなことを試して学ぶ! Pythonプログラミング,2021年,日経BP.
- エッジAIプログラミング M5StickV 活用編,日経ソフトウェア2020年11月号,日経BP.
- エッジAIプログラミング M5StickV 準備編,日経ソフトウェア2020年7月号,日経BP.
- Kaggleに参戦しよう(連載),日経ソフトウェア2020年1月号,日経BP.
- Kaggleに参戦しよう(連載),日経ソフトウェア2019年9月号,日経BP.
- Kaggleに参戦しよう(連載),日経ソフトウェア2019年7月号,日経BP.
- AIプログラマになれる本,2019年,日経BP.
- やってみよう! 機械学習 第2章 機械学習の始め方,2019年,技術評論社.
- 人工知能で画像生成 応用編,日経ソフトウェア2019年1月号,日経BP.
- 人工知能で画像生成 基本編,日経ソフトウェア2018年11月号,日経BP.
- 自分で構築するか,APIで機能を使うか 機械学習の始め方,Software Design2018年4月号,技術評論社.
参考文献
- [VOD/Pi3A KIT]ラズパイ・キットで学ぶLinux I/Oボードの作り方・探し方・動かし方,ZEPエンジニアリング株式会社.
- [VOD/Pi KIT]ラズベリー・パイで学ぶLinux&Pythonプログラミング超入門,ZEPエンジニアリング株式会社.
- [VOD/PiZero KIT]Python×ラズパイで初めての量子コンピュータ,ZEPエンジニアリング株式会社.
- [VOD/Pi400 KIT]SLAMロボット&ラズパイ付き!ROSプログラミング超入門,ZEPエンジニアリング株式会社.
- [VOD/Pi KIT]ラズパイ×Pythonで動かして学ぶモータ制御入門,ZEPエンジニアリング株式会社.