感谢版主和 Neo 分享 HiCache 方案!我们今天也在 RTX 5090 上做了一次复现实测,反馈一下结果。
之前的 SGLang 测试
我们之前已经成功跑通:
- RTX 5090 32GB
- SGLang 0.5.17
- RadixArk Qwen3.8-27B NVFP4
- 131K/160K 配置、双并发、原生视觉
实测 Radix Cache 效果很好:50K 前缀命中后,首字延迟从约 7.6 秒降到 0.34 秒。
但当时无法实际应用,主要因为:
- 32GB 显存下实际共享 KV Pool 只有约 121K tokens
- 两个 Agent 同时使用时,大约只能各分配 45–55K
- 单会话生成约 66 tok/s,低于现有 llama.cpp+MTP 的约 85–97 tok/s
- 现有 llama.cpp 方案已能提供单 Agent 224K 长上下文,除了单并发其它完美符合本地要求。
因此,SGLang 虽然多会话和 Radix Cache 很优秀,但在 5090 32GB 上,长上下文容量不足,暂时没有替换现有生产方案。
也正因为这个原因,我们看到 HiCache 可以把被淘汰的 KV 放进内存后,觉得它可能正好补上这块短板,所以马上进行了测试。
本机环境
- Windows 11 + WSL2
- CPU:i7-12700K
- 内存:128GB,WSL 分配约 62GB
- GPU:RTX 5090 32GB
- SGLang:0.5.17
- PyTorch:2.11 + CUDA 13.0
- 模型:RadixArk Qwen3.8-27B NVFP4
- 上下文:131K,FP8 KV,双并发
HiCache 测试
我们依次运行三个不同的 50K 会话,总量超过 GPU KV Pool,再回访第一个会话:
测试过程和结果:
-
第一次打开会话 A
- 缓存命中:0
- 首字延迟:7.73 秒
-
立即回访会话 A
- GPU 缓存命中:约 49K tokens
- 首字延迟:0.44 秒
-
依次运行 B、C 两个 50K 会话后,再回访 A
- 缓存命中:0
- 首字延迟:7.86 秒
这说明 GPU Radix Cache 工作正常:立即回访时,首字延迟从 7.73 秒降至 0.44 秒;运行 B、C 后,A 的缓存已经被 GPU KV Pool 淘汰。
开启 24GB HiCache 后,服务可以正常启动,并成功分配:
- 约 12.8GB 普通 KV 缓存
- 约 11.2GB Mamba 缓存
/health正常,日志显示hierarchical=True
但第一条 50K 请求在把 KV 从显存写入内存时崩溃。
两种官方 I/O 模式都测试了:
kernel:CUDA illegal memory accessdirect:程序段错误退出
因此,当前这套 RTX 5090 + SGLang 0.5.17 + Qwen3.8 NVFP4 Hybrid 组合暂时还不能稳定使用 HiCache。
这不代表 HiCache 方案本身有问题。文章实测是 4090D 48GB + FP8 模型,与我们的 5090/NVFP4 环境不同。
如果版主或 Neo 有已经跑通 RTX 5090 的具体 SGLang、CUDA、PyTorch、模型版本和启动参数,麻烦分享一下,我们可以继续复测。
再次感谢分享!HiCache 如果能在 5090 上稳定运行,正好可以解决我们之前 SGLang 已经跑通、但因多 Agent 长上下文容量不足而无法实际应用的问题。