koide 6364d215c6
All checks were successful
Deploy Docusaurus Site / deploy (push) Successful in 29s
Add: DGX SparkでClaude Codeをローカルモデルで動かす
2026-02-19 13:01:22 +00:00

230 lines
6.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
sidebar_position: 4
title: DGX SparkでClaude Codeをローカルモデルで動かす
description: DGX Spark上でQwen3-Coder-Next-FP8をvLLM経由でClaude Codeのバックエンドとして使う方法
hide_table_of_contents: false
displayed_sidebar: 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 Spark128GB統合メモリ
- Docker
- Node.js 22+
## Step 1: vLLMでQwen3-Coder-Next-FP8を起動
```bash title="vLLM起動コマンド"
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が止まる。
:::
### 起動確認
```bash
# ヘルスチェック
curl http://localhost:8000/health
# モデル一覧
curl http://localhost:8000/v1/models
```
初回起動は約10分かかる45GBのモデルをロード
## Step 2: claude-code-proxyをセットアップ
### インストール
```bash
# リポジトリをクローン
git clone https://github.com/fuergaosi233/claude-code-proxy.git
cd claude-code-proxy
# 依存関係をインストール
pip install -r requirements.txt --user
```
### 設定ファイル
```bash title=".env作成"
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
```
### プロキシ起動
```bash
python start_proxy.py
```
### 動作確認
```bash
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エラーが出る。
:::
```bash
ANTHROPIC_BASE_URL=http://localhost:8082 \
ANTHROPIC_API_KEY=dummy \
claude
```
### シェル設定に追加(推奨)
```bash title="~/.bashrc"
alias claude-local='ANTHROPIC_BASE_URL=http://localhost:8082 ANTHROPIC_API_KEY=dummy claude'
```
## パフォーマンス
| 項目 | 値 |
|------|-----|
| プロンプト処理 | ~1900 tokens/s |
| 生成速度 | ~6 tokens/s |
| メモリ使用量 | ~84GB / 119GB |
| KVキャッシュ | 26GB32Kコンテキスト |
### 動作確認済み機能
- ✅ チャット応答
- ✅ ストリーミング
- ✅ Tool CallingBash実行、ファイル操作
- ✅ 日本語対応
## トラブルシューティング
### Tool Callingで止まる
**原因:** `--tool-call-parser` の設定が間違っている
```bash
# ❌ 間違い
--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.
```
**対処:**
```bash
unset ANTHROPIC_AUTH_TOKEN
```
### 文字化け
```bash
LANG=en_US.UTF-8 claude
```
### vLLMが404を返す
vLLMはAnthropic API未実装のため、claude-code-proxyを使う。
## まとめ
DGX SparkでClaude Codeをローカルモデルで動かすポイント
1. **vLLM** + **Qwen3-Coder-Next-FP8**を起動
2. **`--tool-call-parser qwen3_xml`** を使う(重要!)
3. **claude-code-proxy**でAPI変換
4. **`ANTHROPIC_AUTH_TOKEN`は設定しない**
これでプライベートなコーディング環境の完成!🎉
## 参考リンク
- [vLLM Claude Code統合](https://docs.vllm.ai/en/latest/serving/integrations/claude_code/)
- [vLLM Tool Calling](https://docs.vllm.ai/en/latest/features/tool_calling/)
- [claude-code-proxy](https://github.com/fuergaosi233/claude-code-proxy)
- [Qwen3-Coder-Next-FP8](https://huggingface.co/Qwen/Qwen3-Coder-Next-FP8)
---
*この記事は2026年2月時点の情報です。*