All checks were successful
Deploy Docusaurus Site / deploy (push) Successful in 26s
237 lines
6.1 KiB
Markdown
237 lines
6.1 KiB
Markdown
---
|
||
sidebar_position: 3
|
||
title: DGX SparkでQwen3-Coder-Next(80B MoE)を動かす
|
||
description: NVIDIA DGX Sparkの128GB統合メモリでQwen3-Coder-Next(80B MoE)をFP8量子化で動かす方法を解説
|
||
hide_table_of_contents: false
|
||
displayed_sidebar: null
|
||
---
|
||
|
||
# DGX SparkでQwen3-Coder-Nextを動かす
|
||
|
||
## はじめに
|
||
|
||
**DGX Spark**はNVIDIAのデスクトップAIワークステーション。Grace Blackwell(GB10)アーキテクチャで、**128GB統合メモリ**を持つ。この記事では、最新の**Qwen3-Coder-Next**(80B-A3B MoE)をDGX Spark単体で動かす方法を解説する。
|
||
|
||
### 対象読者
|
||
|
||
- DGX Sparkを持っている
|
||
- 大規模LLMをローカルで動かしたい
|
||
- コーディング用のAIモデルを探している
|
||
|
||
### Qwen3-Coder-Nextとは
|
||
|
||
Qwen3-Coder-Nextは2026年2月にリリースされたMixture of Experts(MoE)コーディングモデル:
|
||
|
||
| 項目 | 値 |
|
||
|-----|-----|
|
||
| 総パラメータ | 80B(800億) |
|
||
| アクティブパラメータ | 3B(30億) |
|
||
| アーキテクチャ | Mamba + Transformer ハイブリッド |
|
||
| コンテキスト長 | 最大1M tokens |
|
||
|
||
MoE構造により、80Bパラメータでありながら推論時は3Bしかアクティブにならないため、効率的。
|
||
|
||
## ワンライナーでセットアップ
|
||
|
||
```bash
|
||
curl -sL https://docs.techswan.online/scripts/dgx-spark-qwen3-coder.sh | bash
|
||
```
|
||
|
||
:::tip 初回起動
|
||
モデルダウンロード(約45GB)+ ロードで15-20分かかる。`docker logs -f qwen3-coder-next-fp8` で進捗確認。
|
||
:::
|
||
|
||
## 重要:コンテナ選定
|
||
|
||
:::danger NGCコンテナ必須
|
||
DGX Sparkでは必ずNGC公式コンテナを使う。pipインストールや野良ビルドは、ドライバー互換性問題を引き起こす。
|
||
:::
|
||
|
||
```bash
|
||
# ❌ やってはいけない
|
||
pip install vllm
|
||
|
||
# ✅ 正解:NGC公式コンテナ
|
||
docker pull nvcr.io/nvidia/vllm:25.11-py3
|
||
```
|
||
|
||
## 量子化の選択
|
||
|
||
### BF16は無理
|
||
|
||
80BモデルをBF16(16bit)で動かすには約160GBのメモリが必要。DGX Sparkの128GBでは足りない。
|
||
|
||
```
|
||
torch.OutOfMemoryError: CUDA out of memory.
|
||
GPU 0 has a total capacity of 119.64 GiB of which 994.07 MiB is free.
|
||
```
|
||
|
||
### FP8を使う
|
||
|
||
**FP8版**(`Qwen/Qwen3-Coder-Next-FP8`)を使えば、約45GBで収まる。
|
||
|
||
| 量子化 | メモリ | DGX Spark単体 |
|
||
|--------|--------|--------------|
|
||
| BF16 | ~160GB | ❌ |
|
||
| FP8 | ~45GB | ✅ |
|
||
| NVFP4 | ~25GB | ✅ |
|
||
|
||
## 手動セットアップ
|
||
|
||
### 起動コマンド
|
||
|
||
```bash title="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 \
|
||
--max-model-len 32768 \
|
||
--max-num-seqs 32 \
|
||
--gpu-memory-utilization 0.85 \
|
||
--trust-remote-code
|
||
```
|
||
|
||
### パラメータ解説
|
||
|
||
| パラメータ | 値 | 説明 |
|
||
|-----------|-----|------|
|
||
| `--gpus all` | - | 全GPU使用 |
|
||
| `--ipc=host` | - | 共有メモリ設定(必須) |
|
||
| `--max-model-len` | 32768 | 最大コンテキスト長 |
|
||
| `--max-num-seqs` | 32 | 同時リクエスト数 |
|
||
| `--gpu-memory-utilization` | 0.85 | GPUメモリ使用率 |
|
||
| `--trust-remote-code` | - | カスタムコード許可 |
|
||
|
||
## 起動ログの確認
|
||
|
||
### 正常な起動シーケンス
|
||
|
||
```bash
|
||
docker logs -f qwen3-coder-next-fp8
|
||
```
|
||
|
||
1. **モデルダウンロード**(初回のみ、約45GB)
|
||
2. **Safetensorsロード**(40シャード、約10分)
|
||
3. **KVキャッシュ確保**
|
||
4. **CUDAグラフキャプチャ**
|
||
5. **API起動完了**
|
||
|
||
```
|
||
INFO: Application startup complete.
|
||
```
|
||
|
||
### 進捗確認
|
||
|
||
```bash
|
||
# ダウンロード進捗
|
||
du -sh ~/.cache/huggingface/hub/models--Qwen--Qwen3-Coder-Next-FP8
|
||
|
||
# ロード進捗(ログに表示)
|
||
Loading safetensors checkpoint shards: 62% Completed | 25/40
|
||
```
|
||
|
||
## 推論テスト
|
||
|
||
### ヘルスチェック
|
||
|
||
```bash
|
||
curl http://localhost:8000/health
|
||
```
|
||
|
||
### チャット
|
||
|
||
```bash
|
||
curl http://localhost:8000/v1/chat/completions \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"model": "Qwen/Qwen3-Coder-Next-FP8",
|
||
"messages": [
|
||
{"role": "user", "content": "Pythonでフィボナッチ数列を生成する関数を書いて"}
|
||
],
|
||
"max_tokens": 500
|
||
}'
|
||
```
|
||
|
||
## トラブルシューティング
|
||
|
||
### OOM(メモリ不足)
|
||
|
||
:::warning 症状
|
||
```
|
||
CUDA out of memory. Tried to allocate X GiB.
|
||
```
|
||
:::
|
||
|
||
**対処:**
|
||
1. FP8/NVFP4量子化版を使う
|
||
2. `--max-model-len`を減らす(32768 → 16384)
|
||
3. `--gpu-memory-utilization`を減らす(0.85 → 0.75)
|
||
4. 他のプロセスを停止
|
||
|
||
### メモリリーク
|
||
|
||
**症状:** OOM後に空きメモリが減ったまま
|
||
|
||
**対処:**
|
||
```bash
|
||
# 全コンテナ停止
|
||
docker stop $(docker ps -q)
|
||
|
||
# メモリ確認
|
||
free -h
|
||
```
|
||
|
||
### gpu-memory-utilizationエラー
|
||
|
||
**症状:**
|
||
```
|
||
ValueError: Free memory on device (94.25/119.64 GiB) is less than desired GPU memory utilization
|
||
```
|
||
|
||
**対処:**
|
||
```bash
|
||
# 他のプロセスがGPUを使用中
|
||
# 全コンテナを停止してからリトライ
|
||
docker stop $(docker ps -q)
|
||
```
|
||
|
||
## スペック情報
|
||
|
||
### 起動後のメモリ使用量
|
||
|
||
```
|
||
Mem: 119Gi total, 84Gi used, 21Gi free
|
||
```
|
||
|
||
### KVキャッシュ
|
||
|
||
```
|
||
Available KV cache memory: 26.23 GiB
|
||
GPU KV cache size: 286,144 tokens
|
||
Maximum concurrency for 32,768 tokens per request: 32.91x
|
||
```
|
||
|
||
## まとめ
|
||
|
||
DGX SparkでQwen3-Coder-Next(80B MoE)を動かすポイント:
|
||
|
||
1. **NGC公式コンテナ**を使う(`nvcr.io/nvidia/vllm:25.11-py3`)
|
||
2. **FP8量子化版**を使う(BF16は128GBに収まらない)
|
||
3. **初回起動は時間がかかる**(ダウンロード + ロードで15-20分)
|
||
4. **メモリ競合に注意**(他のプロセスがGPUを使っているとOOM)
|
||
|
||
FP8で45GB程度なので、32Kコンテキストで余裕をもって動作する。コーディング用途に最適!
|
||
|
||
## 参考リンク
|
||
|
||
- [Qwen3-Coder-Next HuggingFace](https://huggingface.co/Qwen/Qwen3-Coder-Next-FP8)
|
||
- [DGX Spark Playbooks](https://build.nvidia.com/spark/)
|
||
- [vLLM Documentation](https://docs.vllm.ai/)
|
||
|
||
---
|
||
|
||
*この記事は2026年2月時点の情報です。*
|