コンテンツにスキップ

ASCEND 910B NPU 上での Qwen3-30B-A3B のスループット最適化

結論

qwen3-30b-a3b-910b

ASCEND 910B NPU 上で Qwen3-30B-A3B のスループットを最適化するための推奨設定:

推論サービスのコマンド
1
2
3
# This is a simplified vLLM-like command. GPUStack maps arguments to the
# corresponding MindIE JSON configuration and runs with mindieservice_daemon.
mindie serve Qwen/Qwen3-30B-A3B

最適化前後のベンチマーク結果の比較:

ベンチマークケース 基準設定(最適化なしの vLLM) 最適化後
ShareGPT 合計 TPS: 1227.19
平均 TPOT(ms): 318.03
合計 TPS: 4712.47 (+284.0%)
平均 TPOT(ms): 964.45
短いプロンプト 合計 TPS: 5340.68
平均 TPOT(ms): 312.49
合計 TPS: 15040.15 (+181.6%)
平均 TPOT(ms): 1249.72
中程度のプロンプト 合計 TPS: 7843.85
平均 TPOT(ms): 344.86
合計 TPS: 15591.71 (+98.8%)
平均 TPOT(ms): 194.54
長いプロンプト 合計 TPS: 5881.36
平均 TPOT(ms): 277.5
合計 TPS: 13362.49 (+127.2%)
平均 TPOT(ms): 130.97
非常に長いプロンプト 合計 TPS: 3704.57
平均 TPOT(ms): 503.84
合計 TPS: 10830.52 (+192.4%)
平均 TPOT(ms): 242.08

注記

  1. 本ベンチマークは、考えられるすべての最適化の組み合わせを網羅していません。たとえば、デフォルト設定で最も性能が高い推論エンジンを選び、それを追加調整の出発点としています。このような候補の絞り込みで得られるのは局所最適解であり、大域最適解とは限りません。
  2. 最大バッチサイズ、スケジューリング設定、拡張 KV キャッシュ、CUDA graph、Torch Compile など、利用シナリオに応じた最適化もあります。本書の結論は、用途に合わせてさらに最適化するための出発点として利用できます。
  3. 本テストは特定のハードウェアとソフトウェアの構成で実施しています。推論エンジンの進化により、結論が変わる可能性があります。

記載漏れや最新の変更を反映すべき点があれば、お知らせください。

最適化の目標

高並列度のリクエストで高スループットを実現します。

実験環境

モデル

Qwen/Qwen3-30B-A3B

ハードウェア

単一の Ascend 910B NPU。

エンジンのバージョン

  • vLLM-Ascend: v0.9.1
  • MindIE: 2.1RC1

ベンチマークデータセット

  1. ShareGPT
  2. シーケンス長を変えたランダムデータセット:
    • 非常に長いプロンプト: 32000 入力トークン, 100 出力トークン
    • 長いプロンプト: 4000 入力トークン, 200 出力トークン
    • 中程度のプロンプト: 2000 入力トークン, 100 出力トークン
    • 短いプロンプト: 128 入力トークン, 4 出力トークン

ベンチマークスクリプト

モデルの性能評価には vLLM bench CLI ツールを使用します。ベンチマークを実行するコマンドは次のとおりです:

1
2
3
4
5
6
7
8
# Prepare the ShareGPT dataset
wget https://huggingface.co/datasets/anon8231489123/ShareGPT_Vicuna_unfiltered/resolve/main/ShareGPT_V3_unfiltered_cleaned_split.json

# Benchmark on ShareGPT dataset
vllm bench serve --model Qwen/Qwen3-30B-A3B --backend openai-chat --endpoint /v1/chat/completions --dataset-name sharegpt --dataset-path ShareGPT_V3_unfiltered_cleaned_split.json --num-prompts 1000

# Benchmark on random dataset (fixed seed for reproducibility)
vllm bench serve --model Qwen/Qwen3-30B-A3B --backend openai-chat --endpoint /v1/chat/completions --dataset-name random --random-input-len 4000 --random-output-len 200 --num-prompts 500 --seed 42

実験結果

1. 推論エンジンの選択

vLLM

推論サービスのスクリプト
vllm serve Qwen/Qwen3-30B-A3B -tp 2
ベンチマーク結果
============ Serving Benchmark Result ============
Successful requests:                     1000
Benchmark duration (s):                  341.49
Total input tokens:                      217393
Total generated tokens:                  201675
Request throughput (req/s):              2.93
Output token throughput (tok/s):         590.58
Peak output token throughput (tok/s):    1283.00
Peak concurrent requests:                1000.00
Total Token throughput (tok/s):          1227.19
---------------Time to First Token----------------
Mean TTFT (ms):                          91791.47
Median TTFT (ms):                        85430.73
P99 TTFT (ms):                           217017.19
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms):                          318.03
Median TPOT (ms):                        326.12
P99 TPOT (ms):                           376.59
---------------Inter-token Latency----------------
Mean ITL (ms):                           302.02
Median ITL (ms):                         245.14
P99 ITL (ms):                            557.35
==================================================

MindIE

推論サービスのスクリプト
1
2
3
# This is a simplified vLLM-like command. GPUStack maps arguments to the
# corresponding MindIE JSON configuration and runs with mindieservice_daemon.
mindie serve Qwen3-30B-A3B
ベンチマーク結果
============ Serving Benchmark Result ============
Successful requests:                     1000
Benchmark duration (s):                  88.95
Total input tokens:                      217393
Total generated tokens:                  201779
Request throughput (req/s):              11.24
Output token throughput (tok/s):         2268.46
Peak output token throughput (tok/s):    3394.00
Peak concurrent requests:                1000.00
Total Token throughput (tok/s):          4712.47
---------------Time to First Token----------------
Mean TTFT (ms):                          6315.01
Median TTFT (ms):                        6421.94
P99 TTFT (ms):                           11305.60
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms):                          964.45
Median TPOT (ms):                        242.38
P99 TPOT (ms):                           8546.71
---------------Inter-token Latency----------------
Mean ITL (ms):                           183.79
Median ITL (ms):                         60.42
P99 ITL (ms):                            74.07
==================================================

結果: MineIE (4712.47 tok/s) > vLLM (1227.19 tok/s)

2. プレフィックスキャッシュの有効化:MindIE

推論サービスのスクリプト
1
2
3
# This is a simplified vLLM-like command. GPUStack maps arguments to the
# corresponding MindIE JSON configuration and runs with mindieservice_daemon.
mindie serve Qwen3-30B-A3B --enable-prefix-caching
ベンチマーク結果
# Crash, not supported for the model

3. 量子化:MindIE

推論サービスのスクリプト
1
2
3
# This is a simplified vLLM-like command. GPUStack maps arguments to the
# corresponding MindIE JSON configuration and runs with mindieservice_daemon.
mindie serve vllm-ascend/Qwen3-8B-W8A8
ベンチマーク結果
============ Serving Benchmark Result ============
Successful requests:                     1000
Benchmark duration (s):                  92.29
Total input tokens:                      217393
Total generated tokens:                  201586
Request throughput (req/s):              10.84
Output token throughput (tok/s):         2184.30
Peak output token throughput (tok/s):    3392.00
Peak concurrent requests:                1000.00
Total Token throughput (tok/s):          4539.88
---------------Time to First Token----------------
Mean TTFT (ms):                          5588.80
Median TTFT (ms):                        4708.65
P99 TTFT (ms):                           18446.14
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms):                          988.22
Median TPOT (ms):                        240.48
P99 TPOT (ms):                           11241.85
---------------Inter-token Latency----------------
Mean ITL (ms):                           195.17
Median ITL (ms):                         62.16
P99 ITL (ms):                            226.37
==================================================

最適化項目の一覧

最適化項目 スループット改善率
エンジンの選択 +284.0%
プレフィックスキャッシュ -
量子化 -

その他のベンチマークケース

さらに、さまざまなワークロードに対する汎用性を評価するため、最適化済み設定でベンチマークを実施しました。

基準設定の推論スクリプト
vllm serve Qwen/Qwen3-30B-A3B -tp 2
基準設定のベンチマーク結果
# random 32K input
============ Serving Benchmark Result ============
Successful requests:                     100
Benchmark duration (s):                  866.50
Total input tokens:                      3200000
Total generated tokens:                  10000
Request throughput (req/s):              0.12
Output token throughput (tok/s):         11.54
Peak output token throughput (tok/s):    117.00
Peak concurrent requests:                100.00
Total Token throughput (tok/s):          3704.57
---------------Time to First Token----------------
Mean TTFT (ms):                          442404.81
Median TTFT (ms):                        440136.40
P99 TTFT (ms):                           853640.24
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms):                          503.84
Median TPOT (ms):                        498.47
P99 TPOT (ms):                           998.84
---------------Inter-token Latency----------------
Mean ITL (ms):                           498.80
Median ITL (ms):                         125.10
P99 ITL (ms):                            177.10
==================================================

# random 4K input
============ Serving Benchmark Result ============
Successful requests:                     500
Benchmark duration (s):                  357.03
Total input tokens:                      2000000
Total generated tokens:                  99842
Request throughput (req/s):              1.40
Output token throughput (tok/s):         279.64
Peak output token throughput (tok/s):    864.00
Peak concurrent requests:                500.00
Total Token throughput (tok/s):          5881.36
---------------Time to First Token----------------
Mean TTFT (ms):                          156755.15
Median TTFT (ms):                        163311.37
P99 TTFT (ms):                           314736.64
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms):                          277.51
Median TPOT (ms):                        273.18
P99 TPOT (ms):                           452.09
---------------Inter-token Latency----------------
Mean ITL (ms):                           276.20
Median ITL (ms):                         243.71
P99 ITL (ms):                            499.20
==================================================

# random 2K input
============ Serving Benchmark Result ============
Successful requests:                     500
Benchmark duration (s):                  133.86
Total input tokens:                      1000000
Total generated tokens:                  50000
Request throughput (req/s):              3.74
Output token throughput (tok/s):         373.52
Peak output token throughput (tok/s):    1080.00
Peak concurrent requests:                500.00
Total Token throughput (tok/s):          7843.85
---------------Time to First Token----------------
Mean TTFT (ms):                          56434.48
Median TTFT (ms):                        62622.42
P99 TTFT (ms):                           117368.72
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms):                          344.86
Median TPOT (ms):                        350.15
P99 TPOT (ms):                           667.15
---------------Inter-token Latency----------------
Mean ITL (ms):                           341.55
Median ITL (ms):                         240.26
P99 ITL (ms):                            1189.67
==================================================

# random 128 input
============ Serving Benchmark Result ============
Successful requests:                     1000
Benchmark duration (s):                  24.72
Total input tokens:                      128000
Total generated tokens:                  4000
Request throughput (req/s):              40.46
Output token throughput (tok/s):         161.84
Peak output token throughput (tok/s):    768.00
Peak concurrent requests:                1000.00
Total Token throughput (tok/s):          5340.68
---------------Time to First Token----------------
Mean TTFT (ms):                          19130.06
Median TTFT (ms):                        17860.56
P99 TTFT (ms):                           23751.62
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms):                          312.49
Median TPOT (ms):                        308.02
P99 TPOT (ms):                           338.42
---------------Inter-token Latency----------------
Mean ITL (ms):                           234.36
Median ITL (ms):                         269.04
P99 ITL (ms):                            465.28
==================================================

# ShareGPT batch size 4
============ Serving Benchmark Result ============
Successful requests:                     1000
Maximum request concurrency:             4
Benchmark duration (s):                  6271.85
Total input tokens:                      217393
Total generated tokens:                  201847
Request throughput (req/s):              0.16
Output token throughput (tok/s):         32.18
Peak output token throughput (tok/s):    40.00
Peak concurrent requests:                7.00
Total Token throughput (tok/s):          66.84
---------------Time to First Token----------------
Mean TTFT (ms):                          359.99
Median TTFT (ms):                        357.20
P99 TTFT (ms):                           445.74
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms):                          122.71
Median TPOT (ms):                        122.70
P99 TPOT (ms):                           134.22
---------------Inter-token Latency----------------
Mean ITL (ms):                           122.00
Median ITL (ms):                         120.56
P99 ITL (ms):                            236.94
==================================================
最適化後の推論スクリプト
1
2
3
# This is a simplified vLLM-like command. GPUStack maps arguments to the
# corresponding MindIE JSON configuration and runs with mindieservice_daemon.
mindie serve Qwen3-30B-A3B
最適化後のベンチマーク結果
# random 32K input
============ Serving Benchmark Result ============
Successful requests:                     100
Benchmark duration (s):                  296.36
Total input tokens:                      3200000
Total generated tokens:                  9693
Request throughput (req/s):              0.34
Output token throughput (tok/s):         32.71
Peak output token throughput (tok/s):    330.00
Peak concurrent requests:                100.00
Total Token throughput (tok/s):          10830.52
---------------Time to First Token----------------
Mean TTFT (ms):                          147133.58
Median TTFT (ms):                        147851.57
P99 TTFT (ms):                           289974.37
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms):                          242.08
Median TPOT (ms):                        232.74
P99 TPOT (ms):                           741.49
---------------Inter-token Latency----------------
Mean ITL (ms):                           225.71
Median ITL (ms):                         46.46
P99 ITL (ms):                            56.81
==================================================

# random 4K input
============ Serving Benchmark Result ============
Successful requests:                     500
Benchmark duration (s):                  157.15
Total input tokens:                      2000000
Total generated tokens:                  99961
Request throughput (req/s):              3.18
Output token throughput (tok/s):         636.07
Peak output token throughput (tok/s):    2142.00
Peak concurrent requests:                500.00
Total Token throughput (tok/s):          13362.49
---------------Time to First Token----------------
Mean TTFT (ms):                          70716.71
Median TTFT (ms):                        74982.88
P99 TTFT (ms):                           148427.09
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms):                          130.97
Median TPOT (ms):                        134.98
P99 TPOT (ms):                           208.16
---------------Inter-token Latency----------------
Mean ITL (ms):                           130.95
Median ITL (ms):                         63.84
P99 ITL (ms):                            489.52
==================================================

# random 2K input
============ Serving Benchmark Result ============
Successful requests:                     500
Benchmark duration (s):                  67.34
Total input tokens:                      1000000
Total generated tokens:                  49975
Request throughput (req/s):              7.42
Output token throughput (tok/s):         742.11
Peak output token throughput (tok/s):    3000.00
Peak concurrent requests:                500.00
Total Token throughput (tok/s):          15591.71
---------------Time to First Token----------------
Mean TTFT (ms):                          29078.68
Median TTFT (ms):                        32203.66
P99 TTFT (ms):                           62077.78
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms):                          194.54
Median TPOT (ms):                        192.07
P99 TPOT (ms):                           358.38
---------------Inter-token Latency----------------
Mean ITL (ms):                           194.46
Median ITL (ms):                         68.54
P99 ITL (ms):                            4496.71
==================================================

# random 128 input
============ Serving Benchmark Result ============
Successful requests:                     1000
Benchmark duration (s):                  8.78
Total input tokens:                      128000
Total generated tokens:                  4000
Request throughput (req/s):              113.94
Output token throughput (tok/s):         455.76
Peak output token throughput (tok/s):    2511.00
Peak concurrent requests:                1000.00
Total Token throughput (tok/s):          15040.15
---------------Time to First Token----------------
Mean TTFT (ms):                          4491.88
Median TTFT (ms):                        4467.47
P99 TTFT (ms):                           7693.24
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms):                          1249.72
Median TPOT (ms):                        1258.92
P99 TPOT (ms):                           2252.88
---------------Inter-token Latency----------------
Mean ITL (ms):                           1249.72
Median ITL (ms):                         54.67
P99 ITL (ms):                            6378.56
==================================================

# ShareGPT batch size 4
============ Serving Benchmark Result ============
Successful requests:                     1000
Maximum request concurrency:             4
Benchmark duration (s):                  1292.33
Total input tokens:                      217393
Total generated tokens:                  201773
Request throughput (req/s):              0.77
Output token throughput (tok/s):         156.13
Peak output token throughput (tok/s):    200.00
Peak concurrent requests:                9.00
Total Token throughput (tok/s):          324.35
---------------Time to First Token----------------
Mean TTFT (ms):                          112.38
Median TTFT (ms):                        111.05
P99 TTFT (ms):                           154.06
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms):                          25.42
Median TPOT (ms):                        24.47
P99 TPOT (ms):                           35.05
---------------Inter-token Latency----------------
Mean ITL (ms):                           25.08
Median ITL (ms):                         23.05
P99 ITL (ms):                            79.54
==================================================