LLMをWASM上で動かす
https://scrapbox.io/files/65378ae862a18c001b547de0.png
ざっくり理解だとggmlはそもそもクロスPF想定で作られてる WASI-NNを抽象的なインタフェースとして使い、裏側でggmlを叩く処理に変換(ggmlバックエンド) Wasm には、「なんらかのフォーマットのモデルで推論する API」だけが含まれ、具体的な実装はすべて WASI-NN の実装であるネイティブ側に隠蔽されます。 特にハードウェアアクセラレーションをする場合、Wasm のレイヤーで諸々を吸収するのは大変そうなので、WASI-NN のようにかなり抽象化してほとんどをネイティブに投げてしまうのは現実的だと思いました。
ggml -> gguf -> gptq
hoge.binみたいなファイル
ggmlとは?
ライブラリそのもの
ファイルフォーマット
Llama.cppやWhisper.cppはggmlプロジェクト
パッとの理解だと学習済みモデルのファイルフォーマットで、それに対する操作ができる(API定義してる)C製のライブラリ(コード)がある感じだと思っている(合ってる?)kawamou.icon
フレームワークによって学習済みモデルのフォーマットが違うのしんどいよね、ユニバーサルなファイルフォーマット作ったし量子化とか色んなことできるよ
GGML could mean the machine language library itself, the file format (now called GGUF) or maybe even an implementation based on GGML that can do stuff like run inference on models (llama.cpp).
ggufってなんですか?
本来、LLMを推論させるためにはGPUの計算資源を多く使います。これを無理やりCPUで推論しようとすると、どうしても推論速度が遅くなってしまいます。この状況を変えるためにCPUでLLMを動作させようとするプロジェクトが始まりました。
CPUで推論させることができれば、MacBook等でも動かせるようになります。これが「llama.cpp」というプロジェクトです。llama.cppでは「gguf」という形式のモデルを使用します。この形式に変換する際、「量子化」という、推論精度を犠牲にしつつ、推論コストを下げる工程を行います。これによって、本来推論では不利なCPUでも推論ができるようになります。
ggmlのユースケース
クロスプラットフォーム
エッジコンピューティング
WASMユースケース感ある
類似の推論フレームワーク
ONNX(オニキス)、Tensorflow Lite ONNX + ONNX Runtime = ggml?kawamou.icon
Talk with an Artificial Intelligence in your browser
実際に動かした例。M2で25 tokens/sec。
GPT-4で10 tokens/sec?だから速い気がする。
https://scrapbox.io/files/6554f0386df94c001cdf1c2b.png