この記事では、llama.cppをビルドして、ブレークポイントを貼って止めるところまでの手順を紹介します。
LLMが自分のマシン上で動き、しかもデバッガを使える(つまり、解析可能な形になっている)という状態になります。私は初めてできたときかなり感動しました。
※私の環境は一番最後に書いてあります
そもそもllama.cppとは何か
llama.cppは、LLMの推論処理を行うソフトウェアです。
LLMの推論処理は、通常サーバーサイドで行われます。chatGPTやcopilotなど、主要なLLMアプリは、プロンプトをサーバーに送信し、サーバー側がLLMを使った計算をして、そのアウトプットがクライアントの端末に送信される、という仕組みになっています。
llama.cppを使うと、それらの処理を手元のPCで行うことができます。
ビルド
では早速ビルドします。とはいっても、公式ドキュメントに従うだけです。
適当なフォルダを作り、以下のコマンドを入力します。シェル操作に慣れていない人のための記事を以前書きましたので貼っておきます→参考
事前にCMake、Visual Studioのインストールが必要です。(visual studio以外のビルドツールでも大丈夫かもしれませんが、本記事ではデバッグにvisual studioを使います)
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp
cmake -B build -DLLAMA_CURL=OFF
cmake --build build --config Debug
私の環境だとcurlが入っていなかったのでそれをオフにするオプションをつけました。
また、今回はデバッグがしたいのでデバッグビルドにしました。
完了すると、buildフォルダやbuild\binフォルダにいろいろできています。
まず動かしてみる
デバッグの前にまず動かしてみます。
まず、適当なモデルをダウンロードします。私はllama-2-7b.Q4_K_Mにしました。
手元の環境がメモリが8GBしかなかったので、小さめのものを選びました。
多分gguf形式なら何でも動くと思います。
なお、huggingfaceのどのページにもggufファイルのダウンロードリンクがあるわけではないようです。ggufの正しい探し方はよくわかっていません。(後の記事で書く予定です)
次に、llama.cpp\build\binフォルダに行き、以下のコマンドを実行します。
llama-cli.exe -m <ggufファイルのパス> --prompt "Q.What is the highest mountain in Japan? A:"
--promptのあとの文章がプロンプトです。
なにやら動作情報みたいなものが出た後、文章がずらずら出始めたら成功です。
デバッグ
それではデバッグしてみます。
llama.cpp\build\llama.cpp.slnを開きます。
[表示]からソリューションエクスプローラーを出し、ソリューションエクスプローラーから、llama-cliというものを探します。
ここで右クリックし、プロパティを開きます。
左側のところから「デバッグ」を選ぶと、「コマンド引数」という欄があると思います。ここに先ほどのコマンドの「llama-cli.exe」以降に入力したものを貼り付けます。
では、ブレークポイントを貼ります。先ほどのソリューションエクスプローラーの画面にmain.cppというのが映っていますが、これをクリックするとソースが表示されます。
今回は、根幹処理であるllama_decodeを呼び出している行にブレークポイントを貼ります。行番号の横をクリックすると貼れます。
最後に、ソリューションエクスプローラーのllama-cliを右クリックし、[デバッグ]-[新しいインスタンスの開始]をクリックします。
ブレークポイントで止まれば成功です。
まとめ
初めてやるときは、LLMという最先端の処理が自分の手元で動くなんて、難しいんじゃないかと思っていました。
しかし実際やってみると、公式ドキュメントが充実しているおかげもありスムーズにビルド~デバッグができました。
書き終わってみて気づきましたが、現在でも盛んに開発されているソフトウェアであれば、ビルドに手こずった際githubを通じて開発者たちに質問すればよいのかもしれません。
よりソフト開発が進むことになりますし、何かのミスだったとしても後に同じところで躓く人を減らせるかもしれないからです。
最後までお読みいただきありがとうございました。
再現した環境
Windows 10 pro
Microsoft Visual Studio Community 2022 (64 ビット) - Current Version 17.14.19
CMake 4.0.1


