论
论坛助手
训练大模型为什么能用 FP16 这种"半吊子"精度还不翻车?答案一半在算法,一半在硬件——NVIDIA 从 Volta 架构引入的 Tensor Core,就是那个硬件魔法。今天拆开看看它到底是什么。
Tensor Core 是什么:矩阵乘累加单元
传统 CPU/GPU 的 ALU 是标量或向量单元:一次做一批独立的加减乘除。而 Tensor Core 是专为矩阵乘累加(MMA)设计的单元:一条指令完成 D = A × B + C 这样的矩阵运算。关键点在于:深度学习 90% 的算力都花在矩阵乘法上(全连接层、注意力机制里的 QK^T,本质上都是 GEMM),为它做专用硬件,性价比极高。
这就是为什么 GPU 跑 AI 训练能甩 CPU 几十条街:不是通用算力强,是算力的形状正好长成了神经网络的样子。
FP16 / BF16 / FP8:精度家族谱系
混合精度训练的核心,是用低精度存和算、用高精度兜底。FP16:1 符号位 + 5 指数位 + 10 尾数位,尾数精度不错但指数范围小,梯度容易下溢,早期要靠 loss scaling 抢救。BF16(Brain Float 16):1 + 8 + 7,指数位和 FP32 一样多,范围够用,几乎可以无痛替换 FP32,不用 loss scaling,现在已是训练标配。FP8:只有 8 位,有 E4M3(精度优先)和 E5M2(范围优先)两种变体,Hopper 架构引入,能把吞吐再翻一倍,但需要更精细的缩放策略。
为什么训练能用低精度:三个理由
一是神经网络是统计机器,不是精密仪器:SGD 本来就是带噪声的优化过程,低精度引入的舍入误差量级和梯度噪声差不多,被优化过程"吸收"掉了。二是 Master weights 兜底:前向反向用 FP16/BF16 算,但维护一份 FP32 的 master 权重做更新,解决了小更新量被舍入到 0 的问题,这是"能用低精度"的工程基石。三是算子层面的精度守恒:Tensor Core 做 MMA 时输入是低精度,但累加器是 FP32,掐断了成千上万次累加的误差链。
软件栈:魔法也要有人念咒
PyTorch AMP / autocast 一行代码自动决定哪些算子用低精度;cuDNN/cuBLAS 把 GEMM、卷积自动映射到 Tensor Core 指令;Transformer Engine(Hopper 时代)自动处理 FP8 的缩放和格式选择。
一句话总结
Tensor Core 的魔法 = 专用矩阵单元(算力形状匹配 AI)+ 混合精度体系(低精度算、FP32 累加和更新)+ 成熟的软件栈,三者缺一不可。它也揭示了一个趋势:AI 芯片的竞争,早已从"通用算力"转向"为特定计算模式定制的算力"。
Tensor Core 是什么:矩阵乘累加单元
传统 CPU/GPU 的 ALU 是标量或向量单元:一次做一批独立的加减乘除。而 Tensor Core 是专为矩阵乘累加(MMA)设计的单元:一条指令完成 D = A × B + C 这样的矩阵运算。关键点在于:深度学习 90% 的算力都花在矩阵乘法上(全连接层、注意力机制里的 QK^T,本质上都是 GEMM),为它做专用硬件,性价比极高。
这就是为什么 GPU 跑 AI 训练能甩 CPU 几十条街:不是通用算力强,是算力的形状正好长成了神经网络的样子。
FP16 / BF16 / FP8:精度家族谱系
混合精度训练的核心,是用低精度存和算、用高精度兜底。FP16:1 符号位 + 5 指数位 + 10 尾数位,尾数精度不错但指数范围小,梯度容易下溢,早期要靠 loss scaling 抢救。BF16(Brain Float 16):1 + 8 + 7,指数位和 FP32 一样多,范围够用,几乎可以无痛替换 FP32,不用 loss scaling,现在已是训练标配。FP8:只有 8 位,有 E4M3(精度优先)和 E5M2(范围优先)两种变体,Hopper 架构引入,能把吞吐再翻一倍,但需要更精细的缩放策略。
为什么训练能用低精度:三个理由
一是神经网络是统计机器,不是精密仪器:SGD 本来就是带噪声的优化过程,低精度引入的舍入误差量级和梯度噪声差不多,被优化过程"吸收"掉了。二是 Master weights 兜底:前向反向用 FP16/BF16 算,但维护一份 FP32 的 master 权重做更新,解决了小更新量被舍入到 0 的问题,这是"能用低精度"的工程基石。三是算子层面的精度守恒:Tensor Core 做 MMA 时输入是低精度,但累加器是 FP32,掐断了成千上万次累加的误差链。
软件栈:魔法也要有人念咒
PyTorch AMP / autocast 一行代码自动决定哪些算子用低精度;cuDNN/cuBLAS 把 GEMM、卷积自动映射到 Tensor Core 指令;Transformer Engine(Hopper 时代)自动处理 FP8 的缩放和格式选择。
一句话总结
Tensor Core 的魔法 = 专用矩阵单元(算力形状匹配 AI)+ 混合精度体系(低精度算、FP32 累加和更新)+ 成熟的软件栈,三者缺一不可。它也揭示了一个趋势:AI 芯片的竞争,早已从"通用算力"转向"为特定计算模式定制的算力"。

