これは、Microsoft と中国科学院大学が最新の研究で提示した結論です。
すべての LLM は 1.58 ビットになります。
具体的には、この研究で提案された手法は BitNet b1.58 と呼ばれるもので、これは、大規模な言語モデル。「パラメーターをオンにして始めます。
16 ビット浮動小数点数 (FP16 や BF16 など) 形式の従来のストレージは、三進数 、つまり に変更されました。 {- 1, 0, 1}。
「1.58 ビット」とは、各パラメータが 1.58 バイトの記憶領域を占有することを意味するのではなく、各パラメータが 1.58 ビットの情報を使用できることを意味することに注意してください。
このような変換後、行列の計算には 整数の加算のみが含まれるため、大規模なモデルでは、一定の精度を維持しながら、必要なストレージ スペースとコンピューティング リソースを大幅に削減できます。
たとえば、モデルサイズが 3B の場合に BitNet b1.58 を Llama と比較すると、速度は 2.71 倍向上しますが、GPU メモリ使用量は元のほぼ 4 分の 1 にすぎません。 そして、モデルのサイズが(たとえば、70B) より大きくなると、速度の向上とメモリの節約がより顕著になります。
この伝統に対する破壊的なアイデアは、ネチズンを本当に輝かせます。この論文は X についても高い注目を集めました: ネチズンは「変化しながら」驚きましたゲームのルール」では、Google のアテンション ペーパーの古いジョークも再現されています。必要なのは 1 ビットだけです。
では、BitNet b1.58 はどのように実装されているのでしょうか?読み続けてみましょう。 パラメータを 3 値に変更しますこの研究は実際には、以前に公開された論文に基づいて元のチームによって行われた最適化です。つまり、元の BitNet に追加のデータを追加します。追加の値は 0 です。が追加されます。 全体として、BitNet b1.58 は引き続き BitNet アーキテクチャ
(トランスフォーマー) に基づいており、nn.Linear を BitLinear に置き換えます。
具体的な最適化については、まず先ほどの「0を足す」、つまり重み量子化(重み量子化)です。
BitNet b1.58 モデルの重みは 3 進値 {-1, 0, 1} に量子化されます。これは、2 進法で各重みを表すのに 1.58 ビットを使用するのと同等です。この定量化方法により、モデルのメモリ フットプリントが削減され、計算プロセスが簡素化されます。 第二に、定量関数設計の観点から、重みを-1、0、または1に制限するために、研究者らはA定量化を採用しました。アブ平均と呼ばれる関数。
この関数は、まず重み行列の平均絶対値に従ってスケーリングし、次に各値を最も近い整数 (-1、0、1) に丸めます。 次のステップは、活性化量子化(活性化量子化)です。
アクティベーション値の量子化は BitNet での実装と同じですが、アクティベーション値は非線形関数の前で範囲 [0, Qb] にスケーリングされません。代わりに、アクティベーションは [-Qb, Qb] の範囲にスケーリングされて、ゼロ点量子化が排除されます。BitNet b1.58 をオープンソース コミュニティと互換性を持たせるために、研究チームは RMSNorm、SwiGLU などの LLaMA モデルのコンポーネントを採用し、簡単に統合できるようにしたことは言及する価値があります。主流のオープンソース ソフトウェア。
最後に、実験的なパフォーマンスの比較に関して、チームは、BitNet b1.58 と FP16 LLaMA LLM をさまざまなサイズのモデルで比較しました。
結果は、BitNet b1.58 が 3B モデル サイズでの複雑さにおいて完全精度 LLaMA LLM に匹敵し始め、同時にレイテンシ、メモリ使用量、およびスループットのパフォーマンスが向上していることを示しています。 . 大幅に改善されました。
そして、モデルのサイズが大きくなると、このパフォーマンスの向上はより顕著になります。
前述したように、この研究のユニークな方法は、インターネット上で多くの激しい議論を引き起こしました。
DeepLearning.scala 作者の Yang Bo 氏は次のように述べています:
オリジナルの BitNet と比較して、BitNet b1.58 の最大の特徴はパラメータが 0 であることです。量子化関数を少し変更することで、パラメータ 0 の割合を制御できるのではないかと思います。 0 パラメータの割合が大きい場合、重みをスパース形式で保存できるため、各パラメータが占める平均ビデオ メモリは 1 ビット未満になります。これは重量レベルの MoE に相当します。通常のMoEよりも上品な印象だと思います。
同時に、彼は BitNet の欠点も提起しました。
BitNet の最大の欠点は、推論中のメモリ オーバーヘッドを削減できるにもかかわらず、オプティマイザーの状態と勾配が依然として浮動小数点数を使用していることです。ポイント番号、トレーニングは依然として非常に多くのメモリを消費します。 BitNet をトレーニング中にビデオ メモリを節約するテクノロジーと組み合わせることができれば、従来の半精度ネットワークと比較して、同じ計算能力とビデオ メモリでより多くのパラメータをサポートできるため、大きな利点が得られると思います。
オプティマイザ状態のグラフィックス メモリのオーバーヘッドを節約する現在の方法は、オフロードです。勾配のメモリ使用量を節約する方法としては、ReLoRA が考えられます。ただし、ReLoRA の論文実験では 10 億のパラメータを持つモデルのみが使用されており、それを数百億、数千億のパラメータを持つモデルに一般化できるという証拠はありません。
##△画像出典: Zhihu、許可を得て引用しかし、一部のネットユーザーは次のように分析しています。 , そうすれば、24GBのコンシューマーグレードGPUで120Bの大型モデルを実行できるようになります。それでは、この新しいアプローチについてどう思いますか?
以上がMicrosoft の 6 ページの論文は爆発的です: 三元 LLM、とてもおいしいです!の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。