karminski-牙医
26-01-26 18:16 微博认证:AI博主

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#

发布于 日本