VScode + AI支援拡張 with ローカルLLM on WSL

この記事は2024-02-24に環境構築したメモです。


OpenAI互換API  on WSL

今回はローカルLLMとしてopenchat-3.5-0106-GGUFを選択しました。
今はGemmaKARAKURI LM 70B Chat v0.1が話題ですが、使ってみるまで性能がわからないので、Agent能力で実績のあるOpenChat-3.5にしました。

今回のLLMはGGUF形式なので、llama-cpp-pythonをWSLで動作させる環境構築が必要です。

CUDA Toolkit (11.8)

CUDAをWSLにインストールします。この環境では11.8を使用しています。

wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda-repo-wsl-ubuntu-11-8-local_11.8.0-1_amd64.deb
sudo dpkg -i cuda-repo-wsl-ubuntu-11-8-local_11.8.0-1_amd64.deb
sudo cp /var/cuda-repo-wsl-ubuntu-11-8-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda

llama-cpp-python[server]

[server]モジュールをインストールします。

sudo apt install -y build-essential cmake python3 python3-pip python-is-python3 \
    && CUDA_PATH=/usr/local/cuda FORCE_CMAKE=1 CMAKE_ARGS='-DLLAMA_CUBLAS=on' \
    pip install llama-cpp-python[server] --force-reinstall --upgrade --no-cache-dir -vv

echo 'export PATH=$PATH:~/.local/bin' >> ~/.bashrc

modelをダウンロード

huggingfaceのモデルをダウンロードするのにhuggingface-cliが便利です。

pip install huggingface-hub

ディレクトリを作成して・・・

cd ~
mkdir openchat-3.5-0106-GGUF
cd openchat-3.5-0106-GGUF

ダウンロード

huggingface-cli download TheBloke/openchat-3.5-0106-GGUF openchat-3.5-0106.Q5_K_M.gguf --local-dir . --local-dir-use-symlinks False

OpenAI API互換サーバーとして起動

python -m llama_cpp.server --model openchat-3.5-0106.Q5_K_M.gguf --n_gpu_layers 35
n_gpu_layers 35の場合、gpuメモリは7.1G必要でした。
running on http://localhost:8000/v1

continue.dev

CursorがローカルLLMに対応したということで試してみたかったのですが・・・

Cursorをインストールすると、WSLでVScodeもCursorも呼び出せなくなりました。また、設定でOpenAI APIをurl overrideをしても呼び出されていないようで、まだ未完成に見えました。

そんなこんなで苦労していたところ、ローカルLLMを選択できるAI支援拡張continue.devがVScodeに存在することを知りました。

以下の記述は、こちらの記事を参考にしています。

ローカルLLMを設定に追加

continue.dev拡張をインストールして、歯車から設定(json)を開く
titleに好みの名称、apiBaseに"http://localhost:8000/v1"を指定します。
ほかのパラメータは固定値です。
    {
      "title": "Local",
      "provider": "openai",
      "model": "gpt-4",
      "apiKey": "EMPTY",
      "apiBase": "http://localhost:8000/v1"
    }

動作確認

OpenChat-3.5はコードアシストに十分な性能があります。

Continueのドキュメントを読もう

使いこなすためにドキュメントに目を通し始めたのですが、予想より強力だったり、有用な情報も提供されていて、じっくり目を通す価値があります!

特に、このあたりのトピックは気になる方も多いのではないでしょうか?
* 複数のファイルから応答するためのRAG(embeddings + retrieval)の使い方
* おすすめのローカルLLM DeepSeek Coder は16K window size

DeepSeek CoderもGGUFで提供されているので、試してみたいですね!


この記事が気に入ったらサポートをしてみませんか?