NVIDIA H100 GPUs 上的 GPT-OSS-20B 吞吐量优化 结论
GPT-OSS-20B 在 H100 GPUs 上的吞吐量优化推荐配置:
推理服务命令 vllm serve openai/gpt-oss-20b --async-scheduling
优化前后的基准测试结果对比:
基准测试用例 基准配置(未做任何优化的 vLLM) 优化后 ShareGPT Total TPS: 16701.31 Mean TPOT(ms): 91.33 Total TPS: 19128.79 (+14.5%) Mean TPOT(ms): 86.81 短提示词 Total TPS: 28032.23 Mean TPOT(ms): 178.91 Total TPS: 32611.91 (+16.3%) Mean TPOT(ms): 75.14 中等长度提示词 Total TPS: 32113.65 Mean TPOT(ms): 149.76 Total TPS: 33149.54 (+3.2%) Mean TPOT(ms): 146.63 长提示词 Total TPS: 33236.17 Mean TPOT(ms): 184.26 Total TPS: 33823.34 (+1.8%) Mean TPOT(ms): 182.69 超长提示词 Total TPS: 29730.30 Mean TPOT(ms): 239.44 Total TPS: 29718.21 (-0.0%) Mean TPOT(ms): 239.49
说明
基准测试未覆盖所有可能的优化组合。例如,我们会选择默认配置下表现最好的推理引擎作为后续调优的起点。这种剪枝方式得到的是局部最优解,未必是全局最优解。 其他优化方法取决于具体使用场景,包括最大批大小、调度配置、扩展 KV cache、CUDA graph、Torch Compile 等。本文结论可作为进一步针对性优化的起点。 测试基于特定的硬件和软件环境。推理引擎的改进可能带来新的结论。 如有遗漏或需要根据最新变化更新的内容,请告诉我们 。
优化目标 在高并发请求场景下实现高吞吐量。
实验环境 模型 GPT-OSS-20B
硬件 单个 NVIDIA H100 SXM GPU。
引擎版本 vLLM: v0.11.0 SGLang: v0.5.4.post2 TensorRT-LLM : v1.2.0rc1 基准测试数据集 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 openai/gpt-oss-20b --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 openai/gpt-oss-20b --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 openai/gpt-oss-20b
基准测试结果 ============ Serving Benchmark Result ============
Successful requests: 1000
Benchmark duration (s): 24.81
Total input tokens: 215312
Total generated tokens: 193979
Request throughput (req/s): 40.30
Output token throughput (tok/s): 7817.03
Peak output token throughput (tok/s): 15953.00
Peak concurrent requests: 1000.00
Total Token throughput (tok/s): 16493.75
---------------Time to First Token----------------
Mean TTFT (ms): 4881.62
Median TTFT (ms): 4791.97
P99 TTFT (ms): 8166.01
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms): 91.00
Median TPOT (ms): 55.52
P99 TPOT (ms): 237.48
---------------Inter-token Latency----------------
Mean ITL (ms): 44.98
Median ITL (ms): 31.92
P99 ITL (ms): 248.25
==================================================
SGLang
推理服务脚本 python3 -m sglang.launch_server --model-path openai/gpt-oss-20b
基准测试结果 ============ Serving Benchmark Result ============
Successful requests: 1000
Benchmark duration (s): 73.05
Total input tokens: 215312
Total generated tokens: 195734
Request throughput (req/s): 13.69
Output token throughput (tok/s): 2679.49
Peak output token throughput (tok/s): 13804.00
Peak concurrent requests: 1000.00
Total Token throughput (tok/s): 5626.99
---------------Time to First Token----------------
Mean TTFT (ms): 10412.75
Median TTFT (ms): 10326.68
P99 TTFT (ms): 11920.92
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms): 314.53
Median TPOT (ms): 215.95
P99 TPOT (ms): 1052.78
---------------Inter-token Latency----------------
Mean ITL (ms): 161.29
Median ITL (ms): 47.78
P99 ITL (ms): 1929.13
==================================================
TensorRT-LLM
推理服务脚本 trtllm-serve openai/gpt-oss-20b
基准测试结果 ============ Serving Benchmark Result ============
Successful requests: 1000
Benchmark duration (s): 53.03
Total input tokens: 215312
Total generated tokens: 191726
Request throughput (req/s): 18.86
Output token throughput (tok/s): 3615.45
Peak output token throughput (tok/s): 18641.00
Peak concurrent requests: 1000.00
Total Token throughput (tok/s): 7675.67
---------------Time to First Token----------------
Mean TTFT (ms): 12248.87
Median TTFT (ms): 12024.20
P99 TTFT (ms): 22142.67
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms): 224.49
Median TPOT (ms): 134.32
P99 TPOT (ms): 552.52
---------------Inter-token Latency----------------
Mean ITL (ms): 51.52
Median ITL (ms): 0.07
P99 ITL (ms): 963.17
==================================================
结果:vLLM (16493.75 tok/s) > TensorRT-LLM (7675.67 tok/s) > SGLang(5626.99 tok/s)
2. vLLM 中的 异步调度 推理服务脚本 vllm serve openai/gpt-oss-20b --async-scheduling
基准测试结果 ============ Serving Benchmark Result ============
Successful requests: 1000
Benchmark duration (s): 21.39
Total input tokens: 215312
Total generated tokens: 193919
Request throughput (req/s): 46.74
Output token throughput (tok/s): 9064.40
Peak output token throughput (tok/s): 22786.00
Peak concurrent requests: 1000.00
Total Token throughput (tok/s): 19128.79
---------------Time to First Token----------------
Mean TTFT (ms): 4933.91
Median TTFT (ms): 4761.74
P99 TTFT (ms): 8029.82
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms): 86.81
Median TPOT (ms): 52.23
P99 TPOT (ms): 222.47
---------------Inter-token Latency----------------
Mean ITL (ms): 38.92
Median ITL (ms): 27.02
P99 ITL (ms): 236.29
==================================================
5. vLLM 中的 批处理 Token 数调优 推理服务脚本 vllm serve openai/gpt-oss-120b --async-scheduling --max-num-batched-tokens 16384
基准测试结果 ============ Serving Benchmark Result ============
Successful requests: 1000
Benchmark duration (s): 21.56
Total input tokens: 215312
Total generated tokens: 194591
Request throughput (req/s): 46.39
Output token throughput (tok/s): 9027.14
Peak output token throughput (tok/s): 21433.00
Peak concurrent requests: 1000.00
Total Token throughput (tok/s): 19015.54
---------------Time to First Token----------------
Mean TTFT (ms): 4957.11
Median TTFT (ms): 4698.76
P99 TTFT (ms): 7875.07
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms): 104.05
Median TPOT (ms): 46.28
P99 TPOT (ms): 443.08
---------------Inter-token Latency----------------
Mean ITL (ms): 38.42
Median ITL (ms): 24.01
P99 ITL (ms): 448.17
==================================================
优化选项汇总 优化选项 吞吐量提升 引擎选择 - 异步调度 +16.0% 批处理 Token 数 -
其他基准测试用例 我们进一步对优化后的配置进行了基准测试,评估其在不同工作负载下的泛化表现。
基准配置的推理服务脚本 vllm serve openai/gpt-oss-20b
基准配置的测试结果 # random 32K input
============ Serving Benchmark Result ============
Successful requests: 100
Benchmark duration ( s) : 107 .95
Total input tokens: 3200000
Total generated tokens: 9350
Request throughput ( req/s) : 0 .93
Output token throughput ( tok/s) : 86 .62
Total Token throughput ( tok/s) : 29730 .30
---------------Time to First Token----------------
Mean TTFT ( ms) : 53687 .69
Median TTFT ( ms) : 53539 .25
P99 TTFT ( ms) : 105655 .63
-----Time per Output Token ( excl. 1st token) ------
Mean TPOT ( ms) : 239 .44
Median TPOT ( ms) : 273 .86
P99 TPOT ( ms) : 275 .66
---------------Inter-token Latency----------------
Mean ITL ( ms) : 247 .74
Median ITL ( ms) : 266 .37
P99 ITL ( ms) : 513 .87
==================================================
# random 4K input
============ Serving Benchmark Result ============
Successful requests: 500
Benchmark duration ( s) : 61 .73
Total input tokens: 1999249
Total generated tokens: 52309
Request throughput ( req/s) : 8 .10
Output token throughput ( tok/s) : 847 .43
Total Token throughput ( tok/s) : 33236 .17
---------------Time to First Token----------------
Mean TTFT ( ms) : 31245 .12
Median TTFT ( ms) : 30820 .97
P99 TTFT ( ms) : 58702 .17
-----Time per Output Token ( excl. 1st token) ------
Mean TPOT ( ms) : 184 .26
Median TPOT ( ms) : 225 .55
P99 TPOT ( ms) : 230 .22
---------------Inter-token Latency----------------
Mean ITL ( ms) : 192 .92
Median ITL ( ms) : 227 .42
P99 ITL ( ms) : 458 .94
==================================================
# random 2K input
============ Serving Benchmark Result ============
Successful requests: 500
Benchmark duration ( s) : 32 .58
Total input tokens: 999120
Total generated tokens: 47022
Request throughput ( req/s) : 15 .35
Output token throughput ( tok/s) : 1443 .44
Total Token throughput ( tok/s) : 32113 .65
---------------Time to First Token----------------
Mean TTFT ( ms) : 16515 .86
Median TTFT ( ms) : 16363 .96
P99 TTFT ( ms) : 30359 .34
-----Time per Output Token ( excl. 1st token) ------
Mean TPOT ( ms) : 149 .76
Median TPOT ( ms) : 159 .20
P99 TPOT ( ms) : 225 .79
---------------Inter-token Latency----------------
Mean ITL ( ms) : 159 .21
Median ITL ( ms) : 220 .69
P99 ITL ( ms) : 450 .04
==================================================
# random 128 input
============ Serving Benchmark Result ============
Successful requests: 1000
Benchmark duration ( s) : 4 .70
Total input tokens: 127755
Total generated tokens: 4000
Request throughput ( req/s) : 212 .76
Output token throughput ( tok/s) : 851 .04
Total Token throughput ( tok/s) : 28032 .23
---------------Time to First Token----------------
Mean TTFT ( ms) : 3174 .14
Median TTFT ( ms) : 2892 .24
P99 TTFT ( ms) : 4415 .25
-----Time per Output Token ( excl. 1st token) ------
Mean TPOT ( ms) : 178 .91
Median TPOT ( ms) : 208 .03
P99 TPOT ( ms) : 246 .08
---------------Inter-token Latency----------------
Mean ITL ( ms) : 274 .82
Median ITL ( ms) : 228 .45
P99 ITL ( ms) : 509 .42
==================================================
优化后的推理服务脚本 vllm serve openai/gpt-oss-20b --async-scheduling
优化后的测试结果 # random 32K input
============ Serving Benchmark Result ============
Successful requests: 100
Benchmark duration ( s) : 107 .99
Total input tokens: 3200000
Total generated tokens: 9404
Request throughput ( req/s) : 0 .93
Output token throughput ( tok/s) : 87 .08
Peak output token throughput ( tok/s) : 1196 .00
Peak concurrent requests: 100 .00
Total Token throughput ( tok/s) : 29718 .21
---------------Time to First Token----------------
Mean TTFT ( ms) : 53565 .41
Median TTFT ( ms) : 53436 .03
P99 TTFT ( ms) : 105793 .87
-----Time per Output Token ( excl. 1st token) ------
Mean TPOT ( ms) : 239 .49
Median TPOT ( ms) : 275 .30
P99 TPOT ( ms) : 276 .86
---------------Inter-token Latency----------------
Mean ITL ( ms) : 247 .68
Median ITL ( ms) : 269 .91
P99 ITL ( ms) : 515 .55
==================================================
# random 4K input
============ Serving Benchmark Result ============
Successful requests: 500
Benchmark duration ( s) : 60 .67
Total input tokens: 1999249
Total generated tokens: 52966
Request throughput ( req/s) : 8 .24
Output token throughput ( tok/s) : 872 .95
Peak output token throughput ( tok/s) : 7931 .00
Peak concurrent requests: 500 .00
Total Token throughput ( tok/s) : 33823 .34
---------------Time to First Token----------------
Mean TTFT ( ms) : 30513 .46
Median TTFT ( ms) : 30091 .29
P99 TTFT ( ms) : 58206 .28
-----Time per Output Token ( excl. 1st token) ------
Mean TPOT ( ms) : 182 .69
Median TPOT ( ms) : 224 .54
P99 TPOT ( ms) : 229 .32
---------------Inter-token Latency----------------
Mean ITL ( ms) : 191 .65
Median ITL ( ms) : 226 .01
P99 ITL ( ms) : 458 .93
==================================================
# random 2K input
============ Serving Benchmark Result ============
Successful requests: 500
Benchmark duration ( s) : 31 .55
Total input tokens: 999120
Total generated tokens: 46814
Request throughput ( req/s) : 15 .85
Output token throughput ( tok/s) : 1483 .71
Peak output token throughput ( tok/s) : 12476 .00
Peak concurrent requests: 500 .00
Total Token throughput ( tok/s) : 33149 .54
---------------Time to First Token----------------
Mean TTFT ( ms) : 16044 .42
Median TTFT ( ms) : 16014 .33
P99 TTFT ( ms) : 29736 .08
-----Time per Output Token ( excl. 1st token) ------
Mean TPOT ( ms) : 146 .63
Median TPOT ( ms) : 154 .39
P99 TPOT ( ms) : 223 .69
---------------Inter-token Latency----------------
Mean ITL ( ms) : 155 .89
Median ITL ( ms) : 216 .15
P99 ITL ( ms) : 447 .46
==================================================
# random 128 input
============ Serving Benchmark Result ============
Successful requests: 1000
Benchmark duration ( s) : 4 .04
Total input tokens: 127755
Total generated tokens: 4000
Request throughput ( req/s) : 247 .52
Output token throughput ( tok/s) : 990 .08
Peak output token throughput ( tok/s) : 1364 .00
Peak concurrent requests: 1000 .00
Total Token throughput ( tok/s) : 32611 .91
---------------Time to First Token----------------
Mean TTFT ( ms) : 2884 .78
Median TTFT ( ms) : 2641 .45
P99 TTFT ( ms) : 3879 .45
-----Time per Output Token ( excl. 1st token) ------
Mean TPOT ( ms) : 75 .14
Median TPOT ( ms) : 16 .98
P99 TPOT ( ms) : 221 .60
---------------Inter-token Latency----------------
Mean ITL ( ms) : 156 .10
Median ITL ( ms) : 151 .36
P99 ITL ( ms) : 452 .14
==================================================