NVIDIA H100 GPU 上での GPT-OSS-20B のスループット最適化 結論
H100 GPU 上で GPT-OSS-20B のスループットを最適化するための推奨設定:
推論サービスのコマンド vllm serve openai/gpt-oss-20b --async-scheduling
最適化前後のベンチマーク結果の比較:
ベンチマークケース 基準設定(最適化なしの vLLM) 最適化後 ShareGPT 合計 TPS: 16701.31 平均 TPOT(ms): 91.33 合計 TPS: 19128.79 (+14.5%) 平均 TPOT(ms): 86.81 短いプロンプト 合計 TPS: 28032.23 平均 TPOT(ms): 178.91 合計 TPS: 32611.91 (+16.3%) 平均 TPOT(ms): 75.14 中程度のプロンプト 合計 TPS: 32113.65 平均 TPOT(ms): 149.76 合計 TPS: 33149.54 (+3.2%) 平均 TPOT(ms): 146.63 長いプロンプト 合計 TPS: 33236.17 平均 TPOT(ms): 184.26 合計 TPS: 33823.34 (+1.8%) 平均 TPOT(ms): 182.69 非常に長いプロンプト 合計 TPS: 29730.30 平均 TPOT(ms): 239.44 合計 TPS: 29718.21 (-0.0%) 平均 TPOT(ms): 239.49
注記
本ベンチマークは、考えられるすべての最適化の組み合わせを網羅していません。たとえば、デフォルト設定で最も性能が高い推論エンジンを選び、それを追加調整の出発点としています。このような候補の絞り込みで得られるのは局所最適解であり、大域最適解とは限りません。 最大バッチサイズ、スケジューリング設定、拡張 KV キャッシュ、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 入力トークン, 100 出力トークン 長いプロンプト: 4000 入力トークン, 200 出力トークン 中程度のプロンプト: 2000 入力トークン, 100 出力トークン 短いプロンプト: 128 入力トークン, 4 出力トークン ベンチマークスクリプト モデルの性能評価には 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 推論サービスのスクリプト 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% バッチ内トークン数 -
その他のベンチマークケース さらに、さまざまなワークロードに対する汎用性を評価するため、最適化済み設定でベンチマークを実施しました。
基準設定の推論スクリプト 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
==================================================