LLMを活用しようと思いました。
ローカルでLLMを動かして、それを各種作業に応用しようという試みです。ローカルで動かすことで、コストが低く、セキュリティに強いのがいい所です。
スペックとしてはCore Ultra i5、16GB RAM、RTX 3060 12GBを想定しています。
今回使うソフトウェア
Ollama
今回のセットアップの基礎となる部分です。ollamaはLLMのサーバーとして動き、単体でモデルの実行、ダウンロード、新規構築等もできます。
VSCode
Continue+ollamaを使います。モデルはチャットにLllama 3.1、コード補完にQwen 2.5 Coderというのが2025年5月時点の鉄板なようです。あまり情報はなかったですがチャット用にはGemma 3もちょうどよさそうです。
モデルサイズはGPUのVRAM数に合わせて調節する必要があります。大体8GB以下のGPUではLllama 3.1は8B、Qwen 2.5 Coderは7Bを使います。
12GBでもパラメータ数は増やせない1のですが、量子化数をQ6_Kとかにして精度向上を狙えます。ollamaのモデルページからだとview allから進むとすべての量子化のモデルが見られます。(例:llama 3.1の全部のモデル)
Open WebUI
正直dockerを使わなければならないのが面倒くさいのですが、意外にもOllamaのLM Studioのようなチャットアプリは多くありませんでした。LM StudioほどOSと統合されている感じはありませんが、ブラウザ上からChatGPTのような形式でLLMとチャットできます。
Stable Diffusion
画像生成って使い道あんまりない気もしますが一応入れたいと思います。(まだ)
導入
まずはVSCode(+Continue)+Ollamaから導入します。もう無限に他の人が書いてくれているので特に言うことはありません。ここで書いても数か月後には方法が変わると思うので参考程度に見てください。
Continue + Ollama でタブ補完(β)を機能させるまでを参考にしました。
ollamaのインストール、モデルのダウンロード
公式のQuickstartを見ながら進めます。
ollama run llama3.1:8b-instruct-q6_K
ダウンロードが終わるとチャットが始まります。試して極端に遅くなければ/bye
と入力して終了させます。もう一つ、コード補完用のモデルもダウンロードします。今度はpullでとってきます。
ollama pull qwen2.5-coder:7b-base-q6_K
取得したモデルの一覧はollama list
で確認できます。ちなみにあんま分かってないんですがinstructのモデルだとデフォルトで「タスクを解く」形式の受け答えになるようです。
http://localhost:11434/api/tags
にアクセスするとJSON形式でダウンロードしたモデル情報を見れます。
VSCodeのインストール、Continueの設定
公式サイトからVSCodeをダウンロードしてインストールしてください。Extensionsタブから検索にContinueと入力し、一番上のアドオンをインストールします。
ここでアカウント登録をすればCopilotのようにクラウドで動くAIアシスタントが使えますが、今回はローカルで使います。
左のタブからContinueを選択し、最初のサインイン画面の下にあるremain localを選択します。次の画面でも下にあるSkip and configure manuallyを選択します。
チャット画面の右上にあるSelect Assistantボタンをクリックし、Local Assistantの右にある歯車をクリックしてconfig.yaml
を開きます。
既にサンプルとしてLlama 3.1とQwen 2.5が記載されています。roles
で何にそのモデルを使うかを指定できます。
今回、モデルに量子化数を指定したのでmodel
の部分をllama3.1:8b-instruct-q6_K
とqwen2.5-coder:7b-base-q6_K
に変更します。Nomicの部分は埋め込み(なんかいい感じに最適化してくれるやつっぽい)なのでそのままで大丈夫です。
ファイルを保存してContinueのチャット画面に何か打ち込むと返答が返ってくるはずです。
コード補完はデフォルトでオンになっています。キャレットの箇所に入れるコードを半透明で表示してくれるはずです。
また、範囲を選択してCtrl+Iを押すことで選択範囲を編集する指示を与えることができます。変数の置き換えとかなら十分正確にやってくれます。
使い方はコメントからコードを生成したりとほかにもいろいろあるようです。日本語で指示を出してもそこそこ正確に返ってきます。
Open WebUIのインストール
docker公式サイトからDocker Desktopをダウンロードしてインストールします。OSを再起動します。
Open WebUIのQuick Start with Dockerの手順に沿って進めます。今回はollamaがすでにあるので”If Ollama is on your computer”のコマンドを使います。
docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main
完了後、http://localhost:3000/
にアクセスするとOpen WebUIが開けます。ローカルで使う場合もユーザー登録が必要そうなので登録するとChatGPTっぽい画面が開けます。
前段でダウンロードしたLlama 3.1 Instructだと日本語が怪しいところがあるのでチャット用には別のモデルを使いたいです。
Open WebUIはHugging Faceなどで配布されているGGUF形式のモデルも使えるようなので、HuggingFaceにある日本語性能が良いとされるLlama 3 ELYZA JPを使ってみます。以下のコマンドで同様にダウンロードと実行ができます。
ollama run hf.co/elyza/Llama-3-ELYZA-JP-8B-GGUF
完了後にOpen WebUIの画面を更新すると選択肢にこのモデルが出てきます。試すと確かに日本語での受け答えの性能がかなり向上しています。
ほかの選択肢
LM Studio
手軽で使いやすく、Windows/MacOS/Linux対応です。ローカルLLMでチャットするなら一番使いやすいと思います。
API機能もありますがOpenAI互換のもので、ollamaとは互換性がありません。体感ですがollamaに対応するソフトのほうが多い気がするので外しました。
- 一応、Qwen 2.5では14bのQ4が使えますが、コンテキストウィンドウが小さくなり、大きいソースファイルが読み込めなくなってしまいます。 ↩︎