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 の抽出は bf16Qwen/Qwen3.6-35B-A3B で実施しました (vLLM の extract_hidden_states モードが Qwen3.6 の multi-modal config と衝突してしまったためです)
    • 推論時は NVFP4RedHatAI/Qwen3.6-35B-A3B-NVFP4 を target にする想定です

ライセンス

Apache 2.0 (上流 Qwen3.6 / z-lab 継承)。

謝辞

モデル・コード

学習データ

ベンチマークデータ

Downloads last month
350
Safetensors
Model size
0.5B params
Tensor type
BF16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for zan/Qwen3.6-35B-A3B-DFlash-ja

Finetuned
(2)
this model

Paper for zan/Qwen3.6-35B-A3B-DFlash-ja