From 6364d215c632001b806191c3d8af0d7489c46dce Mon Sep 17 00:00:00 2001 From: koide Date: Thu, 19 Feb 2026 13:01:22 +0000 Subject: [PATCH] =?UTF-8?q?Add:=20DGX=20Spark=E3=81=A7Claude=20Code?= =?UTF-8?q?=E3=82=92=E3=83=AD=E3=83=BC=E3=82=AB=E3=83=AB=E3=83=A2=E3=83=87?= =?UTF-8?q?=E3=83=AB=E3=81=A7=E5=8B=95=E3=81=8B=E3=81=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dgx-spark-claude-code-local/index.md | 229 ++++++++++++++++++ docs-tech/index.md | 1 + 2 files changed, 230 insertions(+) create mode 100644 docs-tech/dgx-spark-claude-code-local/index.md diff --git a/docs-tech/dgx-spark-claude-code-local/index.md b/docs-tech/dgx-spark-claude-code-local/index.md new file mode 100644 index 0000000..0d77e6c --- /dev/null +++ b/docs-tech/dgx-spark-claude-code-local/index.md @@ -0,0 +1,229 @@ +--- +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 Spark(128GB統合メモリ) +- 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キャッシュ | 26GB(32Kコンテキスト) | + +### 動作確認済み機能 + +- ✅ チャット応答 +- ✅ ストリーミング +- ✅ Tool Calling(Bash実行、ファイル操作) +- ✅ 日本語対応 + +## トラブルシューティング + +### 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月時点の情報です。* diff --git a/docs-tech/index.md b/docs-tech/index.md index 6f5e623..5b4b4b0 100644 --- a/docs-tech/index.md +++ b/docs-tech/index.md @@ -10,6 +10,7 @@ slug: / ## DGX Spark +- [Claude Codeをローカルモデルで動かす](/tech/dgx-spark-claude-code-local) - vLLM + Qwen3で完全ローカル環境 - [Qwen3-Coder-Next(80B MoE)を動かす](/tech/dgx-spark-qwen3-coder-next) - FP8量子化で単体起動 - [デュアル構成ガイド](/tech/dgx-spark-dual) - 2台接続で256GB環境を構築 - [MiniMax-M2.5-REAP-172Bを動かす](/tech/dgx-spark-minimax) - 172Bモデルを動かす