NVIDIA H100 GPUs 上的 GLM-4.x 吞吐量优化 结论 GLM-4.x (4.5、4.6 和 4.7) 在 H100 GPUs 上的吞吐量优化推荐配置:
推理服务命令 python3 -m sglang.launch_server --model zai-org/GLM-4.6-FP8 --tp-size 8 --ep-size 8 --tool-call-parser glm --reasoning-parser glm45
说明
基准测试未覆盖所有可能的优化组合。例如,我们会选择默认配置下表现最好的推理引擎作为后续调优的起点。这种剪枝方式得到的是局部最优解,未必是全局最优解。 其他优化方法取决于具体使用场景,包括最大批大小、调度配置、扩展 KV cache、CUDA graph 等。本文结论可作为进一步针对性优化的起点。 测试基于特定的硬件和软件环境。推理引擎的改进可能带来新的结论。 量化可能影响准确率,但对于大多数模型,FP8 量化的准确率下降可控制在 1% 以内。详情参见评估结果 。因此,强烈建议在高吞吐量推理服务场景中使用 FP8 量化。 如有遗漏或需要根据最新变化更新的内容,请告诉我们 。
优化目标 在高并发请求场景下实现高吞吐量。
实验环境 模型 zai-org/GLM-4.6
硬件 单节点配备 8 × NVIDIA H100 SXM GPU。
引擎版本 vLLM: v0.11.0 SGLang: v0.5.3 TensorRT-LLM : v1.0.0 基准测试数据集 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 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
实验结果 受显存容量限制,原始 BF16 精度模型无法在配备 NVIDIA H100 GPU 的单台服务器上提供推理服务。因此,本测试重点评估 FP8 量化模型。
1. 选择推理引擎 vLLM
推理服务脚本 vllm serve zai-org/GLM-4.6-FP8 -tp 8 --gpu-memory-utilization 0 .85
基准测试结果 ============ Serving Benchmark Result ============
Successful requests: 1000
Benchmark duration (s): 130.81
Total input tokens: 214465
Total generated tokens: 199904
Request throughput (req/s): 7.64
Output token throughput (tok/s): 1528.16
Peak output token throughput (tok/s): 3935.00
Peak concurrent requests: 1000.00
Total Token throughput (tok/s): 3167.63
---------------Time to First Token----------------
Mean TTFT (ms): 26751.30
Median TTFT (ms): 26848.82
P99 TTFT (ms): 45890.42
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms): 508.88
Median TPOT (ms): 273.93
P99 TPOT (ms): 1362.12
---------------Inter-token Latency----------------
Mean ITL (ms): 222.86
Median ITL (ms): 149.69
P99 ITL (ms): 1365.56
==================================================
SGLang
推理服务脚本 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): 109.16
Total input tokens: 214465
Total generated tokens: 199904
Request throughput (req/s): 9.16
Output token throughput (tok/s): 1831.30
Peak output token throughput (tok/s): 5614.00
Peak concurrent requests: 1000.00
Total Token throughput (tok/s): 3796.00
---------------Time to First Token----------------
Mean TTFT (ms): 17555.93
Median TTFT (ms): 17493.70
P99 TTFT (ms): 32706.51
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms): 684.10
Median TPOT (ms): 252.95
P99 TPOT (ms): 4790.60
---------------Inter-token Latency----------------
Mean ITL (ms): 208.76
Median ITL (ms): 129.94
P99 ITL (ms): 514.51
==================================================
结果:SGLang(3796.00 tok/s) > vLLM (3167.63 tok/s) > TensorRT-LLM (不支持)
2. SGLang 中的 并行策略 TP8EP8
推理服务脚本 python3 -m sglang.launch_server --model-path zai-org/GLM-4.6-FP8 --host 0 .0.0.0 --port 8000 --tp-size 8 --ep-size 8
基准测试结果 ============ Serving Benchmark Result ============
Successful requests: 1000
Benchmark duration (s): 107.44
Total input tokens: 214465
Total generated tokens: 199904
Request throughput (req/s): 9.31
Output token throughput (tok/s): 1860.58
Peak output token throughput (tok/s): 6492.00
Peak concurrent requests: 1000.00
Total Token throughput (tok/s): 3856.69
---------------Time to First Token----------------
Mean TTFT (ms): 18994.85
Median TTFT (ms): 18941.03
P99 TTFT (ms): 34437.71
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms): 677.30
Median TPOT (ms): 237.99
P99 TPOT (ms): 4817.75
---------------Inter-token Latency----------------
Mean ITL (ms): 200.86
Median ITL (ms): 123.73
P99 ITL (ms): 502.84
==================================================
优化选项汇总 优化选项 吞吐量提升 引擎选择 +19.8% 并行策略 +1.6%