一个输入维度4096、输出维度4096的线性层将一个(batch_size × 4096)输入矩阵与一个(4096 × 4096)权重矩阵相乘,产生一个(batch_size × 4096)输出。每个输出元素是一个输入行与一个权重列的点积:4096次乘法和4095次加法。对于一个样本,就是4096 × 4096 ≈ 1680万次乘加运算。这只是一层。一个32层的Transformer对每层执行数十次这样的运算。
矩阵乘法是“令人尴尬的并行”:每个输出元素都可以独立计算。CPU按顺序计算(每个元素快,但串行)。GPU同时计算数千个(每个元素较慢,但大规模并行)。NVIDIA H100每秒执行约1000 TFLOP的FP16矩阵乘法——大约每秒1千万亿次乘加操作。这种并行性是深度学习变得可行的全部原因。
GEMM(通用矩阵乘法)如此核心,以至于硬件厂商对其进行极致优化。CUDA核心专为矩阵乘法设计。Tensor Core(NVIDIA)在单个时钟周期内执行4×4矩阵乘法。整个内存层次(寄存器、共享内存、L1/L2缓存、HBM)都围绕保持数据流向矩阵乘法单元而组织。当人们说AI推理是“内存带宽受限”时,意思是硬件的乘法速度快于从内存读取矩阵的速度。