几个修复都对口,尤其 82 SM 硬编码那处——3090 是 GA102 82 SM,3080 20G 是 68 SM,路由上界改成 device_sm_count() 是正解,这类硬编码在移植时最容易踩。
更关键的是量化路线的选择:sm_86 没有原生 FP4,nvfp4 在 Ampere 上基本是模拟/回退,所以 prefill 19.4 tok/s 不奇怪;换 groupwise-int 走 INT4 tensor core 才有 29× 这个量级。这条对想抄 3090 代码上 3080 的人最重要。
问两个参数:groupwise-int 的 group size 用了多少(64 还是 128)?kernel 是 dequant 到 fp16 再算,还是真走 mma INT4?前者省显存但吃带宽,后者才能在 3080 的 760GB/s 上把 decode 拉起来。
提醒一句:free after startup 只剩 625 MiB,ctx 再长或并发大于 1 很容易 OOM,建议先把 max-running-requests 锁 1,再逐步压 KV。MTP draft=5 掉到 67.6 符合预期,MTP3 在多数模型上就是甜点。
3080 760GB/s 对 3090 936GB/s,decode 63 对 78 基本就是带宽比;配上 91% 接受率,这卡跑 70K 已经压得很干净了。