コンテンツにスキップ

NVIDIA H200 GPU 上での GLM-4.x のスループット最適化

結論

glm-4.6-h200

H200 GPU 上で GLM-4.x (4.5, 4.6、4.7) のスループットを最適化するための推奨設定:

推論サービスのコマンド
python3 -m sglang.launch_server --model zai-org/GLM-4.6-FP8 --tp 4 --tool-call-parser glm --reasoning-parser glm45

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

ベンチマークケース 基準設定(最適化なしの vLLM) 最適化後(GPU 数を同数に換算)
ShareGPT 合計 TPS: 6030.90
平均 TPOT(ms): 197.85
合計 TPS: 7081.34x2 (+134.8%)
平均 TPOT(ms): 256.43
短いプロンプト 合計 TPS: 9497.19
平均 TPOT(ms): 351.26
合計 TPS: 21234.81x2 (+347.2%)
平均 TPOT(ms): 800.25
中程度のプロンプト 合計 TPS: 17214.85
平均 TPOT(ms): 269.75
合計 TPS: 17363.22x2 (+101.7%)
平均 TPOT(ms): 144.82
長いプロンプト 合計 TPS: 16714.91
平均 TPOT(ms): 205.69
合計 TPS: 14979.90x2 (+79.2%)
平均 TPOT(ms): 97.74
非常に長いプロンプト 合計 TPS: 15066.09
平均 TPOT(ms): 479.17
合計 TPS: 12223.53x2 (+62.3%)
平均 TPOT(ms): 191.61

注記

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

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

最適化の目標

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

実験環境

モデル

zai-org/GLM-4.6

ハードウェア

単一ノードに 8 × NVIDIA H200 SXM GPU。

エンジンのバージョン

  • vLLM: v0.11.0
  • SGLang: v0.5.3
  • TensorRT-LLM: v1.0.0

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

  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 zai-org/GLM-4.6 --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 zai-org/GLM-4.6 --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 zai-org/GLM-4.6 -tp 8
ベンチマーク結果
============ Serving Benchmark Result ============
Successful requests:                     1000
Benchmark duration (s):                  68.67
Total input tokens:                      214465
Total generated tokens:                  199702
Request throughput (req/s):              14.56
Output token throughput (tok/s):         2907.97
Peak output token throughput (tok/s):    7158.00
Peak concurrent requests:                1000.00
Total Token throughput (tok/s):          6030.90
---------------Time to First Token----------------
Mean TTFT (ms):                          15339.53
Median TTFT (ms):                        15377.50
P99 TTFT (ms):                           21078.26
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms):                          197.85
Median TPOT (ms):                        145.75
P99 TPOT (ms):                           411.50
---------------Inter-token Latency----------------
Mean ITL (ms):                           109.47
Median ITL (ms):                         68.98
P99 ITL (ms):                            413.20
==================================================

SGLang

推論サービスのスクリプト
python3 -m sglang.launch_server --model-path zai-org/GLM-4.6 --host 0.0.0.0 --port 8000 --tp-size 8
ベンチマーク結果
============ Serving Benchmark Result ============
Successful requests:                     1000
Benchmark duration (s):                  59.37
Total input tokens:                      214465
Total generated tokens:                  199904
Request throughput (req/s):              16.84
Output token throughput (tok/s):         3366.90
Peak output token throughput (tok/s):    7570.00
Peak concurrent requests:                1000.00
Total Token throughput (tok/s):          6979.05
---------------Time to First Token----------------
Mean TTFT (ms):                          6044.62
Median TTFT (ms):                        5851.20
P99 TTFT (ms):                           10817.86
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms):                          282.87
Median TPOT (ms):                        148.97
P99 TPOT (ms):                           1610.70
---------------Inter-token Latency----------------
Mean ITL (ms):                           113.29
Median ITL (ms):                         64.03
P99 ITL (ms):                            369.42
==================================================

結果: SGLang(6979.05 tok/s) > vLLM (6030.90 tok/s) > TensorRT-LLM (サポート対象外)

2. 量子化:SGLang

FP8

推論サービスのスクリプト
python3 -m sglang.launch_server --model-path zai-org/GLM-4.6-FP8 --host 0.0.0.0 --port 8000 --tp-size 8
ベンチマーク結果
============ Serving Benchmark Result ============
Successful requests:                     1000
Benchmark duration (s):                  52.72
Total input tokens:                      214465
Total generated tokens:                  199904
Request throughput (req/s):              18.97
Output token throughput (tok/s):         3791.55
Peak output token throughput (tok/s):    8987.00
Peak concurrent requests:                1000.00
Total Token throughput (tok/s):          7859.29
---------------Time to First Token----------------
Mean TTFT (ms):                          5085.56
Median TTFT (ms):                        4847.02
P99 TTFT (ms):                           10068.82
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms):                          271.63
Median TPOT (ms):                        144.47
P99 TPOT (ms):                           1542.73
---------------Inter-token Latency----------------
Mean ITL (ms):                           105.34
Median ITL (ms):                         52.76
P99 ITL (ms):                            321.65
==================================================

3. 並列化:SGLang

TP8

推論サービスのスクリプト
python3 -m sglang.launch_server --model-path zai-org/GLM-4.6-FP8 --host 0.0.0.0 --port 8000 --tp-size 8
ベンチマーク結果
============ Serving Benchmark Result ============
Successful requests:                     1000
Benchmark duration (s):                  52.72
Total input tokens:                      214465
Total generated tokens:                  199904
Request throughput (req/s):              18.97
Output token throughput (tok/s):         3791.55
Peak output token throughput (tok/s):    8987.00
Peak concurrent requests:                1000.00
Total Token throughput (tok/s):          7859.29
---------------Time to First Token----------------
Mean TTFT (ms):                          5085.56
Median TTFT (ms):                        4847.02
P99 TTFT (ms):                           10068.82
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms):                          271.63
Median TPOT (ms):                        144.47
P99 TPOT (ms):                           1542.73
---------------Inter-token Latency----------------
Mean ITL (ms):                           105.34
Median ITL (ms):                         52.76
P99 ITL (ms):                            321.65
==================================================

TP4

推論サービスのスクリプト
python3 -m sglang.launch_server --model-path zai-org/GLM-4.6-FP8 --host 0.0.0.0 --port 8000 --tp-size 4
ベンチマーク結果
============ Serving Benchmark Result ============
Successful requests:                     1000
Benchmark duration (s):                  58.52
Total input tokens:                      214465
Total generated tokens:                  199904
Request throughput (req/s):              17.09
Output token throughput (tok/s):         3416.25
Peak output token throughput (tok/s):    7602.00
Peak concurrent requests:                1000.00
Total Token throughput (tok/s):          7081.34
---------------Time to First Token----------------
Mean TTFT (ms):                          5786.78
Median TTFT (ms):                        5769.81
P99 TTFT (ms):                           10134.80
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms):                          256.43
Median TPOT (ms):                        144.11
P99 TPOT (ms):                           1451.02
---------------Inter-token Latency----------------
Mean ITL (ms):                           109.76
Median ITL (ms):                         62.64
P99 ITL (ms):                            330.68
==================================================

TP4+EP4

推論サービスのスクリプト
python3 -m sglang.launch_server --model-path zai-org/GLM-4.6-FP8 --host 0.0.0.0 --port 8000 --tp-size 4 --ep-size 4
ベンチマーク結果
============ Serving Benchmark Result ============
Successful requests:                     1000
Benchmark duration (s):                  62.06
Total input tokens:                      214465
Total generated tokens:                  199904
Request throughput (req/s):              16.11
Output token throughput (tok/s):         3221.11
Peak output token throughput (tok/s):    8209.00
Peak concurrent requests:                1000.00
Total Token throughput (tok/s):          6676.84
---------------Time to First Token----------------
Mean TTFT (ms):                          6632.87
Median TTFT (ms):                        6433.53
P99 TTFT (ms):                           11461.66
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms):                          284.20
Median TPOT (ms):                        157.89
P99 TPOT (ms):                           1629.92
---------------Inter-token Latency----------------
Mean ITL (ms):                           117.77
Median ITL (ms):                         61.25
P99 ITL (ms):                            406.32
==================================================

最適化項目の一覧

最適化項目 スループット改善率
エンジンの選択 +15.7%
量子化 +12.6%
並列化 +80.2%

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

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

基準設定の推論スクリプト
vllm serve zai-org/GLM-4.6 -tp 8
基準設定のベンチマーク結果
# random 32K input
============ Serving Benchmark Result ============
Successful requests:                     100
Benchmark duration (s):                  213.02
Total input tokens:                      3200000
Total generated tokens:                  9406
Request throughput (req/s):              0.47
Output token throughput (tok/s):         44.16
Peak output token throughput (tok/s):    489.00
Peak concurrent requests:                100.00
Total Token throughput (tok/s):          15066.09
---------------Time to First Token----------------
Mean TTFT (ms):                          105089.84
Median TTFT (ms):                        104737.57
P99 TTFT (ms):                           208225.57
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms):                          479.17
Median TPOT (ms):                        541.92
P99 TPOT (ms):                           544.17
---------------Inter-token Latency----------------
Mean ITL (ms):                           474.58
Median ITL (ms):                         529.63
P99 ITL (ms):                            637.86
==================================================

# random 4K input
============ Serving Benchmark Result ============
Successful requests:                     500
Benchmark duration (s):                  125.61
Total input tokens:                      1999787
Total generated tokens:                  99801
Request throughput (req/s):              3.98
Output token throughput (tok/s):         794.52
Peak output token throughput (tok/s):    3810.00
Peak concurrent requests:                500.00
Total Token throughput (tok/s):          16714.91
---------------Time to First Token----------------
Mean TTFT (ms):                          57737.75
Median TTFT (ms):                        59379.10
P99 TTFT (ms):                           116713.01
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms):                          205.69
Median TPOT (ms):                        241.12
P99 TPOT (ms):                           260.89
---------------Inter-token Latency----------------
Mean ITL (ms):                           205.05
Median ITL (ms):                         59.67
P99 ITL (ms):                            424.92
==================================================

# random 2K input
============ Serving Benchmark Result ============
Successful requests:                     500
Benchmark duration (s):                  60.96
Total input tokens:                      999429
Total generated tokens:                  50000
Request throughput (req/s):              8.20
Output token throughput (tok/s):         820.20
Peak output token throughput (tok/s):    5415.00
Peak concurrent requests:                500.00
Total Token throughput (tok/s):          17214.85
---------------Time to First Token----------------
Mean TTFT (ms):                          30215.66
Median TTFT (ms):                        29924.42
P99 TTFT (ms):                           55334.09
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms):                          269.75
Median TPOT (ms):                        283.63
P99 TPOT (ms):                           407.32
---------------Inter-token Latency----------------
Mean ITL (ms):                           267.55
Median ITL (ms):                         402.36
P99 ITL (ms):                            417.66
==================================================

# random 128 input
============ Serving Benchmark Result ============
Successful requests:                     1000
Benchmark duration (s):                  13.89
Total input tokens:                      127881
Total generated tokens:                  4000
Request throughput (req/s):              72.01
Output token throughput (tok/s):         288.05
Peak output token throughput (tok/s):    2063.00
Peak concurrent requests:                1000.00
Total Token throughput (tok/s):          9497.19
---------------Time to First Token----------------
Mean TTFT (ms):                          11467.27
Median TTFT (ms):                        10707.53
P99 TTFT (ms):                           13722.66
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms):                          351.26
Median TPOT (ms):                        397.14
P99 TPOT (ms):                           409.34
---------------Inter-token Latency----------------
Mean ITL (ms):                           263.45
Median ITL (ms):                         389.46
P99 ITL (ms):                            443.88
==================================================

# ShareGPT batch size 4
============ Serving Benchmark Result ============
Successful requests:                     100
Maximum request concurrency:             4
Benchmark duration (s):                  103.11
Total input tokens:                      22992
Total generated tokens:                  21794
Request throughput (req/s):              0.97
Output token throughput (tok/s):         211.38
Peak output token throughput (tok/s):    232.00
Peak concurrent requests:                9.00
Total Token throughput (tok/s):          434.37
---------------Time to First Token----------------
Mean TTFT (ms):                          70.16
Median TTFT (ms):                        62.63
P99 TTFT (ms):                           148.47
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms):                          18.11
Median TPOT (ms):                        17.80
P99 TPOT (ms):                           23.44
---------------Inter-token Latency----------------
Mean ITL (ms):                           17.85
Median ITL (ms):                         17.55
P99 ITL (ms):                            26.92
==================================================
最適化後の推論スクリプト
python3 -m sglang.launch_server --model zai-org/GLM-4.6-FP8 --tp 4 \
    --tool-call-parser glm --reasoning-parser glm45
最適化後のベンチマーク結果
# random 32K input
============ Serving Benchmark Result ============
Successful requests:                     100
Benchmark duration (s):                  262.58
Total input tokens:                      3200000
Total generated tokens:                  9703
Request throughput (req/s):              0.38
Output token throughput (tok/s):         36.95
Peak output token throughput (tok/s):    390.00
Peak concurrent requests:                100.00
Total Token throughput (tok/s):          12223.53
---------------Time to First Token----------------
Mean TTFT (ms):                          129699.21
Median TTFT (ms):                        129839.73
P99 TTFT (ms):                           257123.03
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms):                          191.61
Median TPOT (ms):                        181.54
P99 TPOT (ms):                           350.40
---------------Inter-token Latency----------------
Mean ITL (ms):                           189.68
Median ITL (ms):                         40.53
P99 ITL (ms):                            71.16
==================================================

# random 4K input
============ Serving Benchmark Result ============
Successful requests:                     500
Benchmark duration (s):                  140.16
Total input tokens:                      1999787
Total generated tokens:                  99801
Request throughput (req/s):              3.57
Output token throughput (tok/s):         712.05
Peak output token throughput (tok/s):    2688.00
Peak concurrent requests:                500.00
Total Token throughput (tok/s):          14979.90
---------------Time to First Token----------------
Mean TTFT (ms):                          65196.25
Median TTFT (ms):                        67840.59
P99 TTFT (ms):                           131861.02
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms):                          97.74
Median TPOT (ms):                        94.74
P99 TPOT (ms):                           149.34
---------------Inter-token Latency----------------
Mean ITL (ms):                           97.55
Median ITL (ms):                         47.60
P99 ITL (ms):                            314.57
==================================================

# random 2K input
============ Serving Benchmark Result ============
Successful requests:                     500
Benchmark duration (s):                  60.44
Total input tokens:                      999429
Total generated tokens:                  50000
Request throughput (req/s):              8.27
Output token throughput (tok/s):         827.27
Peak output token throughput (tok/s):    4460.00
Peak concurrent requests:                500.00
Total Token throughput (tok/s):          17363.22
---------------Time to First Token----------------
Mean TTFT (ms):                          27600.49
Median TTFT (ms):                        29627.26
P99 TTFT (ms):                           56644.81
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms):                          144.82
Median TPOT (ms):                        142.76
P99 TPOT (ms):                           250.18
---------------Inter-token Latency----------------
Mean ITL (ms):                           143.46
Median ITL (ms):                         57.80
P99 ITL (ms):                            145.06
==================================================

# random 128 input
============ Serving Benchmark Result ============
Successful requests:                     1000
Benchmark duration (s):                  6.21
Total input tokens:                      127881
Total generated tokens:                  4000
Request throughput (req/s):              161.01
Output token throughput (tok/s):         644.06
Peak output token throughput (tok/s):    1924.00
Peak concurrent requests:                1000.00
Total Token throughput (tok/s):          21234.81
---------------Time to First Token----------------
Mean TTFT (ms):                          3551.50
Median TTFT (ms):                        3313.50
P99 TTFT (ms):                           5528.41
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms):                          800.25
Median TPOT (ms):                        936.39
P99 TPOT (ms):                           1413.56
---------------Inter-token Latency----------------
Mean ITL (ms):                           600.19
Median ITL (ms):                         0.01
P99 ITL (ms):                            3985.12
==================================================