三値LLMの1.58ビット障壁を突破、ゼロの偏りを突いた新レイアウト
Breaking the 1.58-bit Barrier for Ternary LLMs
三値LLMは各重みを{-1,0,+1}で表すが、従来の5-tritパッキングでは実効1.625ビット/重みとなる。29モデルを計測すると最大51.5%がゼロで、等確率の前提が崩れていた。そこでゼロ密度zに応じ2−zビットで格納するBITCOSを提案。29モデル中26で従来より小さく、最小1.485ビット/重みを達成。AVX-512やXe2 GPU向けの展開も最適化し、実モデルで最大1.28倍の行列ベクトル積高速化、デコードもCPUで1.18倍、GPUで1.27倍向上した。
29個の三値LLMモデルの実際のシンボル分布を測定したところ、ゼロが全重みの最大51.5%を占めることがわかった。
HNでの議論
37- c7b
正直、もうそういう仕組みになってるんだと思ってた。友人にそう説明したことすらあると認めざるを得ない。なぜ最初からそう設計しないんだ(適応的な部分の話であって、計測の話じゃない。エンコーディングを明確にするために数ビット犠牲にして、大量のビットを節約すればいいだけだろ)。
- CodesInChaos
こういう可変長エンコーディングが、単なるストレージ/転送フォーマットとしてだけでなく、そのままメモリ上のフォーマットとして使えることに驚いた。
- infogulch
つまり、実際の重みは51%の確率で0になるという事実を利用して、重みあたり1.58ビットから1.48ビットまで削減したのか。面白い。
もし三値LLMがうまくいって、カスタムシリコンとしてハードウェアに組み込まれたら、驚くほど効率的になるに違いない。
- om8
三値量子化は全く意味がない。この領域でのPTQなら、ベクトル量子化やトレリスベースの手法の方が優れている。
- yalok
ASIC最適化モデル(行列演算がBITCOSフォーマットで直接サポートされる可能性もある)に完璧にフィットして、オンデバイス推論で記録的な電力効率を達成できそうだ。
そして[0]によれば、量子化を意識したトレーニングを行えば、同等の品質を達成するのに必要な重みは約30%増だけで済むらしい……
0. https://arxiv.org/pdf/2402.17764 - The Era of 1-bit LLMs:
All Large Language Models are in 1.58 Bits