什么是 MatMul(矩阵乘法)?
普通算术是一个人去超市买一瓶水算账;而 MatMul 就像整个餐厅数十桌客人的多道菜品总账单瞬间批量对账 —— 占据了 ChatGPT、DeepSeek 等大模型 80% 以上 的算力消耗!
一次只能算一个数字
比如“单价 5 元 × 3 瓶苹果汁 = 15 元”。虽然简单,但要给 1000 万个神经元逐个算权重,CPU 会活活累瘫。
- 🔹 零维标量:只能表示单一物理量(如温度、价格)
- 🔹 算力利用率低:无法发挥现代 GPU/NPU 上万核心的并行狂飙
“第一矩阵的行” 乘 “第二矩阵的列”
左矩阵的每一行代表一个对象的特征,右矩阵的每一列代表一组特征权重。行列相乘再累加,一瞬间完成千亿神经元的立体投影!
- ✨ 高维关联:瞬间表达文本语义词向量与注意力(Attention Q×K^T)
- ✨ 硬件极度友好:完美匹配 Tensor Core / 3D Cube 脉动阵列硬件
拆解 MatMul 矩阵乘法的 4 大铁律
从维度对齐到专用硬件加速,搞懂线性代数的灵魂核心
1. 维度对齐法则 (M×K 与 K×N)
左矩阵的列数必须严格等于右矩阵的行数(K),才能将对应数字两两配对相乘相加,最终输出 $M \times N$ 的新矩阵。
2. 几何本质:空间线性变换
矩阵乘法不是枯燥的填数字,它在几何上代表把空间里的多维向量进行旋转、缩放与特征投影映射。
3. GEMM 通用矩阵乘
高性能计算领域的圣杯:C = α(A × B) + βC。BLAS、cuBLAS、CANN 倾尽几十年心血把 GEMM 优化至硬件物理极限。
4. 专用硬件压铸 (Tensor Core)
英伟达 Tensor Core 与华为达芬奇 3D Cube 把一个完整的微型矩阵乘加(MAC)做成了硬件单周期电路,狂飙算力!
🕹️ $2 \times 2$ 矩阵乘法交互推演台
点击切换输出矩阵的目标单元格,观察左矩阵的“行”与右矩阵的“列”如何相乘相加:
Attention Q×K^T 的本质
大模型的自注意力机制(Self-Attention)就是两个巨大的矩阵相乘:查询矩阵 $Q$ 乘以键矩阵 $K^T$。
乘出来的结果代表每一个单词与全篇所有单词之间的“关联密切程度得分”。
Strassen 与深层分块优化
普通的矩阵乘法复杂度是 $O(N^3)$。数学家 Strassen 提出了分治矩阵乘法,将复杂度降至 $O(N^{2.81})$。
在芯片底层,工程师采用分块(Tiling)算法,将数万维的大矩阵切成小积木塞入片上 SRAM,避免显存拥堵。
从量子力学到大模型
无论是量子力学的薛定谔方程、计算机 3D 图形的光影变换,还是千亿参数大模型的多模态理解。
矩阵乘法是人类用数学描述物理世界万物状态流转的最通用语言。