見出し画像

Qwen3.6 の MTP で VRAM 容量以上のサイズのモデルで生成速度を検証してみた

結果

VRAM 容量超えた Dense モデル

  • unsloth/Qwen3.6-27B-GGUF-MTP:UD-Q4_K_XL

  • MTP が 1.71 倍 早い結果。

    • 18.85 t/s10.99 t/s の差は、ギリギリ実用出来るか、出来ないかの差がある(主観)。とは言うものの次の特徴が重要。実用できない側に傾くか。

  • 徐々に早くなっていくので、生成トークンが少ないとここまでの差は出ない。これは、投機的デコーディングの特徴だろう。

VRAM 容量超えた MoE モデル

  • unsloth/Qwen3.6-35B-A3B-GGUF-MTP:UD-Q6_K_XL

  • MTP が 1.19 倍 早い結果。

    • 62.41 t/s52.44 t/s の差は、どっちでも良いと思える差(主観)。

VRAM 容量超えた Dense モデル

このマシンは VRAM 16 GB、モデルは 17.9 GB ( + 931 MB ) だけで、大幅なオーバー。さらに KV キャッシュもかかる。

llama-server 起動

`-ot` (--override-tensor) オプションで、重い FFN テンソルをCPUに追い出す。

./llama.cpp/llama-server \
  -hf unsloth/Qwen3.6-27B-GGUF-MTP:UD-Q4_K_XL \
  -ngl 99 -c 32768 -fa on -np 1 \
  --spec-type mtp --spec-draft-n-max 3 \
  -ctk q4_0 -ctv q4_0 \
  --temp 0.6 --top-p 0.95 --top-k 20 --min-p 0.0 \
  --presence-penalty 0.0 --repeat-penalty 1.0 \
  --chat-template-kwargs '{"preserve_thinking": true}' \
  -ot "blk\.(3[0-9]|4[0-9]|5[0-9]|6[0-4])\.ffn.*=CPU" --mlock

VRAM 15.36 GB

llama-server の UI で実行

スーパーマリオブラザーズを index.html のみで作成して

18.85 t/s ( 11,228 tokens / 9min 55s )

prompt eval time =     794.91 ms /    24 tokens (   33.12 ms per token,    30.19 tokens per second)
       eval time =  595774.04 ms / 11228 tokens (   53.06 ms per token,    18.85 tokens per second)
      total time =  596568.95 ms / 11252 tokens

改修

ジャンプ力が足りず、ブロックを下から叩け無いし、超えられないパイプがある。ジャンプ力を上げる改修して。改修箇所の Diff があれば良いです。

14.48 t/s ( 1,172 tokens / 1min 20s )

prompt eval time =   14423.97 ms / 11302 tokens (    1.28 ms per token,   783.56 tokens per second)
       eval time =   80962.38 ms /  1172 tokens (   69.08 ms per token,    14.48 tokens per second)
      total time =   95386.34 ms / 12474 tokens

再度改修

レンガも?ブロックも、下から叩いても何も起こらない。少しの修正で直るなら、修正箇所の Diff を教えて。

18.02 t/s ( 548 tokens / 30s )

prompt eval time =     541.92 ms /    40 tokens (   13.55 ms per token,    73.81 tokens per second)
       eval time =   30413.74 ms /   548 tokens (   55.50 ms per token,    18.02 tokens per second)
      total time =   30955.66 ms /   588 tokens

生成ソースコード

比較対象

公式 llama.cpp の llama-server を起動。

./build/bin/llama-server \
  -hf unsloth/Qwen3.6-27B-GGUF:UD-Q4_K_XL \
  -ngl 99 -c 32768 -fa on -np 1  -ctk q4_0 -ctv q4_0 \
  --temp 0.6 --top-p 0.95 --top-k 20 --min-p 0.0 \
  --presence-penalty 0.0 --repeat-penalty 1.0 \
  --chat-template-kwargs '{"preserve_thinking": true}' \
  -ot "blk\.(4[2-9]|5[0-9]|6[0-3])\.ffn.*=CPU" --mlock

10.99 t/s ( 10,355 tokens / 15min 41s )

prompt eval time =     555.46 ms /    24 tokens (   23.14 ms per token,    43.21 tokens per second)
       eval time =  941875.14 ms / 10355 tokens (   90.96 ms per token,    10.99 tokens per second)
      total time =  942430.60 ms / 10379 tokens

VRAM 容量超えた MoE モデル

llama-server 起動

./llama.cpp/llama-server \
  -hf unsloth/Qwen3.6-35B-A3B-GGUF-MTP:UD-Q6_K_XL \
  -ngl 99 -c 65536 -fa on -np 1 \
  --spec-type mtp --spec-draft-n-max 3 \
  --n-cpu-moe 30

VRAM 15.03 GB

llama-server の UI で実行

Flappy Bird を index.html のみで作成して

62.41 t/s ( 6,761 tokens / 1min 48s )

prompt eval time =     271.58 ms /    21 tokens (   12.93 ms per token,    77.33 tokens per second)
       eval time =  108333.99 ms /  6761 tokens (   16.02 ms per token,    62.41 tokens per second)
      total time =  108605.57 ms /  6782 tokens

生成ソースコード

比較対象

公式 llama.cpp の llama-server を起動。

./build/bin/llama-server \
  -hf unsloth/Qwen3.6-35B-A3B-GGUF:UD-Q6_K_XL \
  -ngl 99 -c 65536 -fa on -np 1 \
  --n-cpu-moe 26

52.44 t/s ( 5,969 tokens / 1min 53s )

prompt eval time =     260.02 ms /    21 tokens (   12.38 ms per token,    80.76 tokens per second)
       eval time =  113832.81 ms /  5969 tokens (   19.07 ms per token,    52.44 tokens per second)
      total time =  114092.83 ms /  5990 tokens

結論

2 枚目のグラボ欲しい。


いいなと思ったら応援しよう!