跳到主内容
快讯直播
AI智模界
AI 词典

矩阵乘法(MatMul):大模型的算力都花在这

一句话定义:矩阵乘法(Matrix Multiplication,常缩写为 MatMul)是把两张数字表格按“左表取一行、右表取一列,对应位置相乘再全部相加”的规则,压缩成第三张表格的运算。

它是怎么算的

假设 A 是 M×K 的表,B 是 K×N 的表,结果 C 是 M×N 的表。C 里第 i 行第 j 列那个格子,等于 A 的第 i 行与 B 的第 j 列逐项相乘后求和。公式写作 C[i][j] = Σ A[i][k]·B[k][j]。

举个具体例子:一张“3 个学生 × 4 门课”的成绩表,乘一张“4 门课 × 2 种能力(理科权重、文科权重)”的换算表,得到“3 个学生 × 2 种能力”的结果表。每个结果格要做 4 次乘、3 次加。如果成绩表有 1000 个学生、100 门课,输出 100 列,那么光这一层就要做上亿次乘加。

规模感来自这里:输出有 M×N 个格子,每格 K 次乘加,总量约 2MNK 次浮点运算。维度一起翻倍,计算量就是原来的 8 倍。

GPU 快的不是“会算”,是“能同时算”

单次乘加,CPU 一点不慢。真正的差别在于:矩阵乘法里每个输出格子的计算彼此独立,谁也不用等谁——这是天然适合并行的结构。GPU 的做法是堆上成千上万个简单计算单元,让它们各自负责一部分格子。好比不是把一个收银员的手速练到极限,而是直接开一千个收银台。所以衡量 GPU 好不好用,关键不是“单核算得多快”,而是“能不能被喂饱”。

容易混的几个概念

运算输入输出是否求和
逐元素乘法两张同形状的表同形状的表不求和,只同位相乘
点积(dot product)两个向量一个数求和一次
矩阵乘法M×K 与 K×NM×N 的表每个格子求和 K 次

可以这样理解:矩阵乘法就是把一大堆点积批量做完,再把结果摆成一张表。工程实现里这类运算常被称作 GEMM(通用矩阵乘法),是各种数值库重点优化的对象,具体实现细节以各家官方文档为准。

为什么说 Transformer 的算力都在这儿

注意力机制里,Q 乘 K 的转置得到注意力分数,softmax 之后再乘 V 做加权求和;多头拼接后的输出投影、前馈网络的两层全连接——这些全是矩阵乘法。所以“训练一个大模型要多少算力”这个问题,基本可以翻译成“把模型里所有 MatMul 的 M、N、K 乘起来加总,再乘上 token 数量和训练步数”。

对从业者和普通人的意义

对从业者:优化推理速度,八成时间是在优化 MatMul。批处理(batching)之所以重要,是因为请求太少时矩阵会变得又瘦又长,并行单元闲着;把多个请求拼成一批,等于把矩阵填满。低精度计算、算子融合、分块(tiling)这些手段,目标也都是让数据搬运别拖住计算。

对普通人:大模型按 token 计费、上下文越长越贵,根源就在这张乘法表上——序列变长,注意力那张矩阵按平方增长,算力和显存跟着涨。看懂 MatMul,就大致看懂了 AI 账单是怎么来的。

AI 生成本文由 AI 基于公开信息自动生成,仅供参考。