2024年12月21日土曜日

1bit LLMの仕組みを教えてください。なぜ16bitや32bitではなくて、これだけbit数を減らせるのですか?

https://jp.quora.com/1bit-LLM%E3%81%AE%E4%BB%95%E7%B5%84%E3%81%BF%E3%82%92%E6%95%99%E3%81%88%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84-%E3%81%AA%E3%81%9C16bit%E3%82%8432bit%E3%81%A7%E3%81%AF%E3%81%AA%E3%81%8F%E3%81%A6-%E3%81%93?__nsrc__=4

https://jp.quora.com/1bit-LLM%E3%81%AE%E4%BB%95%E7%B5%84%E3%81%BF%E3%82%92%E6%95%99%E3%81%88%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84-%E3%81%AA%E3%81%9C16bit%E3%82%8432bit%E3%81%A7%E3%81%AF%E3%81%AA%E3%81%8F%E3%81%A6-%E3%81%93?__nsrc__=4

·
フォロー

CNNでの推理処理で1bitは、例えばスマホでエッジ側でAI処理する例ではかなり普通に使用されてきてますが、LLMの学習では目下、かなりホットな話題ですね。画像ではなくLLMで実用となれば、多桁の乗算器が不要でビット演算と加算器だけで実装できるので凄いのは確かですが、「実用できた」という話が流れても懐疑的な人も多く、まだよく分からないのが正直なところです。

DNN (Deep Neural Network) の模式図(学習) 最初は左側の層からデータを入れて右側の層から出します(順伝播)。 隠れ層では前の層からのデータに非線形変換を加えて下位層に伝える。ReLU (Rectified Linear Units) は非線形変換の1つ ReLU型の活性化関数を持った層。次にこれで得られた解の正解への近さにより、解に至る経路の貢献度に応じてバイアスと重み係数を右側の層から左側の層へ向けて順に修正していきます(逆伝播)。この過程を多くの学習データで繰り返せば、重み係数が最適化されて、入力に応じて正しい解に近い出力になっていきます。

そもそも、最近のAIの中核技術であるNeural Network(NN)では、学習でも32bitなどの多桁の数値演算は主流ではありません。推論では8bitでも長すぎるほどです。上図での各ノードで扱われる情報は、784→128→64→10→1と数層ごとに行列演算されますから、784x128=100352と最初のレイヤだけでも10万回の乗算が必要です。これが画像認識処理だと、仮にオリジナルの平面情報入力が仮に2000x2000画素なら、最初のレイヤだけで400万回x数万ほどの乗算が必要です。白黒2値の画像データなら、最初の入力層は1ビットのデータです。

CNN (Convolutional Neural Network) の模式図 文字認識のような特徴点を抽出する事を重ねる必要がある場合は、Convolutional Layer(畳み込み層)とPooling layer(プーリング層)の組み合わせを数段階重ねて解を導きます。仮に「いろは」を判別するだけなら2の6乗=64あれば足りるので、出力層は6ビットです。最初の28x28の層では、おそらく”―”や”|”や”/”や”\”を峻別するでしょう。そういう特徴点を分けていって、最後には”あ”の文字コードを6ビットで出力する訳です。

学習過程に必要なデータの精度は2の16乗=65536で16ビットの方が良い(場合によっては32bitも)という事はありますが、推論の過程では2の8乗=256や、2の4乗=16もあれば十分なケースが多いようです。どれだけのbit数が必要かや、レイヤ数、ノード数、学習回数などの最適化は、AI演算のキモになります。

グラフィック演算用ICのGPUを流用している内は、32bitなどで演算していましたが、昨今では、8bitや4bitほどの行列演算を特に高速化するTPU (Tensor Processing Unit) や NPU(Neural network Processing Unit) がAI演算用ICとして広く使われています。そして、演算設計を上手く最適化すれば状況により2bitでも間に合うという状況になり、さらには、首記のように1bitでも可能かも…と言われる状況です。

数年前からスマホのAI画像処理では1bitで推論を行っていますが、LLM (Large Language Model, 大規模言語モデル) で可能かどうかは、ちょっと分かりません。

広告
·
フォロー

たぶん…おそらくですが、案外にここまでビット数を減らしても動いちゃったよ…って実感の話で、理屈は無いのでは。

で、1ビットだと掛け算を廃せるので、掛け算は足し算の60倍以上の論理回路が必要なのに、それを無くせる。

とんでもないメリットで、1ビットの雑さとのトレードオフ関係なのかなって理解してます。

·
フォロー

たぶんネット上を検索して出てくる情報は、それをわからない人が無理に
ゆえに勝手に簡単な既存の理屈をつかって理解しようとして説明してます。
新しい理論を既存の理屈で説明してる解説はほぼ間違いと言って過言でありません。
これはこれまでの歴史で登場した新しい発明ができたときにも起こってる現象です。

ネット上の解説は1bitだから単純なのようなことしか言ってません、
それなら今の64bit、128bitのCPUを8bitにすればいいのではないでしょうか?
ネット上の理屈だと、8bitならだめで1bitなら良い理由が説明されてません。
(理解できないのですから仕方ないけど)

ここからが説明、説明は難しいです。例えばこういうアプローチはどうでしょうか?
テクノロジーが発達しコンピューターによるAIが実現されつつあります。
その過程で膨大な演算が必要になり、CPUだけでは足りず
それはNVIDIAの演算ユニットなどのGPUで行う必要がでてきました。
ところがGPUが何を計算してるかと言うと、単純な計算を高速でするだけです。
それは1bit演算の繰り返して行えることに人類は気づきました。
ならば、はじめから1bitで演算をしたほうがよいのではと気づきました。

最後に私見です。
人間の脳は電気信号のあるなしの1bitで動いてます。
人間の脳に(今のところ)複雑な演算を行う仕組は発見されてません。
つまり人間は1bit演算を巧みに行うことで思考してます。
その意味で、1bit 演算はより人間に近づくかもしれません。

0 コメント:

コメントを投稿