SGLang 与前缀缓存
SGLang 的运行时用基数树组织 KV 前缀(RadixAttention),让不同请求之间相同的开头部分共享已经算好的 KV 缓存。多轮对话天然共享前几轮历史,大量请求又常常共用同一段系统提示,这两种情况下的收益最明显。它内置 OpenAI 兼容服务,默认监听 30000 端口,另有原生生成端点。
基本信息
| 默认端口 | 30000 |
|---|---|
| 缓存机制 | 基数树(RadixAttention)复用请求间的共享前缀 |
| 接口 | OpenAI 兼容的对话接口,以及原生生成端点 |
| 启动入口 | python -m sglang.launch_server |
| 并行方式 | 张量并行与数据并行分开配置 |
启动服务
启动服务
# 单机启动:指定模型、监听地址与端口
python -m sglang.launch_server --model-path /models/Qwen \
--host 0.0.0.0 --port 30000 --tp-size 2
# 验证接口与对外模型名
curl http://127.0.0.1:30000/v1/models
# 查参数:版本之间参数名有变动,以本机 help 为准
python -m sglang.launch_server --help | head -40关键参数
| 参数 | 作用 |
|---|---|
| --model-path | 模型仓库名或本地权重目录 |
| --host / --port | 监听地址与端口,默认使用 30000 |
| --tp-size | 张量并行卡数,单卡装不下时切分 |
| --mem-fraction-static | 静态显存占用比例,影响 KV 池大小 |
| --context-length | 上下文长度上限,直接决定 KV 预留 |
| --chunked-prefill-size | 预填充分块大小,影响长输入的调度表现 |
典型使用场景
- 多轮对话服务:历史消息共享前缀,缓存命中后无需重复计算
- 固定系统提示的网关场景:大量请求共用同一段提示,收益随并发放大
- 需要高缓存命中率的业务:提示词模板化程度越高越合适
- 结构化抽取:输入长、模板固定,前缀复用能显著降低首 token 延迟
- 与现有 OpenAI 客户端集成:兼容端点可直接替换 base_url
前缀缓存只在请求开头真正相同时生效:提示词里掺入随机种子、时间戳或用户 ID 会把公共前缀切碎,命中率立刻下降。
启动参数较多,多卡配置写错会退化成单卡或直接显存不足:启动后先看日志确认并行度与显存占用,再开始压测。