3090 也能跑 FP8 了? 来看这个神奇的教程
谁说玩 FP8 必须上 H100? 有大佬把 FP8 "反向移植"到了 RTX 3090 上!
众所周知, FP8 是 Hopper 架构才有的特性, Ampere 架构的 3090 压根没有原生 FP8 张量核心. 但这位作者换了个思路: 把 FP8 当存储格式, 计算时转成 INT8, 用 3090 本来就很猛的 INT8 IMMA 指令来跑!
核心思路是: FP8 权重存显存 → 256 条目 LUT 解码到 FP16 → 应用 per-column 缩放 → 量化成 INT8 → IMMA 矩阵乘.
这么搞比直接把FP8无脑提升到FP16 (用0填充空位), 权重存储直接省一半显存, 带宽需求也砍半. 当然多了转换和LUT流程还是要增加一些其它开销的.
实测 4096³ 矩阵乘, 自定义内核跑到 50 TOPS, 峰值显存只要 120MB, 比 PyTorch 原生方案省了一半多. 虽然纯算力比不过 cuBLAS, 但重点是端到端保持了 FP8 存储格式, 对显存受限的大模型推理场景很有价值. 以及能很好地规避 FP8 无脑提升到 FP16后可能面临的精度问题 (有时候用0填充但是计算的时候会产生更多位的余数, 导致精度漂移, 所以转换完了还需要校正... )
作者还做了一堆内核变体实验: cp.async 异步拷贝、纹理单元加载缩放因子、L2 缓存驻留优化... 每个都有详细的性能对比数据.
这个项目的意义不在于让 3090 跑赢 H100, 而是让没有顶级硬件的开发者也能研究 FP8 量化策略. Nice!
教程地址: amohan.dev/blog/2026/fp8-as-storage-imma-ampere/
项目实现: github.com/poad42/cuda-fp8-ampere
#HOW I AI#
