Оптимизация пропускной способности GLM-4.x на NVIDIA H200 GPU Вывод
Рекомендуемая конфигурация для оптимизации пропускной способности GLM-4.x (4.5, 4.6 и 4.7) на H200 GPU:
Команда обслуживания модели 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
Примечание
Наши бенчмарки не охватывают все возможные сочетания оптимизаций. Например, отправной точкой дальнейшей настройки становится движок инференса с лучшей производительностью при настройках по умолчанию. Такое отсечение вариантов даёт локальный оптимум, который может не совпадать с глобальным. Есть и другие методы оптимизации, зависящие от сценария использования: максимальный размер батча, настройки планировщика, расширенный KV-кэш, CUDA graph и т. д. Выводы этого документа могут служить отправной точкой для более целенаправленной оптимизации. Тесты проводились на определённых аппаратных и программных конфигурациях. Развитие движков инференса может привести к новым выводам. Квантизация может влиять на точность, однако для большинства моделей 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 Набор данных бенчмарка 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 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. Quantization в 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% Quantization +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
==================================================