「BitNet b1.58」の版間の差分

提供:MonoBook
編集の要約なし
編集の要約なし
 
(同じ利用者による、間の5版が非表示)
1行目: 1行目:
1bit LLM
'''BitNet b1.58'''とは、2024年2月末に[[マイクロソフト]]が発表したパラメータを3値(-1, 0, +1)で表現する超軽量で超高速な1ビットLLMアーキテクチャです。「[[1bit LLM]]」とも呼ばれます。


正式名称はBitNet b1.58
業界をあげて「[[bfloat16]]だ」「[[FP8]]だ」とデータサイズの削減を続けた結果、ついにパラメータが取り得る値は3種類(-1, 0, 1)になりました。なお内部的には2ビットで3値を保持する「1.58ビット」を採用しています。2ビットだと4値を表現できますがゼロを表現するために3値だけを使うようにしているようです。


業界をあげて「[[bfloat16]]だ」「[[FP8]]だ」とデータサイズの削減を続けた結果、ついにパラメータが取り得る値は3種類(-1, 0, 1)になりました。実際には1.5ビットですが小数点以下切り捨てで「1ビット」と呼ばれているようです。
通常、[[ニューラルネットワーク]]の[[内積]]計算は各要素の[[乗算]]とその結果の[[加算]]から成り立ちます。例えば、ベクトル <math>( \mathbf{a} = [a_1, a_2, a_3] ) </math>と <math>( \mathbf{b} = [b_1, b_2, b_3] )</math> の内積は次のように計算されます。
 
通常、[[ニューラルネットワーク]]の[[内積]]計算は各要素の[[乗算]]とその結果の[[加算]]から成り立ちます。
例えば、ベクトル <math>( \mathbf{a} = [a_1, a_2, a_3] ) </math>と <math>( \mathbf{b} = [b_1, b_2, b_3] )</math> の内積は次のように計算されます。
:<math>[ \mathbf{a} \cdot \mathbf{b} = a_1 \cdot b_1 + a_2 \cdot b_2 + a_3 \cdot b_3 ]</math>
:<math>[ \mathbf{a} \cdot \mathbf{b} = a_1 \cdot b_1 + a_2 \cdot b_2 + a_3 \cdot b_3 ]</math>


しかし、1bit LLMでは[[乗算器]]が不要になり[[加算器]]だけで[[行列積]]の計算が行えるようになります。
しかし、1bit LLMでは[[乗算器]]が不要になり[[加算器]]だけで[[行列積]]の計算が行えるようになります。例えば、行列<math> ( A ) </math>と <math>( B )</math> の積<math> ( C ) </math>を計算する場合、各要素<math> ( C_{ij} ) </math>は次のように計算されます。
例えば、行列<math> ( A ) </math>と <math>( B )</math> の積<math> ( C ) </math>を計算する場合、各要素<math> ( C_{ij} ) </math>は次のように計算されます。
: <math>[ C_{ij} = \sum_k (A_{ik} \cdot B_{kj}) ]</math>
: <math>[ C_{ij} = \sum_k (A_{ik} \cdot B_{kj}) ]</math>


22行目: 18行目:
最近の人工知能でよく使われているバーテックスシェーダー系の行列演算メインの回路ではなく、
最近の人工知能でよく使われているバーテックスシェーダー系の行列演算メインの回路ではなく、
古典的な[[GPGPU]]で使われたピクセルシェーダー系の技法(回路)を使えば爆速な気がする。
古典的な[[GPGPU]]で使われたピクセルシェーダー系の技法(回路)を使えば爆速な気がする。
== 関連項目 ==
* [[Bonsai-8B]]


[[category: 人工知能]]
[[category: 人工知能]]
[[category: 2024年]]

2026年5月18日 (月) 11:12時点における最新版

BitNet b1.58とは、2024年2月末にマイクロソフトが発表したパラメータを3値(-1, 0, +1)で表現する超軽量で超高速な1ビットLLMアーキテクチャです。「1bit LLM」とも呼ばれます。

業界をあげて「bfloat16だ」「FP8だ」とデータサイズの削減を続けた結果、ついにパラメータが取り得る値は3種類(-1, 0, 1)になりました。なお内部的には2ビットで3値を保持する「1.58ビット」を採用しています。2ビットだと4値を表現できますがゼロを表現するために3値だけを使うようにしているようです。

通常、ニューラルネットワーク内積計算は各要素の乗算とその結果の加算から成り立ちます。例えば、ベクトル の内積は次のように計算されます。

しかし、1bit LLMでは乗算器が不要になり加算器だけで行列積の計算が行えるようになります。例えば、行列 の積を計算する場合、各要素は次のように計算されます。

これにより

  • GPUの回路の99%くらいが使われなくなる
  • 三択の分岐はGPUよりCPUの方が強い
  • GPUの並列性は有用なのでコア数勝負ではまだCPUより強い
  • GPUやCPUに代わるデバイスが登場する可能性がある

1bit LLMは 最近の人工知能でよく使われているバーテックスシェーダー系の行列演算メインの回路ではなく、 古典的なGPGPUで使われたピクセルシェーダー系の技法(回路)を使えば爆速な気がする。

関連項目[編集 | ソースを編集]