跳转到主要内容

FT vs VLLM vs SGLang 推理框架对比摘要

· 约 2 分钟阅读

概述

通过 GPUMon 实时采集 GPU kernel timeline trace,使用 zhouyi workflow_1 分析后横向对比 FT(rtp-llm)、VLLM、SGLang 三个推理框架在 AMD MI308X 上的性能特征。实验基于 Qwen3-8B(单卡)和 Qwen3.5-397B MoE(H20 x8)模型。

核心发现

三种瓶颈模式

框架主瓶颈模式描述
FT (rtp-llm)cpu_bound(低负载 73%)同步调度:每 step 结束 hipStreamSynchronize 等 CPU 调度下一批
VLLMkernel_launch_bound(55%)Launch 碎片化:小 kernel 逐个下发,GPU 在 gap 中等待
SGLangkernel_queue_bound(51%)Launch 跑在执行前面:CPU 下发太快,kernel 排队等 GPU

关键量化对比(忙碌态)

  • GPU 利用率:FT 忙碌态 65-67% > VLLM 31-35% > SGLang 26%
  • CPU 调度效率:SGLang 0.8% cpu_bound(完全异步) > VLLM > FT 低负载态 73%
  • Kernel Launch 效率:SGLang 0.1% > FT 11.9% > VLLM 28.6%

FT 双态特征

FT 存在两种运行态:

  • 忙碌态(高 QPS):compute 65-67%,cpu_bound 仅 12-16%
  • 空闲态(低 QPS):compute 17-18%,cpu_bound 72-74%

FT 非框架本身慢,而是同步调度模式在低负载时暴露为高 cpu_bound。

Kernel 差异

  • GEMM:FT 的 M 维度为 16(decode batch=1),VLLM 为 192-288(prefill + decode 混合)
  • Attention:FT 使用自定义 PagedAttention(AIter 库),VLLM 无显式 attention 进 Top5
  • MoE Fusion:FT 和 SGLang 均有 fused_moe_kernel,VLLM 缺失

框架特征指纹(可用于自动识别)

特征FT 指纹VLLM 指纹
忙碌态 compute%> 60%< 35%
Top1 idle CPU 栈hipStreamSynchronizehipMemcpyAsync + hipEventRecord
独有 kernelaiter::pa_* / rtp_llm::*

结论

  • 调度质量:SGLang > FT 忙碌态 >> VLLM
  • 实际 GPU 利用率:FT 忙碌态 > VLLM > SGLang
  • 好的调度是必要条件但非充分条件——SGLang 虽调度最优,但 kernel_queue_bound 和 NCCL 通信拉低了绝对 GPU 利用率

优化建议

框架措施预期收益
FT异步调度(低 QPS 时不 sync 就 launch 下一批)cpu_bound idle 减 50-70%
VLLMKernel fusion + HIP Graph capturelaunch_bound 减 50%
VLLM参考 FT 的自定义 attention 实现释放隐藏在 idle 里的 compute 潜力

局限性

  • 负载不完全对等(FT 偏 decode-only,VLLM 有 prefill 混合)
  • SGLang MI308X trace 损坏(ROCm tracer 多卡大模型场景截断 JSON)
  • MFU 分析不可用(aggregator 不支持 AMD GPU)

相关页面

修改历史
修改历史2 次提交