概要
ローカル環境で LLM を立ち上げ、コードエディタ Zed と連携させた際の記録。
以前の記事 大規模言語モデル Llama 4 を AlmaLinux 8.10 にインストール では、AlmaLinux 8.10 上で llama.cpp を用いてローカル LLM を動かす方法をまとめた。
今回はその続編として、Qwen3.6 27B Q8_0 GGUF および Gemma4 31B Q8 GGUF をローカル環境で動かした。また、コードエディタ Zed とローカル LLM を連携させて使用する方法についても記載した。
AI エージェントなどと組み合わせて計算化学用途に使う場合、今回試した範囲では Qwen3.6 よりも Gemma4 の方が適している印象。特に Gaussian16 の入力ファイル作成や計算化学に関する基本的な知識については、Gemma4 の方が安定している。
一方で、コーディング用途については、どちらのモデルがより適しているかはまだ検討中。
<注意>様々なモデルを試しながら記事を書いたため、モデルのバージョンの不整合がある。モデルパラメータ数や量子化が異なっている。
検証環境
OS: AlmaLinux 8.10
CPU: Ryzen Threadripper 3990X 64-Core
RAM: 128 GB
GPU: RTX A6000 + RTX 5000 Ada
VRAM: 合計 約 80 GB
Zed は MacBook Pro (macOS Tahoe 26.2) で使用
設定方法
以前の記事で設定した llama.cpp はバージョンが古かったため、まず llama.cpp をアップグレードした。
その際、古い GCC ではビルド時にエラーが出たため、GCC 12 に切り替えてから llama.cpp を再ビルドした。
Gemma4 のインストールと起動
Hugging Face で gemma4 gguf などのキーワードで検索する。
自分の持っている VRAM サイズに収まる最適なモデルを選択する。
モデルをダウンロードする。
ダウンロードボタンを右クリックし、クリーンリンクをコピーする。
一番最後の ?download=true という文字列を削除し、以下のコマンドでダウンロードする。
cd /home/models
wget https://huggingface.co/unsloth/gemma-4-31B-it-GGUF/resolve/main/gemma-4-31B-it-UD-Q8_K_XL.gguf
以下のコマンドで Gemma4 を起動し、localhost:8888 に Webブラウザでアクセスする。
llama-server -m /home/models/gemma-4-31B-it-UD-Q8_K_XL.gguf --host 127.0.0.1 --port 8888 --n-gpu-layers 99 --ctx-size 32768 --reasoning-budget 16384 --chat-template-kwargs '{"enable_thinking": false}' --jinja
reasoning-budget オプションを設定しないと、延々と思考し続けてしまう。例えば、「このモデルには何年何月までの情報が入っていますか?」という質問への回答に 5 分近くかかっていた。
一方で、--reasoning-budget を 512 程度に設定すると回答は早いが回答の質が良くなかった。今回の検証環境では 16384 とした。
以下のような画面が表示される。
Qwen3.6 のインストールと起動
同様に huggingFace から Qwen のモデルをダウンロードする。
wget https://huggingface.co/gghfez/Qwen3.6-27B-Q8_0-GGUF/resolve/main/qwen3.6-27b-q8_0.gguf
以下のコマンドで Qwen3.6 を起動し、localhost:8888 に Webブラウザでアクセスする。
llama-server -m /home/models/Qwen3.6-27B-UD-Q8_K_XL.gguf --host 127.0.0.1 --port 8888 --n-gpu-layers 99 --ctx-size 32768 --reasoning-budget 16384 --chat-template-kwargs '{"enable_thinking": false}' --jinja
雑感
Gaussian16 の input ファイルの作成については、Qwen3.6 は足りない知識が多く、物足りない感じがした。一方で、Gemma4 は必要な知識は有している印象を受けた。しかし、最新版の ChatGPT5.5 には到底及ばない。
有機化学に関する質問に対しては、どちらのモデルもきちんと回答できていたので、考察や計算結果のまとめに使える可能性を感じた。
ちなみに以前の記事でインストールした llama scout 17B は、gemma4 や Qwen3.6 に比べると圧倒的に力不足な印象を受けた。
Zed とローカル LLM の連携
VS Code や Zed などのコードエディタをクラウド型 AI API と連携させると、短時間で大量のトークンを消費して利用上限に達したり、従量課金により使用料金が高額になったりする場合がある。
一方、ローカル LLM を用いる場合は、研究室内のサーバー上でモデルを実行するため、外部 API の利用料金を気にせずに使用できる。また、コードや研究データを外部サービスに送信せずに利用できるため、情報管理の面でも利点がある。
本項目では、ローカル LLM を systemd 経由で起動し、その後 MacBook Pro 上の Zed から API 経由で接続する。
ローカル LLM サーバーの systemd 化
まず、ローカル LLM を起動するサーバー上で、llama-server を systemd サービスとして登録する。
以下では、llama.cpp が /root/workspace/llama.cpp/ にインストールされており、モデルファイルが /home/models/ に置かれている場合を例とする。
管理者権限で、vi /etc/systemd/system/llama-server.service でファイルを作成する。
[Unit]
Description=llama.cpp llama-server
After=network-online.target
[Service]
Type=simple
User=root
WorkingDirectory=/root
ExecStart=/root/workspace/llama.cpp/build/bin/llama-server -m /home/models/gemma-4-26B-A4B-it-UD-Q5_K_XL.gguf --host 0.0.0.0 --port 8888 --n-gpu-layers 99 --ctx-size 800000 --reasoning-budget 4 --reasoning off --jinja
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
| オプション | 意味 |
|---|---|
-m |
使用する GGUF モデルファイルを指定する |
--host 0.0.0.0 |
外部から接続できるように全てのネットワークインターフェースで待ち受ける |
--port 8888 |
API サーバーのポート番号 |
--n-gpu-layers 99 |
可能な限り多くの層を GPU に載せる |
--ctx-size 32768 |
コンテキスト長を指定する |
--reasoning off |
reasoning mode を無効にする |
--jinja |
チャットテンプレート処理を有効にする |
サービスの起動
設定ファイルを作成したら、以下のコマンドで systemd に設定を反映する。
その後、設定を反映し、ローカル LLM を起動する。
sudo systemctl daemon-reload
sudo systemctl start llama-server.service
以下のコマンドで確認。
sudo systemctl status llama-server.service
curl http://127.0.0.1:8888/v1/models # API の確認
MacBook Pro から接続するための SSH port forwarding
MacBook Pro 上の Zed から研究室内サーバーの llama-server に接続するには、SSH port forwarding を用いる。
MacBook Pro の ~/.ssh/config を編集する。
Host llama-server
HostName your-login-server
User your_user
LocalForward 8888 127.0.0.1:8888
この場合、MacBook Pro の 127.0.0.1:8888 へのアクセスが、SSH 接続先サーバーの 127.0.0.1:8888 に転送される。
MacBook Pro での Zed の設定
⌘(command) + , で zed の設定画面を開く。
settings.json を以下のように編集する。
// Zed settings
//
// For information on how to configure Zed, see the Zed
// documentation: https://zed.dev/docs/configuring-zed
//
// To see all of Zed's default settings without changing your
// custom settings, run `zed: open default settings` from the
// command palette (cmd-shift-p / ctrl-shift-p)
{
"proxy": "",
"project_panel": {
"dock": "left"
},
"outline_panel": {
"dock": "left"
},
"collaboration_panel": {
"dock": "left"
},
"agent": {
"dock": "right",
"favorite_models": [],
"model_parameters": []
},
"git_panel": {
"dock": "left"
},
"terminal": {
"font_size": 18.0,
},
"base_keymap": "VSCode",
"icon_theme": {
"mode": "dark",
"light": "Zed (Default)",
"dark": "Zed (Default)",
},
"ui_font_size": 16,
"buffer_font_size": 18.0,
"theme": {
"mode": "dark",
"light": "One Light",
"dark": "Ayu Dark",
},
"language_models": {
"openai": {
"api_url": "http://127.0.0.1:8888/v1",
"available_models": [
{
"name": "gemma-4-26B-A4B-it-UD-Q5_K_XL.gguf",
"display_name": "Local Gemma 4 26B",
"max_tokens": 800000,
},
],
},
},
"assistant": {
"default_model": {
"provider": "openai",
"model": "gemma-4-26B-A4B-it-UD-Q5_K_XL.gguf",
},
},
}
api_url には、SSH port forwarding 後に MacBook Pro からアクセスできる URL を指定する。ここでは、MacBook Pro の 127.0.0.1:8888 にアクセスすると、研究室内サーバーの llama-server に転送されるように設定している。
Zed 起動時の API key 設定
Zed から OpenAI 互換 API として llama-server に接続する場合、実際には OpenAI API key を使用しない。しかし、Zed 側が API key の存在を要求する場合がある。
そのため、ダミーの API key を環境変数として設定してから Zed を起動する。
OPENAI_API_KEY=dummy zed`
毎回入力するのが面倒な場合は、~/.zshrc に以下を追記する。
export OPENAI_API_KEY=dummy
Zed Agent Window の表示
Zed で Agent Window を表示するには、以下のショートカットを用いる。
⌘(command) + shift + ?
または、画面左下のアイコンをクリックして表示してもよい。
Agent Window が表示されたら、使用するモデルとして Local Gemma 4 26B が選択できることを確認する。
Zed Agent Window の右下に Local Gemma 4 26B のように表示されていれば、ローカル LLM との連携は成功している。




