「BitNet b1.58」の版間の差分
Administrator (トーク | 投稿記録) 編集の要約なし |
Administrator (トーク | 投稿記録) 編集の要約なし |
||
| 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]]で使われたピクセルシェーダー系の技法(回路)を使えば爆速な気がする。 | |||
[[category: 人工知能]] | [[category: 人工知能]] | ||