课程/M10/M10 数值线性代数
M105 篇概念24 道题

M10 · 数值线性代数

一句话:数学上的线性代数在纸上是精确的,在计算机里却是「有限精度 + 有限带宽」的游戏;这一模块讲清楚误差、速度与稀疏性从哪来。

这个模块解决什么

前九个模块把线性代数的概念搭完了:向量、矩阵、方程组、特征值、SVD。但真实的计算发生在浮点数上、发生在 GPU 上、发生在「大部分元素是 0」的矩阵上。

M10 补上这三层:

  • 精度层(10.1–10.2):一个数怎么存、误差怎么累积、矩阵把误差放大多少倍。核心量是机器精度 与条件数 。
  • 速度层(10.3):为什么 GPU 为矩阵乘法而生。核心量是算术强度与 Roofline 拐点。
  • 规模层(10.4–10.5):当 大到无法求逆、无法稠密存储时怎么办。核心工具是迭代法与稀疏格式。

一句话串起来:误差告诉你「能信几位」,GEMM 告诉你「算得多快」,迭代与稀疏告诉你「大规模怎么算」。

本模块的现实问题

  1. 5 000 万笔交易用 fp32 累加,为什么一天会少算 1.3 亿元,而且没有任何异常?(10.1)
  2. 条件数 为什么等于「丢掉 6 位有效数字」?3 分钟的定轨弧段到底能不能定出轨道?(10.2)
  3. 一步训练 FLOP,GEMM 只跑到峰值 30% 会多花多少小时?(10.3)
  4. 10 天天气预报每个时窗解一次、共 960 次,为什么共轭梯度比消元更合适?(10.4)
  5. 20 亿节点的 PageRank,光 CSR 结构就 176 GB,怎么把每轮带宽砍掉一半?(10.5)

概念地图

flowchart LR P1[1.4 范数] -.-> A[10.1 浮点数与误差] P2[7.2 SVD] -.-> B[10.2 矩阵范数与条件数] P3[3.3 矩阵乘法] -.-> C[10.3 BLAS 与 GEMM] P4[4.5 伪逆] -.-> D[10.4 迭代法与 CG] A --> B B --> C B --> D C --> E[10.5 稀疏矩阵] C --> D

实线是模块内的主依赖,虚线是模块外的前置。10.2 是枢纽:往上承接浮点误差,往下同时喂给 GEMM 与迭代法。

学习顺序

顺序文档时间读完你应该能……
110.1 浮点数、舍入与误差35 min说出 fp16/bf16/fp32 的精度与范围差异,手算一次灾难性抵消
210.2 矩阵范数与条件数40 min算 1/2//Frobenius 范数,用 给出误差上界
310.3 BLAS 与 GEMM40 min用 与访存量估算 GEMM 时间,解释分块为什么有用
410.4 迭代法与共轭梯度40 min手算一步 Jacobi/CG,说明收敛率与 的关系
510.5 稀疏矩阵30 min写出 CSR 三个数组,估算稀疏乘法与 MoE 的计算量

建议按顺序读。若时间紧,10.1 → 10.2 → 10.3 是「理解大模型推理成本」的最短路径;10.4 偏科学计算与二阶优化,10.5 偏系统与架构。

本模块的大模型钩子

  • fp16/bf16 训练(10.1):fp16 需要 loss scaling,bf16 用范围换精度;主权重必须留 fp32,否则小更新会被舍入吃掉。
  • KV Cache 量化(10.1、10.2):缓存张量的精度直接决定显存与带宽,长上下文先被显存卡住。
  • 量化误差放大(10.2):,条件数大的层不适合低精度。
  • prefill vs decode(10.3):prefill 是计算受限的大 GEMM,decode 是访存受限的 GEMV;decode 速度上界约为带宽除以每步读取字节数。
  • Newton-CG 与二阶优化(10.4):用 Hessian-向量乘积 + 截断 CG,不显式构造 ;Adam 可看作对角预条件。
  • MoE 与结构化剪枝(10.5):MoE 的计算随 top- 增长、显存随专家数增长;2:4 稀疏与块稀疏能被硬件加速。

自测(读完再做)

  1. fp32 的机器精度是多少?1 附近与 1024 附近的相邻间距各是多少?为什么 1024 附近更粗?
  2. 为什么 在 fp32 里只剩不到 1 位可信数字?二次方程 的小根应该怎么稳定地算?
  3. 对 , 与 各是多少?若右端相对扰动 ,解的相对误差上界是多少?
  4. 的 GEMM 有多少 FLOPs?算术强度约多少?为什么 decode 时同样的权重矩阵会变成访存受限?
  5. CG 适用于什么矩阵?收敛率与 的什么函数有关?对 ,CG 几步能精确解出 系统?
  6. 写出 §10.5 例子的 CSR 三个数组。MoE 的 、top- 时,每 token 的计算量与参数量分别是单个专家的几倍?
自测答案
  1. 。1 附近间距 ,1024 附近 ;指数每大 1,间距翻倍。
  2. 存进 fp32 变成 ,减去 1 得 ,真值是 ,相对误差约 。小根用韦达定理:,避免两个相近大数相减。
  3. ,、,所以 、;相对误差上界 。
  4. FLOPs;最小访存 MB,AI 约 FLOP/byte。decode 时 ,权重仍要整块读,FLOPs 只有 ,AI 约 1,远低于拐点。
  5. CG 要求 对称正定;收敛因子约 ,迭代次数约随 增长。 系统在精确算术下 2 步收敛(第 5.2 节手算验证)。
  6. values=[1,2,3,4,5]、col_idx=[0,3,1,0,2]、indptr=[0,2,3,3,5]。MoE:每 token 计算是单专家的 倍,参数量是 倍。

本模块文档

配套材料:


上一篇 → 9.1 概率与随机变量 | 下一篇 → 10.1 浮点数、舍入与误差

本模块概念

做本模块练习 →
输入关键词开始搜索