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

編集の要約なし
編集の要約なし
1行目: 1行目:
1bit LLM
1bit LLM


正式名称はBitNet
正式名称はBitNet b1.58


業界をあげて「[[bfloat16]]だ」「[[FP8]]だ」とデータサイズの削減を続けた結果、ついにパラメータが取り得る値は3種類(-1, 0, 1)になりました。実際には1.5ビットですが小数点以下切り捨てで「1ビット」と呼ばれているようです。
業界をあげて「[[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} \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>[ C_{ij} = \sum_k (A_{ik} \cdot B_{kj}) ]</math>


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


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