0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【DGX Spark】TensorFold で3モデルを比較する — Qwen3.8-27B / Qwen3.6-35B-A3B / Qwen3.8-Flash-Next(量子化・形式の違い)

0
Posted at

1台の DGX Spark(GB10)で TensorFold を使い、性格の異なる3モデルを動かして比較しました。
本記事は 「どのモデル/どの量子化(チェックポイント形式)を選ぶか」 に焦点を当てます。
構築編・切り分け編の続編です。数値は手元1台での実測(単発を含む)で、環境依存です。

※ IP・ホスト名・認証情報はプレースホルダに置き換えています。

シリーズ


1. 比較した3モデル

# モデル 種別 量子化/形式 投機デコード
A Qwen3.8-27B dense 27B EXL3 4.00bpw / MLX 4bit DFlash2(外部ドラフタ)
B Qwen3.6-35B-A3B MoE(約3B active) MLX 4bit-MTP MTP(内蔵)
C Qwen3.8-Flash-Next MoE 177B(約6B active) MLX 4bit-MTP(推奨)/EXL3 3.05bpw(暫定) MTP(内蔵)
  • dense は帯域律速(毎トークン全重みを読む)ため、単機では decode が出にくい。
  • MoE は active パラメータが少ないため、総パラメータが大きくても速い。
  • 投機デコード(DFlash2 / MTP)が体感速度の最大レバー。

2. 量子化/チェックポイント形式の比較

TensorFold が扱える主な形式の性格をまとめます(本記事の主眼)。

形式 長所 短所 備考
MLX 4bit 速い・単機の定番 難問推論で品質低下の報告あり TensorFold コミュニティの標準
EXL3 「replies are exact」/パック効率 実験的。prompt(prefill)が約半分 ログにも警告が出る
NVFP4 理論上はFP4ネイティブで速い GB10(sm_121) では伸びにくい(カーネル成熟度) FP8/AWQに劣る報告多数
FP8 高品質 重みが大きい(27Bで約30GB) 2台構成向き
GGUF (Q4_K 等) 汎用・llama.cpp 単機では帯域律速 比較用

実務的には、単機 DGX Spark では 27B は MLX 4bit + DFlash2、
Flash-Next は TensorFold 標準の MLX 4bit-MTP チェックポイントが定番です。
EXL3 は prefill が約1/3 と遅く、常用には不向きです。


3. 実測: 27B dense(EXL3 vs MLX 4bit)

同一条件(TensorFold 直, ユニークプロンプト, thinking off)での比較です。

指標 EXL3 MLX 4bit
prefill 30k コールド 27.9s(~943 tok/s) 18.9s(~1,393 tok/s)
decode 600トークン 4.9s(~134 tok/s) 4.0–4.2s(~147–154 tok/s)
投機受入率 66% 72%
起動見積り 38.4 GiB 40.5 GiB
  • MLX 4bit のほうが prefill・decode とも速い。
  • ただし計測値は同時実行の負荷に強く依存するため、条件を揃えないと逆転して見えます。

Thinking ON/OFF の影響(MLX 4bit)

条件 prefill 26k decode
Thinking OFF ~19.0s(~1,393 tok/s) 147–154 tok/s
Thinking ON ~19.0s(~1,395 tok/s) 84–106 tok/s
  • prefill は Thinking と無関係。
  • decode は Thinking で約半減(受入率が 72% → 47% に低下)。
  • エージェント用途(thinking off)では、思考オフのほうが明らかに速い。

4. 実測: Qwen3.8-Flash-Next(EXL3 → MLX 4bit-MTP)

最初は手元にあった EXL3 3.05bpw(約80GB, qwen4_exp, MTP・vision入り)を起動しましたが、
prefill がボトルネックでした。その後、TensorFold 公式ドキュメントが示す
MLX 4bit-MTP チェックポイント(TensorFold/Qwen3.8-Flash-Next-MLX-4bit-MTP, 約106GB)を入手して切り替えました。

指標 Flash-Next MLX 4bit-MTP(推奨) Flash-Next EXL3 3.05bpw 27B MLX4bit(参考)
prefill 26k コールド ~2,770 tok/s(9.5s) ~857 tok/s ~1,393
decode prose ~44 tok/s ~50 ~147
decode 規則的 117–130 tok/s 108–136 147
投機受入率(規則的) 99.8%(512/513) 99% —
window 253,001 262,144 262,144
起動見積り 87.35 GiB 61.65 GiB 40.5 GiB
ロード時間 35.6s 76.1s 21.4s
  • MLX 4bit-MTP に替えると prefill が約3.2倍(EXL3比)。decode はほぼ同等、window も 253k を確保。
  • MLX 4bit-MTP は TENSORFOLD_CUDA_MEMORY_LIMIT_GB=110 により 253k窓(公式の既定だと約74kに縮む)。
  • 公式ドキュメントの参考値(prefill 2,300–2,500 / decode 62–76)と概ね一致(本機はやや prefill 高め)。

5. 並列化(--parallel)の効果

TensorFold の --parallel は CUDA では既定が「1件ずつ直列」。エージェント用途ではここが体感を大きく左右します。

直列(既定) --parallel 8(27B)
8並列の合計 decode 実質1本ずつ 約595 tok/s(約4倍)
単一リクエスト フル速度だが待たされる ほぼ同速度
  • Flash-Next は --parallel 4 を使用(253k窓×4本でメモリを使い切るため。起動ログに「up to 4 streams」と出る)。
  • LiteLLM 側の max_parallel_requests をサーバの値に揃える(片方だけ上げると 429 や拒否)。

6. 投機デコードの違い

方式 仕組み 特徴
DFlash2 ブロック拡散型ドラフタ 27B で有効。コード編集など予測しやすい入力で受入率が高い
MTP モデル内蔵の多トークン予測 Flash-Next / MoE 系。追加ドラフタ不要
  • 受入率はワークロード依存。番号列挙のような規則的出力では 99%、散文では 50〜65% 程度。
  • 「同じモデル・同じエンジンでも、タスクで 2〜3倍変わる」ため、単一の tok/s だけでは判断できません。

7. 起動時間・初回コンパイル

モデル ロード時間 備考
27B EXL3 ~6.7s 再起動時はCUDA拡張を再利用
27B MLX 4bit ~21s —
Flash-Next EXL3 ~76s 初回は CUDA拡張のコンパイルが走る(building CUDA extension ...)
Flash-Next MLX 4bit-MTP ~36s 初回DL(約106GB)後にロード。CUDA拡張は再利用

初回起動のみ、対象アーキテクチャ用の CUDA 拡張ビルドが入ります(first start after an install or update)。
2回目以降は再利用されるため速くなります。


8. コミュニティ知見(外部調査の要点)

  • NVFP4 は GB10 では伸びにくい:カーネル/エコシステムの成熟度の問題。
  • MLX 4bit + DFlash2 は単機最速クラスだが難問推論で品質低下の報告あり。
    統制研究では TensorFold + MLX4bit が 68.3 tok/s / 正答14/24、重みだけ NVFP4 に替えると 52.6 tok/s / 18/24 に回復。
  • Flash-Next は MLX 4bit-MTP が TensorFold 標準(本機 prefill ~2,770 / window 253k)。
    EXL3 は実験的で prefill が約1/3。NVFP4 版は GB10 では decode が伸びにくい。
  • 投機デコードが最大のレバー(有無で decode が 2〜3倍)。
  • Strata は「12GB GPU + 32GB RAM」級の民生機向けで、専門家をシステムRAMに退避する設計。
    DGX Spark は CPU/GPU が128GBを共有するため思想が逆で、Spark では TensorFold / SGLang / vLLM が使われます。

9. 選定の指針(単機 DGX Spark)

目的 おすすめ
速さ最優先(単発・短〜中くらいの文脈) Qwen3.8-27B + MLX 4bit + DFlash2 + --parallel 8
賢さ+prefill重視(長文脈・複雑タスク・エージェント) Qwen3.8-Flash-Next + MLX 4bit-MTP(prefill ~2,770 / window 253k)
品質を厳密に NVFP4 / FP8(ただし GB10 は NVFP4 の伸びに注意)

10. まとめ

  • 単機 DGX Spark では dense は帯域律速、MoE は速い。加えて投機デコードが効く。
  • 量子化は 速度・品質・メモリのトレードオフ。MLX 4bit は速いが品質注意、EXL3 は prefill が遅い、NVFP4 は GB10 で伸びにくい。
  • Flash-Next はチェックポイント選択が最重要:EXL3(暫定)→ MLX 4bit-MTP で prefill が約3.2倍(~857 → ~2,770 tok/s)。
  • Thinking ON/OFF で decode が約2倍変わる(prefill は不変)。
  • まずは --parallel を明示し、LiteLLM の並列度を揃える。これだけで体感が大きく変わります。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?