ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

GPUStack 性能实验室:Qwen3-32B 在 NVIDIA H100 上的吞吐量优化全流程

GPUStack 性能实验室:Qwen3-32B 在 NVIDIA H100 上的吞吐量优化全流程 后端人工智能模型推理服务集群管理可观测性【免费下载链接】gpustackA GPU cluster manager for high-performance AI model serving (vLLM, SGLang) and on-demand SSH-accessible GPU instances.项目地址https://gitcode.com/gh_mirrors/gp/gpustack点击查看免费下载本文是 GPUStack 性能实验室系列中针对Qwen3-32B 在单卡 NVIDIA H100 SXM 上吞吐量优化的完整实测报告与落地指南。文章以 docs/performance-lab/qwen3-32b/h100.md 的实验数据为主线完整还原推理引擎选型 → FP8 量化 → 启用 Chunked Prefill的优化链路并补充 GPUStack 中的实际部署与基准测试操作方式。读完本文你将掌握一套可复制的基线跑分—分步调优—结果验证方法以及将最优配置一键应用到 GPUStack 模型部署的具体步骤。结论速览针对 Qwen3-32B 在单张 NVIDIA H100 SXM GPU 上的高并发吞吐优化GPUStack 性能实验室给出的推荐启动命令为trtllm-serve Qwen/Qwen3-32B-FP8 --max_seq_len40960 --enable_chunked_prefill即以TensorRT-LLM 引擎 FP8 量化 Chunked Prefill三项组合作为吞吐优先的部署配置。优化前后基线为未做任何优化的 vLLM的五类负载对比结果如下Benchmark CasebaselinevLLM 默认配置OptimizedShareGPTTotal TPS: 2352.82Mean TPOT(ms): 88.09Total TPS: 4284.6882.1%Mean TPOT(ms): 158.64Short PromptTotal TPS: 4005.62Mean TPOT(ms): 1169.72Total TPS: 6826.3370.4%Mean TPOT(ms): 890.11Medium PromptTotal TPS: 3195.30Mean TPOT(ms): 86.62Total TPS: 5901.9584.7%Mean TPOT(ms): 223.40Long PromptTotal TPS: 2148.69Mean TPOT(ms): 66.61Total TPS: 4929.16129.4%Mean TPOT(ms): 138.75Very Long PromptTotal TPS: 2771.81Mean TPOT(ms): 43.42Total TPS: 4068.1610.7%Mean TPOT(ms): 286.97四条重要的实验边界说明局部最优而非全局最优本系列测试并未穷举所有优化组合而是先选择默认配置下表现最好的推理引擎作为进一步调优的起点。这种剪枝策略得到的可能是局部最优而非全局最优。更多依赖业务场景的调优手段最大 batch size、调度配置、扩展 KV CacheExtended KV Cache、CUDA graph、Torch Compile 等优化方法取决于具体请求模式本文结论可作为进一步定向优化的起点。这些手段在 GPUStack 侧也有对应能力例如模型部署中的extended_kv_cache配置字段见 hack/perf/run_model_benchmark.py 的部署负载构造。结论受软硬件版本约束测试在特定硬件与软件版本上进行推理引擎的迭代演进可能带来新的结论请以自身目标设备上的实测为准。量化对精度的影响虽然量化可能影响精度但对大多数模型而言FP8 量化通常可将精度下降控制在 1% 以内因此在追求高吞吐的服务场景中强烈推荐使用 FP8 量化。优化目标本次实验的优化目标非常明确在高并发请求场景下实现高吞吐。即在不牺牲可用性的前提下尽量提升单位时间内的 Token 吞吐总量Total TPS同时兼顾 TTFT首 Token 延迟与 TPOT每个输出 Token 的生成时间等关键体验指标。实验设置模型与硬件模型Qwen3-32B硬件单张 NVIDIA H100 SXM GPU推理引擎版本引擎版本vLLMv0.11.0SGLangv0.5.5.post1TensorRT-LLMv1.2.0rc1基准数据集ShareGPT真实对话流量数据集。随机生成数据集覆盖四档序列长度组合固定随机种子保证可复现Very long prompt32000 输入 Token、100 输出 TokenLong prompt4000 输入 Token、200 输出 TokenMedium prompt2000 输入 Token、100 输出 TokenShort prompt128 输入 Token、4 输出 Token基准测试脚本实验使用vLLM bench CLI工具进行压测命令如下# 准备 ShareGPT 数据集 wget https://huggingface.co/datasets/anon8231489123/ShareGPT_Vicuna_unfiltered/resolve/main/ShareGPT_V3_unfiltered_cleaned_split.json # 在 ShareGPT 数据集上压测 vllm bench serve --model Qwen/Qwen3-32B --backend openai-chat --endpoint /v1/chat/completions --dataset-name sharegpt --dataset-path ShareGPT_V3_unfiltered_cleaned_split.json --num-prompts 1000 # 在随机数据集上压测固定随机种子保证可复现 vllm bench serve --model Qwen/Qwen3-32B --backend openai-chat --endpoint /v1/chat/completions --dataset-name random --random-input-len 4000 --random-output-len 200 --num-prompts 500 --seed 42需要说明的是本系列实验中的run_model_benchmark.py见 hack/perf/run_model_benchmark.py已经封装了通过 GPUStack HTTP API 创建模型部署 → 等待实例 running → 预热 → 创建 benchmark 任务 → 通过 SSE 监听完成 → 保存 JSON 结果 → 缩容至 0 副本的完整自动化链路YAML 中每个runs条目对应一次引擎/参数组合测试request_rate、test_cases均可通过 CLI 覆盖适合在 GPUStack 集群上批量复现同类实验。实验结果三步优化链路第 1 步推理引擎选型在三款引擎均使用默认配置、加载原始Qwen/Qwen3-32B权重的前提下ShareGPT 数据集1000 个 prompt上的对比结果如下vLLM基线vllm serve Qwen/Qwen3-32B Serving Benchmark Result Successful requests: 1000 Benchmark duration (s): 178.01 Total input tokens: 217393 Total generated tokens: 201422 Request throughput (req/s): 5.62 Output token throughput (tok/s): 1131.55 Peak output token throughput (tok/s): 2360.00 Peak concurrent requests: 1000.00 Total Token throughput (tok/s): 2352.82 ---------------Time to First Token---------------- Mean TTFT (ms): 78118.74 Median TTFT (ms): 77291.46 P99 TTFT (ms): 153161.51 -----Time per Output Token (excl. 1st token)------ Mean TPOT (ms): 88.09 Median TPOT (ms): 70.72 P99 TPOT (ms): 378.18 ---------------Inter-token Latency---------------- Mean ITL (ms): 69.76 Median ITL (ms): 50.20 P99 ITL (ms): 277.93 SGLangpython3 -m sglang.launch_server --model-path Qwen/Qwen3-32B Serving Benchmark Result Successful requests: 1000 Benchmark duration (s): 247.94 Total input tokens: 217393 Total generated tokens: 201826 Request throughput (req/s): 4.03 Output token throughput (tok/s): 814.03 Peak output token throughput (tok/s): 1329.00 Peak concurrent requests: 1000.00 Total Token throughput (tok/s): 1690.84 ---------------Time to First Token---------------- Mean TTFT (ms): 115690.30 Median TTFT (ms): 117738.49 P99 TTFT (ms): 230503.32 -----Time per Output Token (excl. 1st token)------ Mean TPOT (ms): 57.86 Median TPOT (ms): 54.19 P99 TPOT (ms): 95.84 ---------------Inter-token Latency---------------- Mean ITL (ms): 56.25 Median ITL (ms): 43.94 P99 ITL (ms): 207.79 TensorRT-LLMtrtllm-serve Qwen/Qwen3-32B Serving Benchmark Result Successful requests: 1000 Benchmark duration (s): 157.59 Total input tokens: 217393 Total generated tokens: 201723 Request throughput (req/s): 6.35 Output token throughput (tok/s): 1280.04 Peak output token throughput (tok/s): 1958.00 Peak concurrent requests: 1000.00 Total Token throughput (tok/s): 2659.50 ---------------Time to First Token---------------- Mean TTFT (ms): 65281.52 Median TTFT (ms): 65325.76 P99 TTFT (ms): 133106.50 -----Time per Output Token (excl. 1st token)------ Mean TPOT (ms): 61.90 Median TPOT (ms): 59.59 P99 TPOT (ms): 121.97 ---------------Inter-token Latency---------------- Mean ITL (ms): 59.22 Median ITL (ms): 47.89 P99 ITL (ms): 214.01 选型结论Total Token throughput 排序为TensorRT-LLM2659.50 tok/s vLLM2352.82 tok/s SGLang1690.84 tok/s。同时可以看到TensorRT-LLM 在 TTFT 均值65.28s与请求吞吐6.35 req/s上也优于 vLLM。因此后续优化以 TensorRT-LLM 为起点。需要指出的是这一结论仅针对当前模型 × GPU × 引擎版本组合。GPUStack 性能实验室的总体观察见 docs/performance-lab/overview.md显示vLLM、SGLang、TensorRT-LLM 各自在特定场景中取得过最优成绩——例如 vLLM 在 A100 上运行 gpt-oss-20b 时比 SGLang/TensorRT-LLM 快十余倍详见 gpt-oss-20b/a100.md因此不能简单断言某款引擎普遍更优。第 2 步TensorRT-LLM 中的 FP8 量化将权重替换为 FP8 量化版Qwen/Qwen3-32B-FP8后原文档实验所用启动命令如下ShareGPT 吞吐量从 2659.50 tok/s 提升至 4005.32 tok/spython3 -m sglang.launch_server --model-path Qwen/Qwen3-32B-FP8 Serving Benchmark Result Successful requests: 1000 Benchmark duration (s): 104.55 Total input tokens: 217393 Total generated tokens: 201376 Request throughput (req/s): 9.56 Output token throughput (tok/s): 1926.06 Peak output token throughput (tok/s): 4391.00 Peak concurrent requests: 1000.00 Total Token throughput (tok/s): 4005.32 ---------------Time to First Token---------------- Mean TTFT (ms): 35510.55 Median TTFT (ms): 31577.26 P99 TTFT (ms): 79653.82 -----Time per Output Token (excl. 1st token)------ Mean TPOT (ms): 205.13 Median TPOT (ms): 119.96 P99 TPOT (ms): 1141.98 ---------------Inter-token Latency---------------- Mean ITL (ms): 118.32 Median ITL (ms): 86.53 P99 ITL (ms): 1195.28 FP8 量化在 H100 这类支持 FP8 张量核心的 Hopper 架构 GPU 上收益尤为显著请求吞吐提升至 9.56 req/s峰值输出吞吐达到 4391 tok/sTTFT 均值也从 65s 量级降至约 35.5s。这印证了 docs/performance-lab/overview.md 中量化是最大化吞吐量的关键技术这一总体观察。第 3 步启用 Chunked Prefill在 FP8 基础上追加--max_seq_len40960 --enable_chunked_prefill将长 Prompt 的 Prefill 阶段切分为 chunk与 Decode 阶段交错执行从而减少 GPU 空闲、提升调度效率trtllm-serve Qwen/Qwen3-32B-FP8 --max_seq_len40960 --enable_chunked_prefill Serving Benchmark Result Successful requests: 1000 Benchmark duration (s): 97.74 Total input tokens: 217393 Total generated tokens: 201376 Request throughput (req/s): 10.23 Output token throughput (tok/s): 2060.40 Peak output token throughput (tok/s): 4371.00 Peak concurrent requests: 1000.00 Total Token throughput (tok/s): 4284.68 ---------------Time to First Token---------------- Mean TTFT (ms): 31208.75 Median TTFT (ms): 25003.73 P99 TTFT (ms): 72827.99 -----Time per Output Token (excl. 1st token)------ Mean TPOT (ms): 158.64 Median TPOT (ms): 115.67 P99 TPOT (ms): 993.03 ---------------Inter-token Latency---------------- Mean ITL (ms): 107.04 Median ITL (ms): 85.28 P99 ITL (ms): 569.95 最终 ShareGPT 场景 Total Token throughput 达到4284.68 tok/sTTFT 均值进一步降至约 31.2s请求吞吐提升至 10.23 req/s。优化项收益汇总优化项吞吐提升引擎选型vLLM → TensorRT-LLM13.0%FP8 量化50.6%启用 Chunked Prefill7.0%其他负载场景的泛化验证为评估优化配置在不同工作负载下的泛化能力实验将基线vllm serve Qwen/Qwen3-32B与优化配置trtllm-serve Qwen/Qwen3-32B-FP8 --max_seq_len40960 --enable_chunked_prefill在四档随机序列长度负载上进行了对照。关键指标对比如下请求数 / 时长 / Total TPS / TTFT均值(ms) / TPOT均值(ms)场景基线vLLM 默认优化TRT-LLMFP8CP32K 输入 / 100 输出100 请求1157.25s / 2771.81 TPS / TTFT 585981 / TPOT 43.42788.52s / 4068.16 TPS / TTFT 396295 / TPOT 286.974K 输入 / 200 输出500 请求976.29s / 2148.69 TPS / TTFT 482284 / TPOT 66.61425.60s / 4929.16 TPS / TTFT 208082 / TPOT 138.752K 输入 / 100 输出500 请求328.04s / 3195.30 TPS / TTFT 163909 / TPOT 86.62177.60s / 5901.95 TPS / TTFT 86597 / TPOT 223.40128 输入 / 4 输出1000 请求32.88s / 4005.62 TPS / TTFT 21649 / TPOT 1169.7219.29s / 6826.33 TPS / TTFT 10719 / TPOT 890.11完整原始输出含 P99 延迟与 ITL 数据保留在原文档 docs/performance-lab/qwen3-32b/h100.md 的 Other Benchmark Cases 一节。泛化结论优化配置在全部四档负载上均取得吞吐提升10.7% ~ 129.4%其中 4K/2K 等中等长度输入收益最大同时注意到提升幅度随输入长度差异明显——这对应了 docs/performance-lab/overview.md 的观察表现良好的部署配置通常在各个 ISL/OSL 上都呈现正向提升但提升比例可能差异显著。这也说明在实际生产环境中应结合自身业务的真实请求分布输入/输出长度、并发度、前缀复用比例进一步微调。如何在 GPUStack 中落地该最优配置上述结论可以直接在 GPUStack 集群上复现与落地1. 通过推理后端管理接入 TensorRT-LLMGPUStack 支持 Built-in内置、Community社区市场与 Custom自定义三类推理后端详见 docs/user-guide/inference-backend-management.md。若需要指定 TensorRT-LLM v1.2.0rc1 等特定版本或自定义镜像可通过Add Backend / Edit为内置后端添加自定义版本Version1.2.0rc1自定义版本号需以-custom结尾Image NameTensorRT-LLM 对应容器镜像FrameworkcudaOverride Image Entrypointtrtllm-serveExecution Command{{model_path}} --max_seq_len40960 --enable_chunked_prefill后端命令支持{{model_path}}、{{model_name}}、{{port}}、{{worker_ip}}、{{gpu_count}}、{{gpu_ids}}等占位符调度到 worker 时自动替换环境变量可通过{{VAR_NAME}}引用。若使用--keyvalue风格参数还可通过后端级Flag Format统一参数渲染方式。2. 创建模型部署并填写后端参数在 Deployments 页面选择 Qwen3-32B-FP8 模型源Backend 选择 TensorRT-LLM并在 Backend Parameters 中填入--max_seq_len40960与--enable_chunked_prefill即完成一次优化部署。3. 对运行中的实例发起基准测试GPUStack 内置 Benchmark 功能见 docs/user-guide/benchmarking.md在Benchmarks页面点击Add Benchmark选择一个已运行且健康的模型实例并填写压测配置即可由 worker 在独立 benchmark 容器中执行压测结果与配置快照可查看、可导出便于与本文数据对照。4. 用自动化脚本批量复现实验如需像本文一样系统化地对比引擎 × 量化 × 调度参数组合可直接使用仓库中的 hack/perf/run_model_benchmark.pypython3 hack/perf/run_model_benchmark.py \ --config .cache/plan/benchmark/qwen3-32b.yaml \ --profile gpustack/assets/profiles_config/profiles_config.yaml \ --gpustack-url https://YOUR_GPUSTACK \ --gpustack-token $GPUSTACK_TOKEN \ --cluster-id 1 \ --output-dir benchmark_results其中 config YAML 通过runs[].backend、backend_version、backend_parameters描述每种组合profile YAML 定义request_rate、total_requests、dataset_name等压测参数脚本会完成创建部署、等待就绪、预热、压测、保存 JSON、缩容回收的全流程。同模型在 A100 上的对照参考GPUStack 性能实验室同时发布了 Qwen3-32B 在 A100 上的优化实验见 docs/performance-lab/qwen3-32b/a100.md采用的推荐命令同为trtllm-serve Qwen/Qwen3-32B --max_seq_len40960 --enable_chunked_prefill注意A100 场景推荐使用非 FP8 权重因其不支持 FP8 张量核心加速。两组实验对照可以清晰看出硬件代际对优化结论的影响H100 上 ShareGPT 场景优化收益达82.1%2352.82 → 4284.68 TPS而 A100 上为 18.7%1730.98 → 2054.21 TPS且 A100 的 Very Long Prompt 场景在优化后反而出现吞吐回退-13.8%。这再次验证了优化结论必须在目标硬件上用真实负载实测确认的原则。总结与调优建议综合全部实验数据为 Qwen3-32B 在 H100 上构建高吞吐服务时建议遵循以下路径以 TensorRT-LLM 作为起始引擎本次实验环境下其默认配置吞吐最高优先采用 FP8 量化在 Hopper 架构上收益最显著且对大多数模型精度损失 1%开启 Chunked Prefill 并合理设置--max_seq_len缓解长 Prompt 场景下 Prefill 与 Decode 的资源争抢在真实业务负载上验证结合 GPUStack 的 Benchmark 功能或 hack/perf/run_model_benchmark.py 自动化脚本在自己的 H100 集群与请求分布下确认收益再进一步针对最大 batch size、调度配置、扩展 KV Cache、CUDA graph、Torch Compile 等场景化参数做定向调优。赞分享后端人工智能模型推理服务集群管理可观测性【免费下载链接】gpustackA GPU cluster manager for high-performance AI model serving (vLLM, SGLang) and on-demand SSH-accessible GPU instances.项目地址https://gitcode.com/gh_mirrors/gp/gpustack点击查看免费下载相关推荐GPUStack 性能实验室Qwen3-235B-A22B 在 NVIDIA H100 上的 vLLM 吞吐优化实践GPUStack 性能实验室Qwen3 235B A22B 在 NVIDIA H100 上的 vLLM 吞吐优化实践 本文基于 GPUStack 性能实验室在后端人工智能模型推理服务集群管理可观测性GPUStack 性能调优实验Qwen3.5-9B 在 NVIDIA H100 上的吞吐量优化实战指南GPUStack 性能调优实验Qwen3.5 9B 在 NVIDIA H100 上的吞吐量优化实战指南 GPUStack 性能实验室Performance后端人工智能模型推理服务集群管理可观测性Vibe语音转文字工具5分钟装好离线转写AI摘要一篇搞定Vibe语音转文字工具5分钟装好离线转写AI摘要一篇搞定 Vibe是一款开源语音转文字工具音视频文件不离开你的电脑离线转写、AI摘要、字幕导出都在本机后端人工智能模型推理服务集群管理可观测性上一篇如何完全掌控你的游戏体验Wand-Enhancer终极配置指南下一篇mlx-audio TTS API 参考模型加载、语音生成与结果数据结构全解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表