LLM(大規模言語モデル)をローカルで実行して、それを VScode から使う。これですこれ、やりたかったのは正にこれです。

はじめに

LLMを「llama.cpp」を使ってローカルで実行し、VSCode拡張機能の「Continue」からそのモデルを使用するイメージです。

github.com
github.com

注意

コードを書いている最中にどんどん続きの候補を挙げてくれるようなことはできていません。(やろうと思えばできるのかな?)

VSCode内でチャットする(質問する)、最初の部分を書いて続きを書いてもらう、この二つが実現しました。

PC環境

この環境でないといけないという事ではありません。

自分が使用した環境を示しているだけです。

Windows 11
CUDA 11.8

「Git」と「Cmake」のインストールが必要です。

git version 2.42.0.windows.2
cmake version 3.29.2

llama.cpp

インストール

git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
mkdir build
cd build
cmake .. -DLLAMA_CUDA=ON
cmake --build . --config Release

警告がいっぱい出ましたがインストール自体はうまくいったようなので無視しました。

warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルをUnicode 形式で保存してください。
 warning C4551: 関数呼び出しに引数リストがありません。
warning C4244: '=': 'float' から 'int8_t' への変換です。データが失われる可能 性があります。
warning C4101: 'e': ローカル変数は 1 度も使われていません。
warning C4067: プリプロセッサ ディレクティブの後に余分な文字がありました - 改 行が必要です。
warning C4297: 'clip_model_load': 例外をスローしないはずだがそれをする関数。
warning C4267: '初期化中': 'size_t' から 'int' に変換しました。デ ータが失われているかもしれません。

モデルのダウンロード

直接モデルが公開されているページに行って手動でダウンロードすればいいのですが、今回はPythonのhuggingface-hubは使いました。「wget」が使えればそれでも良いと思います。

pip install huggingface-hub[cli]



「llama.cpp」では「.gguf」拡張子のファイルを使用します。

今回は「codellama-7b-instruct.Q4_K_M.gguf」を使いました。

huggingface-cli download TheBloke/CodeLlama-7B-Instruct-GGUF codellama-7b-instruct.Q4_K_M.gguf --local-dir . --local-dir-use-symlinks False



ダウンロードしたファイルは「llama.cpp/models」フォルダに保存しました。

「llama.cpp」の実行

「-ngl」でどれだけGPUを使うかを指定できるようです。
「-ngl 16」でVRAM 4GB程度、「-ngl 33」(おそらくこのモデルの最大使用)で7GB程度を使用していました。
「-ngl -1」を指定するとCPUのみでの動作になるようです。

今回は「llama.cpp」フォルダから以下を実行しました。

build/bin/Release/server.exe -c 4096 --host 0.0.0.0 -t 16 --mlock -m models/codellama-7b-instruct.Q4_K_M.gguf -ngl 16

「-c 4096」「-t 16」「--mlock」が何を設定しているかはわかりません。例として紹介されていたままの数字を使っています。

この後、実行したまま動作をさせ続ける必要があります。これからそれを「Continue」から使用します。

Continue

VSCodeの拡張機能「Continue」をインストールします。

インストールが完了すると左側に次のアイコンが出現します。



「llama.cpp」を使って「CodeLlama-Instruct」を使うための設定がデフォルトで用意されているので後はポチポチ選択するだけです。

まずはアイコンをクリックして「Continue」を開始させて後、モデルを追加するために「+」をクリックします。



Providersのリストから「llama.cpp」を選択します。



そうするとModelsリストが表示されるので「CodeLlama Instruct 7b」を選択します。



これで使えるようになりました。

調べると日本語のブログや記事がたくさんありますが、古かったり自分の環境と違ったりでそのまま使える記事はありませんでした。

最終的には公式のGitHub(英語)を読みながらここまでたどり着くことができました。

数日かかりました(笑)

間違い、修正点などあればコメント頂ければ幸いです。


このエントリーをはてなブックマークに追加