Сравнение результатов бенчмарков до и после оптимизации:
Сценарий бенчмарка
базовая конфигурация (vLLM без оптимизации)
После оптимизации
Профиль ShareGPT
Общий TPS: 11527.14 Среднее TPOT(ms): 15.12
Общий TPS: 11768.22 (+2.09%) Среднее TPOT(ms): 15.85
Профиль высокой пропускной способности
Общий TPS: 29822.16 Среднее TPOT(ms): 34.63
Общий TPS: 34470.14 (+15.59%) Среднее TPOT(ms): 36.97
Профиль длинного контекста
Общий TPS: 32416.84 Среднее TPOT(ms): 10.21
Общий TPS: 32658.73 (+0.75%) Среднее TPOT(ms): 9.97
Профиль интенсивной генерации
Общий TPS: 2973.42 Среднее TPOT(ms): 0.33
Общий TPS: 3025.11 (+1.74%) Среднее TPOT(ms): 0.12
Примечание
Наши бенчмарки не охватывают все возможные сочетания оптимизаций. Например, отправной точкой дальнейшей настройки становится движок инференса с лучшей производительностью при настройках по умолчанию. Такое отсечение вариантов даёт локальный оптимум, который может не совпадать с глобальным.
Есть и другие методы оптимизации, зависящие от сценария использования: максимальный размер батча, настройки планировщика, расширенный KV-кэш, CUDA graph и т. д. Выводы этого документа могут служить отправной точкой для более целенаправленной оптимизации.
Тесты проводились на определённых аппаратных и программных конфигурациях. Развитие движков инференса может привести к новым выводам.
Квантизация может влиять на точность, однако для большинства моделей FP8 обеспечивает снижение точности менее чем на 1%. Подробности см. в результатах оценки. Поэтому для обслуживания с низкой задержкой настоятельно рекомендуется квантизация FP8.
Спекулятивное декодирование может существенно уменьшить задержку при низкой конкурентности запросов. Однако ускорение зависит от распределения данных в бенчмарке и выбора черновой модели. Например, выбранная здесь черновая модель обучена на английских данных, поэтому для других языков результат может быть хуже оптимального.
Если что-то упущено или требуется обновление с учётом новых изменений, сообщите нам.
Условия эксперимента
Модель
Qwen/Qwen3.5-9B
Оборудование
NVIDIA H100 80GB HBM3
Версия движка
vLLM v0.17.1
SGLang v0.5.9
Методика бенчмарка
В этом проекте используется функция запуска бенчмарка GPUStack одним щелчком для нагрузок обслуживания моделей. Бенчмарки этого документа выполнялись именно таким способом.
============ Serving Benchmark Result ============
Successful requests: 1000
Maximum request concurrency: 512
Benchmark duration (s): 96.01
Total input tokens: 342058
Total generated tokens: 281412
Request throughput (req/s): 10.42
Output token throughput (tok/s): 2933.60
Peak output token throughput (tok/s): 92831.68
Peak concurrent requests: 512.00
Total Token throughput (tok/s): 6499.41
----------------------Latency---------------------
Mean Latency(s): 39.08
Median Latency(s): 41.18
P99 Latency(s): 74.40
---------------Time to First Token----------------
Mean TTFT (ms): 26217.15
Median TTFT (ms): 34401.34
P95 TTFT (ms): N/A
P99 TTFT (ms): 41101.27
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms): 138.86
Median TPOT (ms): 112.19
P95 TPOT (ms): N/A
P99 TPOT (ms): 591.70
---------------Inter-token Latency----------------
Mean ITL (ms): 45.86
Median ITL (ms): 49.31
P95 ITL (ms): N/A
P99 ITL (ms): 59.71
==================================================
Итог: vLLM Общий TPS = 11527.14, SGLang Общий TPS = 6499.41. vLLM быстрее на 5027.72 tok/s (77.36%); Среднее TPOT = 15.12 ms против 138.86 ms, снижение на 123.74 ms (89.11%).
============ Serving Benchmark Result ============
Successful requests: 1000
Maximum request concurrency: 512
Benchmark duration (s): 55.28
Total input tokens: 342058
Total generated tokens: 281412
Request throughput (req/s): 18.09
Output token throughput (tok/s): 5140.19
Peak output token throughput (tok/s): 23553347.13
Peak concurrent requests: 512.00
Total Token throughput (tok/s): 11388.13
----------------------Latency---------------------
Mean Latency(s): 24.34
Median Latency(s): 22.16
P95 Latency(s): 48.86
P99 Latency(s): 51.63
---------------Time to First Token----------------
Mean TTFT (ms): 1853.85
Median TTFT (ms): 1166.25
P95 TTFT (ms): 5543.84
P99 TTFT (ms): 6126.03
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms): 16.91
Median TPOT (ms): 4.35
P95 TPOT (ms): 100.86
P99 TPOT (ms): 129.26
---------------Inter-token Latency----------------
Mean ITL (ms): 10.36
Median ITL (ms): 0.00
P95 ITL (ms): 94.30
P99 ITL (ms): 118.29
==================================================
Итог: Seqs 1024 Общий TPS = 11532.64, Seqs 2048 Общий TPS = 11388.13. Seqs 1024 быстрее на 144.51 tok/s (1.27%); Среднее TPOT = 16.87 ms против 16.91 ms, снижение на 0.04 ms (0.25%).
Максимум токенов в батче и Режим производительности
============ Serving Benchmark Result ============
Successful requests: 1000
Maximum request concurrency: 512
Benchmark duration (s): 54.20
Total input tokens: 342058
Total generated tokens: 281412
Request throughput (req/s): 18.45
Output token throughput (tok/s): 5268.65
Peak output token throughput (tok/s): 29985425.61
Peak concurrent requests: 512.00
Total Token throughput (tok/s): 11672.72
----------------------Latency---------------------
Mean Latency(s): 23.72
Median Latency(s): 21.21
P99 Latency(s): 50.44
---------------Time to First Token----------------
Mean TTFT (ms): 1970.35
Median TTFT (ms): 1344.71
P95 TTFT (ms): N/A
P99 TTFT (ms): 5206.15
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms): 16.53
Median TPOT (ms): 5.04
P95 TPOT (ms): N/A
P99 TPOT (ms): 125.98
---------------Inter-token Latency----------------
Mean ITL (ms): 9.56
Median ITL (ms): 0.00
P95 ITL (ms): N/A
P99 ITL (ms): 111.59
==================================================
Итог: 32k Общий TPS = 11672.72, 24k Общий TPS = 11512.90. 32k быстрее на 159.82 tok/s (1.39%); Среднее TPOT = 16.53 ms против 15.83 ms, увеличение на 0.70 ms (4.43% медленнее).
Максимальное число последовательностей и Режим производительности
============ Serving Benchmark Result ============
Successful requests: 1000
Maximum request concurrency: 512
Benchmark duration (s): 53.72
Total input tokens: 342058
Total generated tokens: 281412
Request throughput (req/s): 18.62
Output token throughput (tok/s): 5311.75
Peak output token throughput (tok/s): 23159852.52
Peak concurrent requests: 512.00
Total Token throughput (tok/s): 11768.22
----------------------Latency---------------------
Mean Latency(s): 23.50
Median Latency(s): 21.13
P99 Latency(s): 50.04
---------------Time to First Token----------------
Mean TTFT (ms): 1826.53
Median TTFT (ms): 1004.67
P95 TTFT (ms): N/A
P99 TTFT (ms): 5582.79
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms): 15.85
Median TPOT (ms): 4.49
P95 TPOT (ms): N/A
P99 TPOT (ms): 123.40
---------------Inter-token Latency----------------
Mean ITL (ms): 9.39
Median ITL (ms): 0.00
P95 ITL (ms): N/A
P99 ITL (ms): 112.55
==================================================
Итог: Max Num Seqs 512 Общий TPS = 11768.22, Max Num Seqs 256 Общий TPS = 11019.18. Max Num Seqs 512 быстрее на 749.05 tok/s (6.80%); Среднее TPOT = 15.85 ms против 44.58 ms, снижение на 28.73 ms (64.45%).
Максимальное число последовательностей и Максимум токенов в батче
============ Serving Benchmark Result ============
Successful requests: 1000
Maximum request concurrency: 512
Benchmark duration (s): 54.07
Total input tokens: 342058
Total generated tokens: 281412
Request throughput (req/s): 18.49
Output token throughput (tok/s): 5248.67
Peak output token throughput (tok/s): 36318641.50
Peak concurrent requests: 512.00
Total Token throughput (tok/s): 11628.47
----------------------Latency---------------------
Mean Latency(s): 23.72
Median Latency(s): 21.75
P95 Latency(s): N/A
P99 Latency(s): 50.48
---------------Time to First Token----------------
Mean TTFT (ms): 1817.87
Median TTFT (ms): 1821.59
P95 TTFT (ms): N/A
P99 TTFT (ms): 5041.22
-----Time per Output Token (excl. 1st token)------
Mean TPOT (ms): 15.65
Median TPOT (ms): 4.57
P95 TPOT (ms): N/A
P99 TPOT (ms): 123.59
---------------Inter-token Latency----------------
Mean ITL (ms): 9.23
Median ITL (ms): 0.00
P95 ITL (ms): N/A
P99 ITL (ms): 114.09
==================================================
Итог: Batch Token 48k and Seqs 768 Общий TPS = 11628.47, Batch Token 32k and Seqs 512 Общий TPS = 11333.89. Batch Token 48k and Seqs 768 быстрее на 294.57 tok/s (2.60%); Среднее TPOT = 15.65 ms против 16.39 ms, снижение на 0.74 ms (4.51%).
Сводка методов оптимизации
Сценарии бенчмарка
После оптимизации
Базовая конфигурация
Выбор движка инференса
Общий TPS: 11527.14 (+0.00%) Среднее TPOT(ms): 15.12
Общий TPS: 11527.14 Среднее TPOT(ms): 15.12
Кэш префиксов
Общий TPS: 11224.70 (-2.62%) Среднее TPOT(ms): 16.66