最近 1 bit LLM という量子化技術を用いて学習した技術が登場し、話題になっています。
今回は 1 bit LLM の論文 (The Era of 1-bit LLMs: All Large Language Models are in 1.58 Bits) を要約して、1 bit LLM がどのようなものかを簡単に解説していきます。
ちなみに、「1 bit LLM」はジャンル名みたいなもので、論文で発表されたモデルの名前は「BitNet b1.58」です。
The Era of 1-bit LLMs: All Large Language Models are in 1.58 Bits
1 bit LLM / BitNet b1.58 とは?
1 bit LLM こと BitNet b1.58 には以下のような特徴があります。
-
量子化機能
- BitNet b1.58 では、重みを「-1, 0, +1」のいずれかに限定するために absmean 量子化関数が採用している
- この関数は重み行列をその平均絶対値でスケーリングし、各値を最も近い整数に丸めるもの
- 「3 パターンの重みしか取らないので、いわば 1.58bit」= BitNet b1.58 という命名らしい
- これにより、量子化されたモデルは線形変換を行う際に乗算をほとんど必要とせず、整数加算のみで済むため、エネルギー消費を抑えつつ高速な計算が可能
- BitNet b1.58 では、重みを「-1, 0, +1」のいずれかに限定するために absmean 量子化関数が採用している
-
活性化関数の量子化
- 活性化関数に関しては、非線形関数への入力前に活性化をスケーリングしない方式が採用されており、システムレベルでの最適化が容易
-
LLaMA コンポーネントの採用
- RMSNorm、SwiGLU、ロータリー埋め込み等を利用
BitNet b1.58 の性能
BitNet b1.58 の性能としては以下のようなポイントがあります
同程度の性能のモデルと比べて、大きな性能の劣化は見られない
類似アーキテクチャの LLaMA と比較して、スコアは同じぐらい出ていますね。
メモリやレイテンシーは効率良し
メモリ占有量とレイテンシーは量子化しているので、明確に効率よくなっています。
また、消費エネルギーの面でも効率良いです。
この図は以下とのことです。
7nmプロセスノードにおけるBitNet b1.58とLLaMA LLMのエネルギー消費量を比較したもの。左側は算術演算エネルギーの構成要素を、右側は異なるモデルサイズにおけるエンドツーエンドのエネルギーコストを示しています。
実際どうなの?
「BitNet b1.58 の zero-shot タスクのスコアまとめ」図を見ると、3B のモデルでは量子化後の性能の方が高くなっており、性能の逆転現象があるのではないかと巷では騒がれていましたが、
実際のところ、十分なデータで学習しており、正しく性能を測れるベンチマークで測れば、量子化して性能が高くなることはないようですね。
なので、「エネルギー効率の良さやパラメータ数」と「性能の高さ」はトレードオフにあるかなと思っています。
まとめ
ということで、1 bit LLM についてまとめました。
LLM の低コストでの運用は非常に大きなポイントなので、今後の更なる技術発展に期待ですね。
おわり