继 1329 帖 的 4090D / 5090 / RTX PRO 4500 对照,补一个 4080S 32G(改装显存版) 的数据点。前半是 llama.cpp 生产链路的优化记录,后半是在同一张卡上对 SGLang+HiCache 的失败探索——负结果,但对犹豫要不要换引擎的 32G 卡兄弟应该有参考价值。
一、硬件与基线
- 卡:RTX 4080 SUPER 32G(改装显存版),驱动 595.84
- 引擎:llama.cpp b6508 后新构建(bump 0.2.0),CUDA 编译
- 模型:Qwen3.8-27B UD-Q4_K_XL(主)+ Q4_0 MTP 草稿 + mmproj 视觉,froggeric v22 模板
- 代理:自研 FastAPI 路由层(A/B/C1/C2/D/V 六档,按内容/tools 自动路由思考档位与输出预算)
二、优化过程与结论(全部实测)
1. MTP 深度:接受率不是越高越好。 n=1→4 全扫描:n=4 接受率最低(48.8%)但速度最快(2.05x,no-MTP 31 → 64 tok/s),深层 draft 摊销验证开销盖过了接受率损失。n=5/6 必崩(MTMD 初始化 ABRT)。p-min 扫描 0~0.8 全负收益,p-min=0 定稿。
2. KV 量化:K4V4(q4_0)白嫖 3.3G 显存。 这个 flash-attn 内核只认 q8_0/q4_0,其他变体会掉 CPU fallback。K4V4 对比 q8_0:质量套件 19/21 + 工具调用全过 + 长上下文检索 187K 深度全命中,速度持平。每 token KV 仅 18KB,这是 32G 卡能开大上下文的根本。
3. 上下文:绕了一圈回到原点,但姿势更好。 262144 → 200000(缩池换余量)→ 262144(余量够了恢复)→ 307200 统一池:llama.cpp 会自动把单槽钳制在模型原生 n_ctx_train=262144(启动有 warning 但行为正确),多出来的 45K 池容量正好用于并发——单会话不超原生上限(零质量风险),262K 会话 + 32K 会话可同池共存。
4. batch/ubatch:8192/1024 定稿。 batch 8192 让 35K 冷 prefill 稳定在 1690×3(4096 时波动 1160~1690);ubatch 2048 能把解码 p10 从 40 提到 78(MTP 验证批不再切分),但计算缓冲多吃 1.4G,按显存预算取舍。
5. cache-ram 16G:llama.cpp 的"迷你 HiCache"。 槽位被逐出时 KV 状态先进内存池再落盘,会话恢复免重新 prefill。机制上是槽位级保存/恢复,不是 token 级 Radix,但配合统一 KV 的公共前缀共享,日常够用。
6. Agent 输出截断修复:路由层自动放行。 编码 Agent(DSH/pi-ai 系)默认发 max_tokens=32768,路由器原会钳到档位上限(6144),大工具调用写到一半被掐、发"继续"无限循环。改为:命中 C2(代码/Agent)且客户端显式请求更大值时自动放宽到 32768 + 1800s 超时,CRON 恒锁小预算防滥用。客户端零配置。
7. 当前速度水位(全套定稿配置):35K 冷 prefill ~1900 tok/s,解码中位 ~89 tok/s(no-MTP 基线的 2.9 倍),显存 31.0/32.8G(统一池 307K token)。
三、SGLang+HiCache 探索:三连负结果,不换生产
用 Docker 完全隔离跑 SGLang(latest),对照 1329 帖的结论:
| 尝试 |
结果 |
| NVFP4 4bit(带视觉+MTP 的理想模型) |
启动即报错 NotImplementedError: Current platform does not support w4a4 nvfp4 quantization —— NVFP4 是 Blackwell 专属路径,Ada 没实现,无绕过 |
| AWQ INT4(带视觉,无 MTP) |
能跑:KV 池 118,569 token、HiCache host pool 245K/8G 分配正常;但 AWQ 仓库无 MTP 头,解码只有 36.9 tok/s |
| HiCache 跨层回捞 |
未生效:灌 12 万 token 强制逐出后回查最早前缀,cached=0、耗时与全新冷启动一致。疑似 hybrid(GDN) 架构与 HiCache 的兼容缺口 |
结论:32G Ada 卡上,SGLang 解码只有 llama.cpp+MTP 的一半、单会话上下文 256K→131K、HiCache 回捞还没兑现——维持 llama.cpp 生产。1329 帖的 SGLang 收益场景(多会话共享前缀 + 容量扩展)在 32G Ada 上三根支柱缺了两根半。
替代方案:llama.cpp 侧开 --cache-ram 16G 当"迷你 HiCache",槽位恢复免重算,成本低无风险。
四、给同款卡的建议
- 4080S/4090 系(Ada)别试 NVFP4,SGLang 直接不认;
- 混合架构(GDN)模型玩前缀缓存/分层缓存,先确认工具链对 hybrid 的 checkpoint 支持,否则会遇到"分配了但不回捞"的静默失效;
- llama.cpp 路线的 MTP + K4V4 + 统一池在 32G 卡上是性价比极高的组合,欢迎对照。
配置细节、踩坑日志和 A/B 数据都在我这边,有问必答。
—— jingy yi