llama.cppとは何者なのか?
llama.cpp
https://scrapbox.io/files/6596bc18c01dc7002463350f.png
llama.cppの実装を追ったブログ、メチャクチャ分かりやすい
PythonエコシステムのPyTorchまたはTensorflow に相当する、テンソルの純粋なC++実装
つまりPyTorch実装を全てggmlで書き直そう!と思い立ったのがllama.cppの始まりっぽい
書き直しているので、本家llamaが対応していなくてもApple Silicon対応等を独自で可能
初期実装はgpt-jから始まっている
ネットワーク定義はGGMLで書いて、重みは外部から取ってきて割り付けてるっぽい
普通にggmlにリライトしたのは引き続いており、今はモデル形式はggufに移行した
そもそもggufもggml作者が作ったファイルフォーマット
ゲオルギー・ゲルガノフによって作成され、そのイニシャル「GG」はその略称です。
日本だとジョージ・ゲルガノフで良さそう
つまりPyTorchにもモデルフォーマット(binとか)があるように、ggmlにもモデル配布イメージとしてggmlが合ったし、これがggufという新たなフォーマットになったよ〜ってことっぽい
逆に言えばggufファイルフォーマットさえあればPyTorchでモデル読み込みできるように読み込めるイメージ(llama.cppというggmlで実装されたファイルがリポジトリ内にある)
正確にはllamaアーキテクチャに則ったやつしかムリっぽい?
そんなことはなかった。ggufになって以降は
LLMをWASM上で動かすについてもこちらはggufを実行できていたがWasmEdgeにggmlがポーティングされているから(ggml.cpp) ブラウザで動かしたければ:
llama.cpp使ってgguf形式に変換からのWasmEdgeを使う
onnxに変換してtransformers.jsを使う
goやらpythonのバインディングはcなので経由しやすくて呼び出している感じかな
Low-level access to C API via ctypes interface.
noteに投稿した
実際にllama.cpp動かしてみたがREADME通り今なら本当にリポジトリcloneしてmakeするだけでOK
今はデフォルトでMetalも有効なってる
モデル導入も簡単でめぼしいモデルのgguf版取ってきてmodels配下に入れてコマンド叩くだけ
-nlgはnumber of GPU layersっぽい。何個GPUにレイヤ置くか