sglang-dual/hero.jpg" alt="双卡 TP 部署示意">

双卡 TP(张量并行)跑多并发,90% 的情况下首 token 延迟低于 1 秒,80K 上下文之前生成速度稳定在 80-100 tok/s,比 llama.cpp 和 vLLM 都丝滑。

背景:多并发的痛点

单卡跑多并发,显存一挤,长上下文下 prefix cache 命中率不稳,经常要等 1-10 秒才吐字。VLLM 的 Paged attention 缓存效率高,但它按 ~1600 token 做前缀缓存,长上下文下不如 llama.cpp 的完全缓存命中。

SGLang 的 RadixAttention 是缓存树结构,对长上下文的命中率更友好——但问题是官方对 AMD 的支持基本没有,比 VLLM 还烂。

魔改思路

SGLang 和 VLLM 底层都用 PyTorch,那就把对应的 VLLM kernel 直接 port 过来。周末用 AI 辅助搞了两天,产出了一个支持 gfx1100(7900XTX)的 SGLang 分支。

唯一的遗憾:折腾两天也没能支持 fp8 KV cache,双卡 4 路并发下 bf16 缓存只能开到 192K 上下文。

实测数据

场景 速度
双路并发 平均 150-200 tok/s
80K 上下文 80-100 tok/s 波动
首 token 延迟 90% 情况 < 1s
数学题短上下文 比 VLLM 低约 30%(VLLM 130 tok/s)

关键观察:SGLang 的超短上下文爆发力不如 VLLM,但在 agent 工作流里整体表现远远超过 VLLM——因为 agent 场景就是长上下文为主,正好吃到 RadixAttention 缓存树的红利。

适合谁

一句话

如果你要的是"长上下文 + agent 场景 + 多并发",魔改 SGLang 比 VLLM 和 llama.cpp 都更适合 AMD 双卡。