昇腾 910B NPUs 上的 Qwen3-30B-A3B 吞吐量优化 结论
Qwen3-30B-A3B 在昇腾 910B NPUs 上的吞吐量优化推荐配置:
推理服务命令 # 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 Total TPS: 1227.19 Mean TPOT(ms): 318.03 Total TPS: 4712.47 (+284.0%) Mean TPOT(ms): 964.45 短提示词 Total TPS: 5340.68 Mean TPOT(ms): 312.49 Total TPS: 15040.15 (+181.6%) Mean TPOT(ms): 1249.72 中等长度提示词 Total TPS: 7843.85 Mean TPOT(ms): 344.86 Total TPS: 15591.71 (+98.8%) Mean TPOT(ms): 194.54 长提示词 Total TPS: 5881.36 Mean TPOT(ms): 277.5 Total TPS: 13362.49 (+127.2%) Mean TPOT(ms): 130.97 超长提示词 Total TPS: 3704.57 Mean TPOT(ms): 503.84 Total TPS: 10830.52 (+192.4%) Mean TPOT(ms): 242.08
说明
基准测试未覆盖所有可能的优化组合。例如,我们会选择默认配置下表现最好的推理引擎作为后续调优的起点。这种剪枝方式得到的是局部最优解,未必是全局最优解。 其他优化方法取决于具体使用场景,包括最大批大小、调度配置、扩展 KV cache、CUDA graph、Torch Compile 等。本文结论可作为进一步针对性优化的起点。 测试基于特定的硬件和软件环境。推理引擎的改进可能带来新的结论。 如有遗漏或需要根据最新变化更新的内容,请告诉我们 。
优化目标 在高并发请求场景下实现高吞吐量。
实验环境 模型 Qwen/Qwen3-30B-A3B
硬件 单个昇腾 910B NPU。
引擎版本 vLLM-Ascend: v0.9.1 MindIE: 2.1RC1 基准测试数据集 ShareGPT 不同序列长度的随机数据集: 超长提示词:32000 输入 tokens,100 输出 tokens 长提示词:4000 输入 tokens,200 输出 tokens 中等长度提示词:2000 输入 tokens,100 输出 tokens 短提示词:128 输入 tokens,4 输出 tokens 基准测试脚本 使用 vLLM bench CLI 工具对模型性能进行基准测试。运行基准测试的命令如下:
# 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
推理服务脚本 # 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 中启用前缀缓存 推理服务脚本 # 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 中的 量化 推理服务脚本 # 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
==================================================
优化后的推理服务脚本 # 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
==================================================