3値LLMにおける1.58ビットの壁を突破
研究者らは、3値(ternary)大規模言語モデル(LLM)を、重みあたり1.585ビットという理論上の情報理論的限界よりもコンパクトに保存できる「BITCOS」と呼ばれる新しい重み保存レイアウトを開発しました。BITCOSは、3値の重みにおいてゼロが不釣り合いに多く出現するという事実を利用することで、最も疎なモデルでは重みあたりの実効ビット幅を1.485ビットまで削減します。
1.58ビットの壁と現在の限界
3値LLMは、重みを $\text{−1}, 0, +1$ の3つのシンボルのいずれかとして保存します。理論上の最小保存コストは、重みあたり $\log_2 3 \approx 1.585$ ビットです。現在の実運用環境では、「5トリート・パッキング(five-trit packing)」が主流であり、これは5つの3値重みを1バイトに詰め込む手法です。2のべき乗のグループサイズを使用するため、結果として重みあたりの実効保存ビット幅は1.625ビットとなります。
この既存のアプローチは、3つのシンボルが等確率であると見なし、各シンボルが約33.3%の分布であると仮定しています。しかし、研究者らが29種類の異なる3値LLMモデルの実際のシンボル分布を測定したところ、ゼロが全重みの最大51.5%を占めていることが判明しました。
BITCOS: 分布適応型レイアウト
この高いゼロ密度を活用するために、研究者らは分布適応型レイアウトであるBITCOSを導入しました。BITCOSは固定ビットのパッキングスキームではなく、2つの部分からなる構造を使用します。
- 密な存在ビットマップ(Dense Presence Bitmap): 重みがゼロか非ゼロかを示すビットマップ。
- 圧縮された符号ベクトル(Compacted Sign Vector): 非ゼロの重みの符号のみを保存する圧縮ベクトル。
BITCOSの保存コストは、モデルの重みにおけるゼロ密度を $z$ とすると、重み要素あたり $2 - z$ ビットと定義されます。ゼロ密度が高まるにつれて、保存コストは減少します。
パフォーマンスとハードウェア最適化
// パフォーマンス指標に関する単一セクション
BITCOSは、テストされた29モデル中26モデルにおいて、5トリート・パッキングを上回る性能を示しました。最も疎なモデルでは、重みあたり1.485ビットという保存効率に達します。著者らは、AVX-512、AVX2、Intel Xe2 GPUを含む最新のプロセッサおよびGPU向けに最適化されたアンパック処理シーケンスを提供しています。
最先端の3値行列ベクトル乗算カーネルと比較して、BITCOSは以下の向上を実現します。
- 実現されたゲイン: 行列ベクトル乗算カーネルにおいて最大1.28$倍$の向上。
- CPUデコードスループット: クライアントおよびサーバーCPUにおいて最大1.18$倍$の向上。
- GPUデコードスループット: Intel Xe2 GPUにおいて最大1.27$倍$の向上。
コミュニティの洞察と反論
Hacker Newsの技術ユーザー間での議論では、この研究はVRAMやRAMの制限が厳しいエッジコンピューティングや組み込みシステムにおいて特に重要であると指摘されています。
あるユーザーは、効率の向上は顕著であるものの、この領域では学習後量子化(PTQ)のためのベクトル量子化やトレリスベースの手法の方が効果的かもしれないと指摘しました。別のユーザーは、算術符号化(arithmetic coding)を使えばさらにビットを絞り出せる可能性があるが、その代償として解凍のオーバーヘッドが増大する可能性があると示唆しました。
"もし3値LLMが実用化され、カスタムシリコンとしてハードウェアに組み込まれたら、驚くほど効率的になるだろう。" — @handle
"これは組み込みシステム向けのLLMを劇的に縮小し、真にポータブルなものにする可能性がある。" — @handle
実装の詳細
研究者らの調査結果は、1.58ビットという制限はシンボルが等確率である場合にのみ適用される制限であることを示しています。重みの分布を分布適応型レイアウトとして扱うことで、BITCOSはモデルを単なる保存や転送フォーマットではなく、メモリ内で直接使用可能なフォーマットとして保存することを可能にします。
Sources
関連
- Dispatch
- Dispatch
- Dispatch
- Dispatch
- Dispatch