跳到主要内容

算力分裂 — 个人怎么用上大模型,以及这本书没讲的

这一章讲两组东西: 原书最后一章的正题——训练与使用之间的「算力分裂」 催生了哪些让个人也用得起大模型的技术;以及原书自认「为简洁而跳过」的 五块内容,我们各用一小节补齐轮廓。 它在全书的位置:这是「写完的书」与「你手上的现实」之间的桥。

1. 顶层全景:一道裂缝,两排技术

第 05 章的规模数字推出一个社会性后果,原书称之为算力分裂 (compute schism)1:

从零训练一个大模型,只有大公司或公共机构付得起; 而它——推理、改造成助手、适配到自家任务—— 在机器条件很紧时也有办法。本地跑的价值不只是省钱:还有保密。

裂缝左边(贵): 从零预训练 —— 本书第 05 章,无解,只能出钱
裂缝右边(省): 不动参数: 改输入 · 先打草稿 · 先查资料再答(§2)
动一点参数: 只训一小撮参数(§4) · 直接合并模型(§5)
压缩部署: 每个参数只留几个位(§3)

图说:本章前四节按「越来越动真格」的顺序走右边这排。

2. 不动参数的三招

提示工程:把信息从参数挪到输入

提示工程(prompt engineering)= 精心设计喂给模型的那段开头文字, 去偏置它的自回归续写(第 03 章)。第 11 章的少样本就是它的雏形。 它的本质是:把传统上编码在参数里的信息,挪到输入里—— 参数动不了,输入总是你的2

这条路有些出人意料的有效配方,比如原书引的一项研究:在提示里声明 「回答出自一位行家之手」,质量就能提升。提示利用的是训练语料里 已有的偏向——它不新造能力,只是把对的区域引出来3

提示能塞多少信息,受「模型一次能处理多少个 token」的限制—— 这个上限叫上下文大小(context size);而它贵的原因你在第 08 章见过:注意力的成本随长度平方涨4

思维链:让它先打草稿

第 11 章提过思维链这个名字,这里给机制:让模型在答之前,先把中间步骤 一步步写出来。为什么有效?原书给的解释干脆:拆出来的每一步都更简单, 训练时这种简单步骤被建模得更充分,所以预测得更确定—— 一路小步走,比一步跨到答案稳5

原书的例子(这道算术是它的真实示例)6:

问:吉娜有 105 颗豆子,给了鲍勃 23 颗,又拿 53 颗做了汤。还剩几颗?
直接答: 「还剩 29 颗。」(碰巧对)
思维链: 「一步步来:105 − 23 = 82;82 − 53 = 29。所以还剩 29 颗。」
换一个数: 53 − 5 − 7 + 26,直接答错了;思维链逐步写 (48, 41, 67),对了。

图说:把中间结果写出来,等于让模型把「心算」换成「草稿纸上的竖式」。

RAG:先查资料再回答

模型参数里的知识是训练截止时封存的,还不一定记得全。 RAG(Lewis et al. 2020)——中文叫检索增强生成,就是「先从文档库里捞资料、 再照着答」——给它外挂一个知识库7:

用户问题 → 嵌入模型(第 08、10 章的向量技术)把问题变成向量
→ 在文档库里检索(取向量最相近的几篇文档)
→ 把检索到的文档和指令拼进提示 → 模型照着文档答

图说:模型变成「智能接口」——答案里的信息来自参数之外的文档,
模型负责读懂问题、读文档、组织语言。

3. 量化:每个参数只留 4 个二进制位(主走查)

个人跑大模型的第一道坎是内存:第 02 章说过,参数通常 16 或 32 位一个数。 量化(quantization)就是把这个位数狠狠压小8

为什么压得起?训练不行——下山要积累极小的步长,低位数存不下。 但推理时,每个激活都是大量项相加,量化引入的误差在求和里互相抵消; 模型越大,这个平均效应越强。实测:压到每个参数 4–6 位,表现依然可观9

拿原书给的真实格式 Q4_1(llama.cpp 里的一种)走一遍账10:

一段 32 个参数的原始存法: 32 × 16 位 = 64 字节
Q4_1 的存法:
先存两个 16 位数:d(比例尺)和 m(零点) = 4 字节
每个参数只存 4 位整数 q ∈ {0,…,15} = 32×4 位 = 16 字节
读出时还原: x̃ = d×q + m
合计: 20 字节 —— 比 64 字节省了 2/3 以上

图说:损失的是「每个数的精度」,保住的是「整段数的范围与零点」。
内存省 2/3+,速度还更快——搬的数据少了(第 02 章:搬比算贵)。

实测代价(原书图 8.2):Llama-7B/13B 量化到几 GB 量级, 困惑度只微微上移11。另一派做法叫量化感知训练(QAT): 前向时假装已量化,反向时照常高精度传梯度——让模型在训练中就 学会适应低精度12

4. LoRA:只训练 1% 的参数(走查二)

第二道坎是微调太贵:第 05 章说微调要接着下山, 而 Adam 对每个参数还要额外存两个滑动统计——内存是参数个数的三倍起步。

LoRA(Low-Rank Adaptation,低秩适配,Hu et al. 2021)的解法: 冻结原模型的全部参数,只学一个「低秩修正」。对某个权重矩阵 W (C×D),不学新的 W,而是学两个小矩阵 A(R×D)和 B(C×R), 其中 R ≪ C,D——实际计算用 W + BA 代替 W。「低秩」指 BA 这个修正项的 秩最大只有 R:它不是任意改动,只是一个 R 维的微调方向13

设 W 是 4096×4096(1.67 亿参数),取 R=16:
A: 16×4096,B: 4096×16 → 合计 13.1 万参数
修正量 ≈ W 的 0.8%(几个百分点的量级)

初始化:A 随机,B = 0 → BA = 0,起点就是原模型,一丝不差。

图说:原模型冻结,只训练那对小的。
(矩阵尺寸是演示例;「几个百分点」是原书给的典型量级。)

它的三个工程红利,原书一一列出14:

  • 只调小矩阵 → Adam 的额外内存也只剩零头;
  • 商业场景下一基座多定制:每客户只存一对小 BA,基座只存一份;
  • W+BA 可以加回 W 里——合并后使用时的结构和参数个数与原模型完全一样, 零运行时开销。这是其它适配器(adapter,泛指「插进冻结模型里的小组件」) 做不到的。

再叠一层:还有个叫 QLoRA 的组合——预训练好的原始模型,它叫基座模型,先按第 3 节 压位数(省内存),LoRA 修正保持高精度(保训练)——两头都占15

5. 模型合并:参数空间里的加减法

最反直觉的一招:连训练都不训,直接把几个模型在参数空间里合并。 前提是它们是同一个基座微调出来的「亲戚」16

任务算术(Task Arithmetic,Ilharco et al. 2022):设基座参数为 θ, 在任务 t 上微调得到 θ_t,差量 τ_t = θ_t − θ 就叫「任务向量」。实验发现: θ + τ₁ + … + τ_T 表现出多任务能力;反之从 θ 里减掉某个 τ_t, 对应任务的表现就掉。「会什么」在参数空间里近似是可加减的17

后续工作处理多任务互相干扰的问题;另一条路是不合并参数而重组层, 或用随机优化同时搜「合哪些参数、拼哪些层」18

6. 这本书没讲的五块

原书结尾自己列了「为简洁而跳过」的清单,我们各给一小节轮廓19:

循环神经网络(RNN)。 注意力之前的序列标准:一个隐藏状态, 每读入一个 token 更新一次(LSTM、GRU 是代表)。训练它 = 把时间展开成 一长串复合——这门手艺逼出了今天还在用的整流器与门控(gating: 用学到的「开关」动态调制信息通过量,本质是带调节的跳跃连接)。 致命伤:结构是串行的,处理 T 个 token 就要 T 步,没法并行。 新一派(QRNN、S4、Mamba)把每步更新改成仿射形式,使整串更新可以 并行算出来——并行硬件充足时接近常数时间(或 log T)。

自编码器与 VAE。 自编码器(autoencoder,第 10 章去噪见过)把输入 压成低维表示再还原,顺带能自动发现数据的低维结构。VAE(变分自编码器) 给这个低维表示用损失强加一个指定的形状(比如标准正态),训完就能 直接采样出新的数据——第 11 章「建模 + 采样」配方的另一种实现。

GAN(生成对抗网络)。 两个网络对打:生成器从随机向量造假样本, 判别器分辨真假;生成器的训练信号就是「判别器的损失变大」。 理论上平衡点处,生成器造的样本和真数据不可区分;直觉上, 梯度穿过判别器回流时,顺便告诉生成器「判别器是靠哪些线索抓你的」—— 造假者从鉴定者身上学手艺。

图神经网络(GNN)。 蛋白质、3D 网格、社交网络这类数据不长在规则网格上, 卷积和注意力都不合身。GNN 的每层:每个顶点把直接邻居的激活 线性组合起来更新自己——像卷积,但「邻居」由图的边定义,不带几何。

还有一大类做法,行话叫自监督学习。 大方向:从没有标注的数据里白嫖监督信号。 总策略是造一个不需要标注、但逼出有用表示的假任务: 第 03 章的「猜下一个词」就是语言任务里的那一款; 通用另一款是掩码重建——遮住输入的一部分让模型还原 (BERT 在文字上这么干,视觉里遮图像块);视觉里还有一派让表示 对「不改语义的变换」保持不变、彼此又不冗余。

7. 作者的判断与证据

  • 「行家声明」提示有效,引 Xu et al. 2023——单篇实证,别当普遍规律;
  • 量化「4–6 位依然可观」与图 8.2 的困惑度微升,是实测;
  • LoRA「几个百分点」是原书给的典型量级;BA 可合回 W 是代数事实;
  • 任务算术的「可加减」是实验观察,原书未给理论;Mamba 的「常数/log T 时间」 有仿射结构的论证支撑;
  • 第六节五块原书各自只给一两页,我们的轮廓忠实于原书的详略。

8. 边界与局限

  • 本章技术是 2023–2024 快照:「一次能看多长」的上限、压位数的格式、合并方法都在快速演化, 具体格式名会过时,「动输入 / 动一点参数 / 压缩」这个分类不会;
  • RAG 捞文档的质量、LoRA 的 R 怎么选、合并的干扰控制,原书只给存在性;
  • 「本地跑」还有隐私之外的动机(成本、可控),原书提了,未展开;
  • 第六节的五块各够写一章——真要深入,RNN 系见第 12 章引的原始论文, 书架上 nndl-2e 等大部头有系统讲解。

9. 可带走的

  1. 算力分裂:训练是资本的,使用可以是个人的——本章全部技术都在裂缝右侧;
  2. 提示工程 = 把信息从参数挪到输入;思维链 = 把大跳拆成小步;
  3. RAG = 先查资料后回答:参数外的知识靠外挂,模型当会查资料的前台;
  4. 量化:推理时平均效应兜住误差,4 位可用;Q4_1 的账:64 字节 → 20 字节;
  5. LoRA:冻结 W、只学低秩 BA,参数个数降到几个百分点,还能合回去零开销;
  6. QLoRA = 量化基座 + 高精度 LoRA,两头便宜都占;
  7. 任务算术:同源微调模型的「能力」在参数空间近似可加减;
  8. 原书没讲的五块一句话版:RNN 输在串行(Mamba 修复)、VAE 给潜空间定形状、 GAN 造假者与鉴定者对练、GNN 把卷积推广到图、自监督 = 造假任务白嫖监督。

10. 原文地图

主题原书章原文位置
算力分裂The Compute Schismtext/27-fm-the-compute-schism.txt:8(搜「greatly exceed」) · :11(搜「cost or confidentiality」)
提示工程The Compute Schismtext/27-fm-the-compute-schism.txt:14(搜「prompt en」) · :31(搜「generated by a skilled」)
上下文大小与平方代价The Compute Schismtext/27-fm-the-compute-schism.txt:35(搜「context size」)
思维链与豆子例子The Compute Schismtext/27-fm-the-compute-schism.txt:68(搜「Chain of Thought」) · :50(搜「Let’s proceed step by step」)
RAGThe Compute Schismtext/27-fm-the-compute-schism.txt:86(搜「Retrieval-Augmented Gen」)
量化与 Q4_1The Compute Schismtext/27-fm-the-compute-schism.txt:99(搜「single-stream inference」) · :138(搜「Q4_1」) · :146(搜「20」)
量化感知训练The Compute Schismtext/27-fm-the-compute-schism.txt:155(搜「Quan」)
LoRAThe Compute Schismtext/27-fm-the-compute-schism.txt:170(搜「Low」) · :179(搜「BA」) · :186(搜「few percent」)
QLoRAThe Compute Schismtext/27-fm-the-compute-schism.txt:216(搜「QLoRA」)
模型合并与任务算术The Compute Schismtext/27-fm-the-compute-schism.txt:219(搜「Model merging」) · :229(搜「Arithmetic properties」)
RNN/MambaThe missing bitstext/28-fm-the-missing-bits.txt:6(搜「Recurrent Neu」) · :34(搜「Mamba」)
自编码器/VAEThe missing bitstext/28-fm-the-missing-bits.txt:42(搜「au」) · :49(搜「Variational Autoencoder」)
GANThe missing bitstext/28-fm-the-missing-bits.txt:58(搜「Generative Adversarial」)
GNNThe missing bitstext/28-fm-the-missing-bits.txt:77(搜「Graph Neu」)
自监督The missing bitstext/28-fm-the-missing-bits.txt:96(搜「self」) · :126(搜「masked」)

Footnotes

  1. 出处:「The Compute Schism」第 1–13 段(text/27-fm-the-compute-schism.txt:8,搜「greatly exceed」;:11,搜「cost or confidentiality」)。

  2. 出处:「The Compute Schism」§8.1,第 14–28 段(text/27-fm-the-compute-schism.txt:14,搜「prompt en」)。引 Sahoo et al., 2024。

  3. 出处:「The Compute Schism」第 29–33 段(text/27-fm-the-compute-schism.txt:31,搜「generated by a skilled」)。引 Xu et al., 2023。

  4. 出处:「The Compute Schism」第 34–40 段(text/27-fm-the-compute-schism.txt:35,搜「context size」)。

  5. 出处:「The Compute Schism」第 68–76 段(text/27-fm-the-compute-schism.txt:74,搜「simpler, hence have been better modeled」)。引 Wei et al., 2022 与 Kojima et al., 2022。

  6. 出处:「The Compute Schism」图 8.1(text/27-fm-the-compute-schism.txt:41,搜「105 beans」)。

  7. 出处:「The Compute Schism」第 78–93 段(text/27-fm-the-compute-schism.txt:86,搜「Retrieval-Augmented Gen」)。引 Lewis et al., 2020。

  8. 出处:「The Compute Schism」§8.2,第 94–117 段(text/27-fm-the-compute-schism.txt:99,搜「single-stream inference」)。

  9. 出处:「The Compute Schism」第 107–111 段(text/27-fm-the-compute-schism.txt:109,搜「averaging effect」)。

  10. 出处:「The Compute Schism」第 138–150 段(text/27-fm-the-compute-schism.txt:138,搜「Q4_1」;:146,搜「64 bytes」)。

  11. 出处:「The Compute Schism」图 8.2 题注(text/27-fm-the-compute-schism.txt:129,搜「wikitext」)。

  12. 出处:「The Compute Schism」第 155–159 段(text/27-fm-the-compute-schism.txt:155,搜「Quan」)。引 Ma et al., 2024。

  13. 出处:「The Compute Schism」§8.3,第 160–185 段(text/27-fm-the-compute-schism.txt:170,搜「Low」;:179,搜「BA」)。引 Houlsby et al., 2019 与 Hu et al., 2021。

  14. 出处:「The Compute Schism」第 186–213 段(text/27-fm-the-compute-schism.txt:187,搜「few percent」;:207,搜「integrated into the original architecture」)。

  15. 出处:「The Compute Schism」第 215–218 段(text/27-fm-the-compute-schism.txt:216,搜「QLoRA」)。引 Dettmers et al., 2023。

  16. 出处:「The Compute Schism」§8.4,第 219–228 段(text/27-fm-the-compute-schism.txt:219,搜「Model merging」)。

  17. 出处:「The Compute Schism」第 229–241 段(text/27-fm-the-compute-schism.txt:234,搜「Arithmetic properties」)。引 Ilharco et al., 2022。

  18. 出处:「The Compute Schism」第 243–252 段(text/27-fm-the-compute-schism.txt:243,搜「interference」;:247,搜「recombine their layers」)。引 Yadav et al., 2023;Yu et al., 2023;Akiba et al., 2024。

  19. 出处:「The missing bits」全章(text/28-fm-the-missing-bits.txt:3,搜「this volume skips many」):RNN 第 6–40 段、自编码器/VAE 第 42–56 段、GAN 第 58–75 段、GNN 第 77–95 段、自监督第 96–129 段。Mamba 引 Gu and Dao, 2023;LSTM 引 Hochreiter and Schmidhuber, 1997;GAN 引 Goodfellow et al., 2014;GNN 引 Scarselli et al., 2009;BERT 引 Devlin et al., 2018。