Instructions to use zan/Qwen3.6-35B-A3B-DFlash-ja with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use zan/Qwen3.6-35B-A3B-DFlash-ja with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="zan/Qwen3.6-35B-A3B-DFlash-ja", trust_remote_code=True)# Load model directly from transformers import AutoTokenizer, AutoModel tokenizer = AutoTokenizer.from_pretrained("zan/Qwen3.6-35B-A3B-DFlash-ja", trust_remote_code=True) model = AutoModel.from_pretrained("zan/Qwen3.6-35B-A3B-DFlash-ja", trust_remote_code=True) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use zan/Qwen3.6-35B-A3B-DFlash-ja with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "zan/Qwen3.6-35B-A3B-DFlash-ja" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "zan/Qwen3.6-35B-A3B-DFlash-ja", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker
docker model run hf.co/zan/Qwen3.6-35B-A3B-DFlash-ja
- SGLang
How to use zan/Qwen3.6-35B-A3B-DFlash-ja with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "zan/Qwen3.6-35B-A3B-DFlash-ja" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "zan/Qwen3.6-35B-A3B-DFlash-ja", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "zan/Qwen3.6-35B-A3B-DFlash-ja" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "zan/Qwen3.6-35B-A3B-DFlash-ja", "prompt": "Once upon a time,", "max_tokens": 512, "temperature": 0.5 }' - Docker Model Runner
How to use zan/Qwen3.6-35B-A3B-DFlash-ja with Docker Model Runner:
docker model run hf.co/zan/Qwen3.6-35B-A3B-DFlash-ja
Qwen3.6-35B-A3B-DFlash-ja
Qwen/Qwen3.6-35B-A3B ファミリ向けの DFlash 互換 draft model です。NVFP4 量子化版を target にした投機的デコーディングで日本語タスクをもう少し速く回せないか、というお試しで作ってみました。
z-lab/Qwen3.6-35B-A3B-DFlash を初期重みとして英語 + 日本語データで追加学習したところ、日本語タスクの acceptance length が改善 されました。英語ベンチでも z-lab と同等あるいは僅かに上回る結果になっています。
DFlash (An et al., arXiv:2602.06036) の block-diffusion drafter です。Qwen3.6 を target にした投機的デコーディングで使えます。vLLM の --speculative-config method=dflash でそのまま動作します。
Installation
uv pip install vllm
uv pip install -U vllm --torch-backend=auto --extra-index-url https://wheels.vllm.ai/nightly
使い方 (vLLM)
ベンチマーク時に使用した推奨設定です。
vllm serve RedHatAI/Qwen3.6-35B-A3B-NVFP4 \
--tokenizer Qwen/Qwen3.6-35B-A3B \
--tensor-parallel-size 1 \
--gpu-memory-utilization 0.85 \
--max-num-seqs 4 \
--max-num-batched-tokens 32768 \
--enable-chunked-prefill \
--attention-backend flash_attn \
--mamba_ssm_cache_dtype float32 \
--reasoning-parser qwen3 \
--tool-call-parser qwen3_coder \
--enable-auto-tool-choice \
--dtype auto \
--trust-remote-code \
--speculative-config '{"method":"dflash","model":"zan/Qwen3.6-35B-A3B-DFlash-ja","num_speculative_tokens":15}'
学習レシピ (概要)
| 項目 | 値 |
|---|---|
| 初期重み | z-lab/Qwen3.6-35B-A3B-DFlash (FT で継承) |
| 追加学習データ | UltraChat 200k (英) 4,337 件 + databricks-dolly-15k-ja 8,000 件 = 12,337 sample |
| target hidden 抽出 | Qwen/Qwen3.6-35B-A3B (bf16) の 5 層 [1, 10, 19, 28, 37] ※ 推論先は NVFP4 で、量子化 mismatch があります (下記 Limitations 参照) |
| 学習方式 | speculators 形式 (full-seq context + multi-anchor block-sparse attention) を移植 |
| epoch / lr / block / max_anchors | 2 / 3e-5 / 16 / 256 |
| 計算 | NVIDIA GB10 (Spark) 1 台、約 9 時間 |
ベンチマーク
論文に倣い (max_tokens=1024, num_spec=15) でデータセット平均 τ (mean accept length) と median tok/s を測定してみました。
Concurrency = 1 (single-user latency)
| dataset | n | z-lab τ / tok/s | 本モデル τ / tok/s | Δ τ |
|---|---|---|---|---|
| en gsm8k | 20 | 5.27 / 101.5 | 5.20 / 106.3 | -1% |
| en humaneval | 20 | 9.86 / 183.4 | 9.51 / 185.6 | -4% |
| en mt_bench | 20 | 1.55 / 41.8 | 1.68 / 43.0 | +8% |
| en tool-call | 20 | 1.76 / 48.4 | 2.10 / 61.5 | +19% |
| ja mgsm | 20 | 2.33 / 59.6 | 2.68 / 67.9 | +15% |
| ja jhumaneval | 20 | 7.69 / 171.1 | 7.93 / 173.8 | +3% |
| ja elyza-100 | 20 | 0.84 / 35.9 | 1.02 / 37.5 | +21% |
| ja tool-call | 20 | 1.96 / 50.8 | 2.28 / 57.4 | +16% |
Concurrency = 24 (production batched serving)
⚠ tok/s は per-stream の中央値 (GPU を 24 並列で分けた個別 stream の値) です。総スループット (system tok/s) ではないため、N=1 より小さい数字になっています。
| dataset | n | z-lab τ / tok/s | 本モデル τ / tok/s | Δ τ |
|---|---|---|---|---|
| en gsm8k | 100 | 4.83 / 21.9 | 5.27 / 23.4 | +9% |
| en humaneval | 100 | 8.58 / 39.9 | 8.63 / 39.6 | +1% |
| en mt_bench | 80 | 2.40 / 14.1 | 2.55 / 14.9 | +6% |
| en tool-call | 30 | 1.97 / 15.7 | 2.18 / 33.0 | +11% |
| ja mgsm | 250 | 2.30 / 12.7 | 2.68 / 14.6 | +17% |
| ja jhumaneval | 100 | 5.89 / 33.2 | 6.04 / 35.4 | +3% |
| ja elyza-100 | 100 | 1.01 / 8.4 | 1.28 / 9.0 | +26% |
| ja tool-call | 30 | 1.88 / 13.8 | 2.24 / 16.9 | +19% |
Multi-turn
各会話 2 turn (turn1 + 続きの follow-up)、両 turn 通算で τ / tok/s を集計しています。max_tokens=1024/turn, concurrency=4 です。
| dataset | n (会話×turn) | z-lab τ / tok/s | 本モデル τ / tok/s | Δ τ |
|---|---|---|---|---|
| en mt_bench multi-turn | 80×2 | 2.46 / 34.2 | 2.52 / 36.1 | +3% |
| ja multi-turn (curated) | 30×2 | 1.34 / 19.6 | 1.56 / 21.8 | +16% |
⚠ ベンチマーク条件について
上記の z-lab 列は 本環境で再測定した値 であり、z-lab がモデルカードで公開している τ (例: GSM8K 6.73, MT-Bench 5.14) とは別物です。計測条件が異なります。
| 項目 | 本ベンチ | z-lab 公開値 (推定) |
|---|---|---|
| target モデル | RedHatAI/Qwen3.6-35B-A3B-NVFP4 (4-bit 量子化) |
Qwen/Qwen3.6-35B-A3B (bf16) |
| inference | vLLM v0.19.1 | SGLang FA4 (推定) |
| HW | NVIDIA GB10 | NVIDIA H200 (推定) |
| MT-Bench | philschmid/mt-bench 第 1 turn のみ |
multi-turn 全件 |
| subset | 各 20-250 prompt | テストセット全件 |
NVFP4 量子化と subset 取得の影響で、τ の絶対値は z-lab 公式 (理想化された fp16 環境) より 30-50% ほど低めに出ています。
既知の制約
- 学習と推論で量子化の mismatch があります:
- target hidden の抽出は bf16 の
Qwen/Qwen3.6-35B-A3Bで実施しました (vLLM のextract_hidden_statesモードが Qwen3.6 の multi-modal config と衝突してしまったためです) - 推論時は NVFP4 の
RedHatAI/Qwen3.6-35B-A3B-NVFP4を target にする想定です
- target hidden の抽出は bf16 の
ライセンス
Apache 2.0 (上流 Qwen3.6 / z-lab 継承)。
謝辞
モデル・コード
- 上流 z-lab/Qwen3.6-35B-A3B-DFlash の事前学習 (~800K sample 相当) を継承
- target / tokenizer の Qwen/Qwen3.6-35B-A3B (Alibaba Qwen team)
- 推論時 target の RedHatAI/Qwen3.6-35B-A3B-NVFP4 (Red Hat AI による NVFP4 量子化)
- DFlash 論文: An et al., arXiv:2602.06036
- 学習レシピは vllm-project/speculators を参考
学習データ
- HuggingFaceH4/ultrachat_200k (英語 chat、Microsoft / HuggingFace H4)
- kunishou/databricks-dolly-15k-ja (Databricks Dolly 15k の日本語訳、kunishou 様)
ベンチマークデータ
- openai/gsm8k (Cobbe et al., OpenAI)
- openai_humaneval (Chen et al., OpenAI)
- philschmid/mt-bench (LMSYS MT-Bench、philschmid 様の HF mirror)
- sbintuitions/MGSM_ja (MGSM 日本語、SB Intuitions 様)
- kogi-jwu/jhumaneval (HumanEval 日本語訳、kogi-jwu 様)
- elyza/ELYZA-tasks-100 (日本語タスク評価、ELYZA 様)
- Downloads last month
- 350
Model tree for zan/Qwen3.6-35B-A3B-DFlash-ja
Base model
z-lab/Qwen3.6-35B-A3B-DFlash