突破性能瓶颈:软件赋能旧版GPU实现FP8计算
为突破老旧GPU在深度学习中的性能瓶颈,开发者推出开源工具Feather,通过软件方式实现FP8级别的计算效率,让没有硬件支持的GPU也能获得接近FP8的加速效果。当前,随着模型规模扩大,GPU内存带宽成为主要瓶颈。虽然FP8等低精度格式能显著提升带宽利用率,但仅限于NVIDIA Ada和Blackwell架构的高端GPU支持,大多数用户仍使用RTX 30/20系列等不支持FP8的设备。 Feather的核心思想是将多个FP16或FP8数据打包进一个FP32容器中,实现内存压缩。例如,一个FP32可存储两个FP16或四个FP8,从而减少内存占用,缓解带宽压力。尽管打包和解包会带来一定计算开销,但深度学习任务多为内存密集型,而非计算密集型,因此这种优化能有效提升整体效率。 在GPU内存层级中,SRAM带宽最高但容量极小,而HBM(显存)带宽仅为SRAM的约1/7。计算核心常因等待数据加载而空转,即“内存绑定”问题。使用低精度数据类型如FP8,可将数据吞吐量提升至原来的4倍,但需硬件原生支持。Feather通过软件模拟,绕过这一限制。 针对FP16,可直接用位操作打包;FP8则因无原生支持,需借助ml_dtypes库完成E5M2和E4M3格式的转换。E5M2格式解包简单,速度更快;E4M3精度更高,但解包复杂,Feather为此专门设计了GPU内核。 为实现高效计算,Feather采用Triton语言编写GPU内核。Triton允许用Python编写GPU代码,避免了CUDA的复杂性。内核在加载打包的FP32数据后,解包为FP8,再上转为FP32进行计算,最后写回结果。虽计算过程未提速,但因数据量减少,整体带宽效率显著提升。 实测结果显示,在GEMV基准测试中(16384×16384矩阵),Feather使用FP8-E5M2可实现3.3倍加速,接近理论4倍上限。FlashAttention测试也表明,两种FP8格式在标准深度学习任务中保持足够精度,误差可控。 Feather适用于任何内存受限、对精度要求不极端的场景。但目前仍处早期原型阶段,存在打包/解包开销、内核启动延迟等局限。项目已开源,欢迎社区贡献。该工具为广大小型研究者和开发者提供了在旧硬件上高效运行大模型的新路径。
