Hermes + Qwen3.6:ローカル Agent の低コスト構築案

Hermes Agent + Qwen3.6 GGUF のローカル構築案。WSL2、CUDA、llama.cpp でローカルモデルサービスを起動し、Hermes Agent を OpenAI-compatible endpoint に接続する。

この記事は、ローカル Agent の構築案を整理したものだ。WSL2 上で llama.cpp を使って Qwen3.6 GGUF モデルを動かし、Hermes Agent をローカルの OpenAI-compatible API に接続する。これにより、自分の PC 上で長時間動作するローカル AI アシスタントを用意でき、オンラインサービスの Token 消費に縛られにくくなる。

この構成は、ローカル AI Agent を試したい人、データのプライバシーと長期的な管理性を重視する人に向いている。日常の質問応答、執筆、コード補助、資料整理、簡単な自動化タスクに使える。ただし、モデルが大きいほど VRAM 要件も高くなる。原文の例では Qwen3.6-27B を使っており、24GB VRAM のほうが安定しやすい。VRAM が少ない場合は、小さいモデルや低い量子化版を選ぶ。

構成

全体の流れはシンプルだ。

  1. Windows に WSL2 と Ubuntu 24.04 をインストールする。
  2. WSL2 内に CUDA Toolkit を入れ、llama.cpp をビルドする。
  3. Qwen3.6 GGUF モデルをダウンロードする。
  4. llama-server でローカルモデルサービスを起動する。
  5. Hermes Agent をインストールし、http://localhost:8080/v1 に接続する。
  6. 任意で起動スクリプトを書き、WSL2 起動時にモデルサービスを自動起動する。

Hermes は Agent 機能を担当し、Qwen3.6 はローカル LLM 機能を担当する。組み合わせることで、PC をローカルのプライベート AI アシスタントにできる。

WSL2 と Ubuntu のインストール

Windows PowerShell を管理者として開き、次を実行する。

1
2
wsl --install
wsl --set-default-version 2

再起動後、Ubuntu 24.04 をインストールする。

1
wsl --install -d Ubuntu-24.04

インストール後、Ubuntu がユーザー名とパスワードの設定を求める。Ubuntu に入ったら、まず NVIDIA GPU が WSL2 から見えているか確認する。

1
nvidia-smi

GPU が認識されない場合は、Windows 側の NVIDIA ドライバを更新する。WSL2 は Windows ドライバを継承するが、CUDA Toolkit は WSL2 内に別途インストールする必要がある。

Python と基本ツールのインストール

1
sudo apt update && sudo apt install -y python3-pip python3-venv

続いて、ビルドツール、Git、CMake も必要になる。

1
sudo apt install -y cmake build-essential git

llama.cpp のビルド

まずソースコードを取得する。

1
2
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp

WSL2 内で CUDA が使える状態なら、そのままビルドできる。

1
2
cmake -B build -DGGML_CUDA=ON -DCMAKE_CUDA_ARCHITECTURES=89
cmake --build build -j$(nproc)

CMAKE_CUDA_ARCHITECTURES=89 は RTX 40 シリーズなど Ada アーキテクチャ向けだ。別の GPU では実際のアーキテクチャに合わせて変更する。

CUDA Toolkit がないというエラーが出る場合は、先に WSL2 内で CUDA Toolkit をインストールする。

1
2
3
4
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-keyring_1.1-1_all.deb
sudo dpkg -i cuda-keyring_1.1-1_all.deb
sudo apt update
sudo apt install -y cuda-toolkit-12-8

環境変数を設定する。

1
2
3
4
export PATH=/usr/local/cuda-12.8/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.8/lib64:$LD_LIBRARY_PATH
echo 'export PATH=/usr/local/cuda-12.8/bin:$PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-12.8/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc

その後、再ビルドする。

1
2
3
4
cd ~/llama.cpp
rm -rf build
cmake -B build -DGGML_CUDA=ON -DCMAKE_CUDA_ARCHITECTURES=89
cmake --build build -j$(nproc)

Qwen3.6 GGUF モデルのダウンロード

原文の例では、unsloth/Qwen3.6-27B-GGUFQwen3.6-27B-UD-Q4_K_XL.gguf を使っている。

1
2
3
hf download unsloth/Qwen3.6-27B-GGUF \
Qwen3.6-27B-UD-Q4_K_XL.gguf \
--local-dir ~/models/

このファイルは約 17GB。Hugging Face のダウンロードが遅い場合は、ModelScope などのミラーを使う。VRAM が足りない場合は 27B を無理に使わず、小さいモデルか低い量子化版を選ぶ。

ローカルモデルサービスを起動する

自分のモデルファイル名に合わせて llama-server を起動する。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
~/llama.cpp/build/bin/llama-server \
--model ~/models/Qwen3.6-27B-UD-Q4_K_XL.gguf \
--n-gpu-layers 99 \
--ctx-size 32768 \
--flash-attn on \
--temp 1.0 \
--top-p 0.95 \
--top-k 20 \
--presence-penalty 1.5 \
--port 8080

起動後、Windows のブラウザで次を開く。

1
http://localhost:8080

Hermes Agent や他の OpenAI-compatible クライアントから呼び出す場合、API アドレスは通常次になる。

1
http://localhost:8080/v1

Thinking モードの使い分け

Qwen3.6 はデフォルトで Thinking モードが有効になる場合がある。複雑な推論、難しいコード問題、多段階分析には向いているが、速度は遅くなる。

Thinking モードを無効にしたい場合は、サービスを停止して --chat-template-kwargs を追加する。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
~/llama.cpp/build/bin/llama-server \
--model ~/models/Qwen3.6-27B-UD-Q4_K_XL.gguf \
--n-gpu-layers 99 \
--ctx-size 32768 \
--flash-attn on \
--temp 1.0 \
--top-p 0.95 \
--top-k 20 \
--presence-penalty 1.5 \
--chat-template-kwargs '{"enable_thinking":false}' \
--port 8080

Thinking を無効にすると、簡単な Q&A、執筆、コード補完、コード説明は速くなる。一方、複雑なアルゴリズム設計、難しい Debug、アーキテクチャ分析では Thinking を有効にするほうがよい。

Hermes Agent のインストール

llama-server を動かしたまま、新しい WSL2 ターミナルを開いて Hermes Agent をインストールする。

1
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash

インストールスクリプトは Python、Node.js、ripgrep、ffmpeg などの依存関係を処理する。モデル endpoint の設定では custom endpoint を選ぶ。

1
2
3
URL: http://localhost:8080/v1
API Key: 12345678
Model: 自動認識

ローカルの llama-server では、API Key は任意のプレースホルダでよい。設定後は Telegram、WeChat、QQ、Discord などのチャットツールと接続し、Hermes Agent からローカルモデルを呼び出してタスクを実行できる。

モデルサービスの自動起動

WSL2 ターミナルを開いたときにモデルサービスを自動起動するスクリプトを用意できる。

スクリプトを作成する。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
cat > ~/start-llm.sh << 'EOF'
#!/bin/bash
echo "Starting Qwen3.6-27B llama-server..."
~/llama.cpp/build/bin/llama-server \
--model ~/models/Qwen3.6-27B-UD-Q4_K_XL.gguf \
--n-gpu-layers 99 \
--ctx-size 65536 \
--flash-attn on \
--temp 1.0 \
--top-p 0.95 \
--top-k 20 \
--presence-penalty 1.5 \
--port 8080 \
--host 0.0.0.0 &
echo "llama-server started, PID: $!"
echo "API: http://localhost:8080/v1"
echo "Chat UI: http://localhost:8080"
EOF
chmod +x ~/start-llm.sh

.bashrc に追記する。

1
2
3
4
echo '# Auto-start llama-server' >> ~/.bashrc
echo 'if ! pgrep -f "llama-server" > /dev/null 2>&1; then' >> ~/.bashrc
echo '    ~/start-llm.sh' >> ~/.bashrc
echo 'fi' >> ~/.bashrc

これで WSL2 ターミナルを開くたびに、llama-server が動いていなければ自動起動する。すでに動いている場合はスキップされ、重複起動を避けられる。

注意事項

  1. 27B モデルは VRAM 要件が高い。24GB VRAM のほうが安定しやすく、VRAM が少ない場合は小さいモデルにする。
  2. --ctx-size 65536 は VRAM と RAM の負荷を大きく増やす。不安定な場合は 32768 かそれ以下に下げる。
  3. WSL2 内の CUDA Toolkit と Windows 側の GPU ドライバの両方が正常である必要がある。どちらかが問題を起こすと、CUDA のビルドや実行に失敗する。
  4. Hermes Agent がローカルサービスへ接続する仕組みは OpenAI-compatible API 呼び出しであり、重要なのは http://localhost:8080/v1 が正常に応答すること。
  5. スマホや他の端末からアクセスする場合は、Windows Firewall、LAN アドレス、セキュリティ分離を追加で扱う。ローカルモデルサービスを直接インターネットへ公開しない。

関連リンク

记录并分享
Hugo で構築されています。
テーマ StackJimmy によって設計されています。