This commit is contained in:
parent
565aa70e58
commit
b03b8da307
@ -71,7 +71,7 @@ NVIDIAの「デスクトップAIワークステーション」です。
|
|||||||
|
|
||||||
## 構成図
|
## 構成図
|
||||||
|
|
||||||
\`\`\`
|
```text
|
||||||
┌─────────────────────────────────────────────────────┐
|
┌─────────────────────────────────────────────────────┐
|
||||||
│ あなたのPC / DGX Spark │
|
│ あなたのPC / DGX Spark │
|
||||||
│ │
|
│ │
|
||||||
@ -97,7 +97,7 @@ NVIDIAの「デスクトップAIワークステーション」です。
|
|||||||
│ │ └──────────────┘ │ │
|
│ │ └──────────────┘ │ │
|
||||||
│ └──────────────────┘ │
|
│ └──────────────────┘ │
|
||||||
└─────────────────────────────────────────────────────┘
|
└─────────────────────────────────────────────────────┘
|
||||||
\`\`\`
|
```
|
||||||
|
|
||||||
### なぜプロキシが必要?
|
### なぜプロキシが必要?
|
||||||
|
|
||||||
@ -123,9 +123,9 @@ FP8量子化版を使うことで、メモリ使用量は約45GB。DGX Sparkの1
|
|||||||
|
|
||||||
## ワンライナーで全自動セットアップ
|
## ワンライナーで全自動セットアップ
|
||||||
|
|
||||||
\`\`\`bash
|
```bash
|
||||||
curl -sL https://docs.techswan.online/scripts/dgx-spark-claude-code.sh | bash
|
curl -sL https://docs.techswan.online/scripts/dgx-spark-claude-code.sh | bash
|
||||||
\`\`\`
|
```
|
||||||
|
|
||||||
これだけ!約10分待つと環境が整います。
|
これだけ!約10分待つと環境が整います。
|
||||||
|
|
||||||
@ -137,49 +137,51 @@ curl -sL https://docs.techswan.online/scripts/dgx-spark-claude-code.sh | bash
|
|||||||
|
|
||||||
### Step 1: vLLMでモデルを起動
|
### Step 1: vLLMでモデルを起動
|
||||||
|
|
||||||
\`\`\`bash title="vLLM起動コマンド"
|
```bash title="vLLM起動コマンド"
|
||||||
docker run -d --name qwen3-coder-next-fp8 \\
|
docker run -d --name qwen3-coder-next-fp8 \
|
||||||
--gpus all \\
|
--gpus all \
|
||||||
-p 8000:8000 \\
|
-p 8000:8000 \
|
||||||
-v ~/.cache/huggingface:/root/.cache/huggingface \\
|
-v ~/.cache/huggingface:/root/.cache/huggingface \
|
||||||
--ipc=host \\
|
--ipc=host \
|
||||||
nvcr.io/nvidia/vllm:25.11-py3 \\
|
nvcr.io/nvidia/vllm:25.11-py3 \
|
||||||
vllm serve Qwen/Qwen3-Coder-Next-FP8 \\
|
vllm serve Qwen/Qwen3-Coder-Next-FP8 \
|
||||||
--served-model-name qwen3-coder-next \\
|
--served-model-name qwen3-coder-next \
|
||||||
--max-model-len 200000 \\
|
--max-model-len 200000 \
|
||||||
--max-num-seqs 8 \\
|
--max-num-seqs 8 \
|
||||||
--gpu-memory-utilization 0.85 \\
|
--gpu-memory-utilization 0.85 \
|
||||||
--enable-auto-tool-choice \\
|
--enable-auto-tool-choice \
|
||||||
--tool-call-parser qwen3_xml \\
|
--tool-call-parser qwen3_xml \
|
||||||
--trust-remote-code
|
--trust-remote-code
|
||||||
\`\`\`
|
```
|
||||||
|
|
||||||
#### 重要なポイント
|
#### 重要なポイント
|
||||||
|
|
||||||
| オプション | 値 | 説明 |
|
| オプション | 値 | 説明 |
|
||||||
|-----------|-----|------|
|
|-----------|-----|------|
|
||||||
| \`--max-model-len\` | 200000 | 200Kトークンまで対応 |
|
| `--max-model-len` | 200000 | 200Kトークンまで対応 |
|
||||||
| \`--max-num-seqs\` | 8 | 同時リクエスト数(メモリ節約) |
|
| `--max-num-seqs` | 8 | 同時リクエスト数(メモリ節約) |
|
||||||
| \`--tool-call-parser\` | **qwen3_xml** | ⚠️ これ超重要! |
|
| `--tool-call-parser` | **qwen3_xml** | ⚠️ これ超重要! |
|
||||||
|
|
||||||
:::danger tool-call-parserに注意
|
:::danger tool-call-parserに注意
|
||||||
\`--tool-call-parser\` を間違えると、Claude Codeのファイル操作やコマンド実行が動きません。**必ず \`qwen3_xml\`** を指定してください。
|
`--tool-call-parser` を間違えると、Claude Codeのファイル操作やコマンド実行が動きません。**必ず `qwen3_xml`** を指定してください。
|
||||||
:::
|
:::
|
||||||
|
|
||||||
初回起動は約10分かかります(45GBのモデルをダウンロード&ロード)。
|
初回起動は約10分かかります(45GBのモデルをダウンロード&ロード)。
|
||||||
|
|
||||||
### Step 2: claude-code-proxyを起動
|
### Step 2: claude-code-proxyを起動
|
||||||
|
|
||||||
\`\`\`bash
|
```bash
|
||||||
# クローン
|
# クローン
|
||||||
git clone https://github.com/fuergaosi233/claude-code-proxy.git
|
git clone https://github.com/fuergaosi233/claude-code-proxy.git
|
||||||
cd claude-code-proxy
|
cd claude-code-proxy
|
||||||
|
|
||||||
# 依存関係インストール
|
# 依存関係インストール
|
||||||
pip install -r requirements.txt --user
|
pip install -r requirements.txt --user
|
||||||
|
```
|
||||||
|
|
||||||
# 設定ファイル作成
|
`.env` ファイルを作成:
|
||||||
cat > .env << 'EOF'
|
|
||||||
|
```ini title=".env"
|
||||||
OPENAI_BASE_URL=http://localhost:8000/v1
|
OPENAI_BASE_URL=http://localhost:8000/v1
|
||||||
OPENAI_API_KEY=dummy
|
OPENAI_API_KEY=dummy
|
||||||
BIG_MODEL=qwen3-coder-next
|
BIG_MODEL=qwen3-coder-next
|
||||||
@ -187,31 +189,33 @@ MIDDLE_MODEL=qwen3-coder-next
|
|||||||
SMALL_MODEL=qwen3-coder-next
|
SMALL_MODEL=qwen3-coder-next
|
||||||
REQUEST_TIMEOUT=300
|
REQUEST_TIMEOUT=300
|
||||||
MAX_TOKENS_LIMIT=8192
|
MAX_TOKENS_LIMIT=8192
|
||||||
EOF
|
```
|
||||||
|
|
||||||
# 起動
|
プロキシを起動:
|
||||||
|
|
||||||
|
```bash
|
||||||
python start_proxy.py
|
python start_proxy.py
|
||||||
\`\`\`
|
```
|
||||||
|
|
||||||
### Step 3: Claude Codeを起動
|
### Step 3: Claude Codeを起動
|
||||||
|
|
||||||
\`\`\`bash
|
```bash
|
||||||
ANTHROPIC_BASE_URL=http://localhost:8082 \\
|
ANTHROPIC_BASE_URL=http://localhost:8082 \
|
||||||
ANTHROPIC_API_KEY=dummy \\
|
ANTHROPIC_API_KEY=dummy \
|
||||||
claude
|
claude
|
||||||
\`\`\`
|
```
|
||||||
|
|
||||||
:::warning ANTHROPIC_AUTH_TOKEN
|
:::warning ANTHROPIC_AUTH_TOKEN
|
||||||
\`ANTHROPIC_AUTH_TOKEN\` は設定しないでください。両方設定するとエラーになります。
|
`ANTHROPIC_AUTH_TOKEN` は設定しないでください。両方設定するとエラーになります。
|
||||||
:::
|
:::
|
||||||
|
|
||||||
### 便利なエイリアス設定
|
### 便利なエイリアス設定
|
||||||
|
|
||||||
\`\`\`bash title="~/.bashrc に追加"
|
```bash title="~/.bashrc に追加"
|
||||||
alias claude-local='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'
|
||||||
\`\`\`
|
```
|
||||||
|
|
||||||
これで \`claude-local\` と打つだけでOK!
|
これで `claude-local` と打つだけでOK!
|
||||||
|
|
||||||
## パフォーマンス
|
## パフォーマンス
|
||||||
|
|
||||||
@ -230,25 +234,25 @@ Anthropic APIに比べると生成速度は遅めですが、ローカルで完
|
|||||||
|
|
||||||
最初、ファイル操作しようとすると固まりました。
|
最初、ファイル操作しようとすると固まりました。
|
||||||
|
|
||||||
**原因**: \`--tool-call-parser hermes\` を使っていた
|
**原因**: `--tool-call-parser hermes` を使っていた
|
||||||
|
|
||||||
**解決**: \`--tool-call-parser qwen3_xml\` に変更
|
**解決**: `--tool-call-parser qwen3_xml` に変更
|
||||||
|
|
||||||
Qwen3系モデルは独自のTool Callingフォーマットを使うので、専用のパーサーが必要です。
|
Qwen3系モデルは独自のTool Callingフォーマットを使うので、専用のパーサーが必要です。
|
||||||
|
|
||||||
### 2. Auth conflictエラー
|
### 2. Auth conflictエラー
|
||||||
|
|
||||||
\`\`\`
|
```text
|
||||||
Auth conflict: Both a token (ANTHROPIC_AUTH_TOKEN) and an API key (ANTHROPIC_API_KEY) are set.
|
Auth conflict: Both a token (ANTHROPIC_AUTH_TOKEN) and an API key (ANTHROPIC_API_KEY) are set.
|
||||||
\`\`\`
|
```
|
||||||
|
|
||||||
**解決**: \`ANTHROPIC_AUTH_TOKEN\` を設定しない(または \`unset ANTHROPIC_AUTH_TOKEN\`)
|
**解決**: `ANTHROPIC_AUTH_TOKEN` を設定しない(または `unset ANTHROPIC_AUTH_TOKEN`)
|
||||||
|
|
||||||
### 3. max_tokensエラー
|
### 3. max_tokensエラー
|
||||||
|
|
||||||
入力が長すぎると、出力用のトークン枠がなくなってエラーに。
|
入力が長すぎると、出力用のトークン枠がなくなってエラーに。
|
||||||
|
|
||||||
**解決**: vLLMの \`--max-model-len\` を増やす(今回は200Kに設定)
|
**解決**: vLLMの `--max-model-len` を増やす(今回は200Kに設定)
|
||||||
|
|
||||||
## まとめ
|
## まとめ
|
||||||
|
|
||||||
@ -258,8 +262,8 @@ DGX SparkでClaude Codeをローカル化できました!
|
|||||||
|
|
||||||
1. **vLLM + Qwen3-Coder-Next-FP8** でモデルを動かす
|
1. **vLLM + Qwen3-Coder-Next-FP8** でモデルを動かす
|
||||||
2. **claude-code-proxy** でAPI形式を変換
|
2. **claude-code-proxy** でAPI形式を変換
|
||||||
3. \`--tool-call-parser qwen3_xml\` を忘れずに!
|
3. `--tool-call-parser qwen3_xml` を忘れずに!
|
||||||
4. \`ANTHROPIC_AUTH_TOKEN\` は設定しない
|
4. `ANTHROPIC_AUTH_TOKEN` は設定しない
|
||||||
|
|
||||||
セットアップは複雑ですが、一度動けば**速くて安定**。完全ローカルでClaude Codeが動く喜び、ぜひ体験してみてください。
|
セットアップは複雑ですが、一度動けば**速くて安定**。完全ローカルでClaude Codeが動く喜び、ぜひ体験してみてください。
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user