All checks were successful
Deploy Docusaurus Site / deploy (push) Successful in 29s
6.4 KiB
6.4 KiB
sidebar_position, title, description, hide_table_of_contents, displayed_sidebar
| sidebar_position | title | description | hide_table_of_contents | displayed_sidebar |
|---|---|---|---|---|
| 4 | DGX SparkでClaude Codeをローカルモデルで動かす | DGX Spark上でQwen3-Coder-Next-FP8をvLLM経由でClaude Codeのバックエンドとして使う方法 | false | null |
DGX SparkでClaude Codeをローカルモデルで動かす
概要
Claude Codeをローカルで動かすメリット:
- プライバシー: コードがクラウドに送信されない
- コスト: API料金不要
- 速度: ネットワーク遅延なし
この記事では、DGX Spark上でQwen3-Coder-Next-FP8を使ってClaude Codeを動かす方法を解説する。
構成
┌─────────────────────────────────────────────────────┐
│ DGX Spark │
│ │
│ ┌─────────────┐ ┌──────────────────┐ │
│ │ Claude Code │───▶│ claude-code-proxy│ │
│ └─────────────┘ │ (port 8082) │ │
│ └────────┬─────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────┐ │
│ │ vLLM Server │ │
│ │ (port 8000) │ │
│ │ Qwen3-Coder-Next │ │
│ └──────────────────┘ │
└─────────────────────────────────────────────────────┘
なぜプロキシが必要?
- Claude Code → Anthropic Messages API
- vLLM → OpenAI互換API
フォーマットが異なるため、claude-code-proxyで変換する。
前提条件
- DGX Spark(128GB統合メモリ)
- Docker
- Node.js 22+
Step 1: vLLMでQwen3-Coder-Next-FP8を起動
docker run -d --name qwen3-coder-next-fp8 \
--gpus all \
-p 8000:8000 \
-v ~/.cache/huggingface:/root/.cache/huggingface \
--ipc=host \
nvcr.io/nvidia/vllm:25.11-py3 \
vllm serve Qwen/Qwen3-Coder-Next-FP8 \
--served-model-name qwen3-coder-next \
--max-model-len 32768 \
--max-num-seqs 32 \
--gpu-memory-utilization 0.85 \
--enable-auto-tool-choice \
--tool-call-parser qwen3_xml \
--trust-remote-code
重要なパラメータ
| パラメータ | 値 | 説明 |
|---|---|---|
--served-model-name |
qwen3-coder-next |
モデル名(/を含めない) |
--enable-auto-tool-choice |
- | Tool Calling有効化 |
--tool-call-parser |
qwen3_xml |
Qwen3専用パーサー(重要!) |
:::danger tool-call-parserに注意
--tool-call-parser hermes ではなく qwen3_xml を使うこと!
hermesだとTool Callingのフォーマットが崩れてClaude Codeが止まる。
:::
起動確認
# ヘルスチェック
curl http://localhost:8000/health
# モデル一覧
curl http://localhost:8000/v1/models
初回起動は約10分かかる(45GBのモデルをロード)。
Step 2: claude-code-proxyをセットアップ
インストール
# リポジトリをクローン
git clone https://github.com/fuergaosi233/claude-code-proxy.git
cd claude-code-proxy
# 依存関係をインストール
pip install -r requirements.txt --user
設定ファイル
cat > .env << 'EOF'
OPENAI_BASE_URL=http://localhost:8000/v1
OPENAI_API_KEY=dummy
BIG_MODEL=qwen3-coder-next
MIDDLE_MODEL=qwen3-coder-next
SMALL_MODEL=qwen3-coder-next
REQUEST_TIMEOUT=300
MAX_TOKENS_LIMIT=8192
EOF
プロキシ起動
python start_proxy.py
動作確認
curl http://localhost:8082/v1/messages \
-H "Content-Type: application/json" \
-H "x-api-key: dummy" \
-d '{"model": "claude-3-5-sonnet-20241022", "max_tokens": 100, "messages": [{"role": "user", "content": "Hello"}]}'
Step 3: Claude Codeを起動
:::tip ANTHROPIC_AUTH_TOKEN
ANTHROPIC_AUTH_TOKEN は設定しないこと!
両方設定するとAuth conflictエラーが出る。
:::
ANTHROPIC_BASE_URL=http://localhost:8082 \
ANTHROPIC_API_KEY=dummy \
claude
シェル設定に追加(推奨)
alias claude-local='ANTHROPIC_BASE_URL=http://localhost:8082 ANTHROPIC_API_KEY=dummy claude'
パフォーマンス
| 項目 | 値 |
|---|---|
| プロンプト処理 | ~1900 tokens/s |
| 生成速度 | ~6 tokens/s |
| メモリ使用量 | ~84GB / 119GB |
| KVキャッシュ | 26GB(32Kコンテキスト) |
動作確認済み機能
- ✅ チャット応答
- ✅ ストリーミング
- ✅ Tool Calling(Bash実行、ファイル操作)
- ✅ 日本語対応
トラブルシューティング
Tool Callingで止まる
原因: --tool-call-parser の設定が間違っている
# ❌ 間違い
--tool-call-parser hermes
# ✅ 正解
--tool-call-parser qwen3_xml
Auth conflict エラー
Auth conflict: Both a token (ANTHROPIC_AUTH_TOKEN) and an API key (ANTHROPIC_API_KEY) are set.
対処:
unset ANTHROPIC_AUTH_TOKEN
文字化け
LANG=en_US.UTF-8 claude
vLLMが404を返す
vLLMはAnthropic API未実装のため、claude-code-proxyを使う。
まとめ
DGX SparkでClaude Codeをローカルモデルで動かすポイント:
- vLLM + Qwen3-Coder-Next-FP8を起動
--tool-call-parser qwen3_xmlを使う(重要!)- claude-code-proxyでAPI変換
ANTHROPIC_AUTH_TOKENは設定しない
これでプライベートなコーディング環境の完成!🎉
参考リンク
この記事は2026年2月時点の情報です。