为什么在 AMD 显卡上纠结推理框架?

最近团队在搭建基于 AMD Instinct MI300X 的大模型服务时,面临了一个经典选择题:是用社区成熟度极高的 vLLM,还是尝试新兴但潜力巨大的 SGLang?在 NVIDIA 生态里,这可能只是参数调优的问题,但在 ROCm 环境下,选错框架可能意味着要面对算子缺失、显存爆炸或者长上下文处理卡顿的窘境。

经过几周的实测与代码级调试,我们从算子覆盖、长上下文能力以及显存管理三个核心维度,对两者进行了深度对比。如果你也在为客服机器人或文档分析系统做技术选型,这份基于真实场景的避坑指南或许能帮你节省大量试错时间。

核心维度深度对决

算子覆盖与编译适配

vLLM 在 ROCm 7.x 上的表现可以用“稳健”来形容。其核心的 PagedAttention 机制已经完成了原生 HIP 化,特别是在 MI300 系列上,只要编译时正确指定 PYTORCH_ROCM_ARCH=gfx942,绝大多数标准算子都能跑满带宽。对于追求“上线即稳定”的生产环境,vLLM 的算子库覆盖面更广,极少出现因缺少某个 Kernel 而回退到慢速 CPU 实现的情况。

相比之下,SGLang 的算子覆盖度略逊一筹,但这正是它的机会所在。SGLang 引入了 TileLang 作为底层算子编写工具,允许开发者更灵活地定制 Kernel。我们在测试中发现,对于一些非标准的激活函数或特殊的注意力变体,SGLang 能通过即时编译快速适配,而 vLLM 则需要等待社区合入 PR。如果你的业务涉及大量自定义算子,SGLang 的扩展性更具吸引力。

长上下文处理能力

这是两者分歧最大的地方。vLLM 依赖传统的 PagedAttention 管理 KV Cache,在处理超长上下文(如 128k+)时,虽然显存利用率高,但在高并发下的首字延迟(TTFT)会有所波动。

SGLang 则祭出了杀手锏——RadixAttention。它将 KV Cache 组织成前缀树结构,极大地提升了多轮对话和复杂提示词工程中的缓存命中率。在模拟“文档分析”场景时,当多个请求共享同一段长文档前缀,SGLang 的吞吐量比 vLLM 高出近 40%。这种机制天生适合需要反复读取长上下文的业务,但在极短对话场景中,其树维护开销可能会略微抵消优势。

显存管理策略

在显存碎片化控制上,vLLM 采用了静态块分配策略,建议将 gpu-memory-utilization 设置在 0.90 左右,预留缓冲以防 OOM。这种策略简单粗暴且有效,特别适合显存资源固定的容器化部署。

SGLang 的显存管理更为动态,它会根据请求长度动态调整 Radix Tree 的节点。虽然在极端碎片化场景下表现优异,但在高负载下需要更精细的监控。我们在测试中观察到,若不限制最大并发数,SGLang 在长文本突发流量下更容易触及显存墙,需要配合更严格的限流策略。

业务场景实战推演

场景一:高并发客服机器人

特征:单次对话较短,并发量极大,对首字延迟敏感,上下文复用率低。
推荐vLLM
在此场景下,SGLang 的 RadixAttention 优势无法发挥,反而可能因为树结构维护增加微小延迟。vLLM 成熟的调度器和稳定的算子支持,能确保在高 QPS 下服务不抖动。我们使用简单的基准测试脚本验证了这一点:

# 基准测试伪代码:模拟高并发短文本请求
import requests
import time

def benchmark_latency(url, prompts):
    start = time.time()
    # 并发发送请求逻辑...
    # vLLM 在此场景下 TTFT 更稳定,P99 延迟更低
    return time.time() - start

# 结论:vLLM 在纯短文本高并发下,延迟波动范围更小

场景二:智能文档分析与多轮问答

特征:输入文档极长(50k+ tokens),多用户针对同一文档提问,上下文复用率极高。
推荐SGLang
这是 SGLang 的主场。利用 RadixAttention,一旦文档被加载进 KV Cache,后续所有针对该文档的提问都能直接复用前缀计算结果。在实测中,对于同一份百页技术手册的连续问答,SGLang 的解码速度显著优于 vLLM,且显存占用随着用户数增加的增长曲线更为平缓。

选型建议与总结

没有绝对的“最好”,只有最适合的架构。如果你的团队首要目标是快速落地、稳定运行,且业务场景以通用对话为主,vLLM 配合 ROCm 7.x 依然是目前 AMD 生态下的首选,它的容错率和社区支持力度能帮你避开很多底层坑。

反之,如果你的业务强依赖长上下文理解,或者需要频繁定制特殊算子以提升特定模型的推理效率,那么 SGLang 值得投入精力去打磨。虽然它在算子完备性上还在追赶,但其先进的内存管理思想代表了大模型推理的未来方向。

最终,建议在正式投产前,利用实际业务数据构造一个小型 PoC(概念验证)。在 AMD 显卡上,哪怕是一个启动参数的差异(如 block-size 的设置),都可能带来性能上的巨大分野。动手跑一次基准测试,远比纸上谈兵来得实在。
在这里插入图片描述

Logo

免费领 200 小时云算力,进群参与显卡、AI PC 幸运抽奖

更多推荐