Study Notes / 2026 ・ No.01

LLM 札记

为什么显得聪明,在哪里会出错,该怎么用

发布

「LLM 为什么 ___」→ 下一个词的概率

聪明
0.58
会出错
0.19
快
0.13
贵
0.10

这就是 LLM 的全部。
接收一段文字,计算下一个词的概率,选出一个。
以下七章,都是从这一张图出发,一路接到实务的记录。

一

为什么聪明

CORE

LLM 是一台只练过「猜下一个词」这一个游戏、但练到了极大规模的机器。就这么简单。有意思的是,聪明为什么会从这里长出来。

简单的目标,逼出深层的能力

「要认真猜中下一个词,只靠语法就不够了」——这才是本质。

  • 要猜「1234 + 5678 = ___」,需要计算能力
  • 要接「凶手是管家。因为___」,需要推理能力
  • 要答「这段代码跑不起来的原因是___」,需要对程序的理解

也就是说,「把预测精度提上去」这个简单到极点的目标,作为副产品要求了对世界的知识与推理力。这就是聪明的来路。

处理的四个阶段

① 分词 — 把句子拆成细小的片段
② 向量化 — 把每个片段放到数千维的坐标上(国王 − 男人 + 女人 ≈ 女王)
③ Attention — 看上下文,重新塑造词义(见下章)
④ 输出 — 从整个词表的概率分布中选一个

为什么会突然变聪明

因为规模定律。增加数据量、参数量与算力,性能会相当可预测地上升。而且规模越过某个阈值之后,像多步推理这样没有教过的能力会突然出现(涌现)。

二

Attention — 用上下文重塑词义

词的坐标像词典一样是固定的。可是「河岸」和「存进银行」在英文里都是 bank,固定坐标区分不了。必须有一套机制,让词看着上下文重新塑造自己的意思。

Q・K・V 三个角色

记号名称作用比作图书馆
QQuery我想知道什么检索关键词
KKey我是关于什么的词书脊上的标题
VValue我能提供的信息书的内容

计算分三步

① 取某个词的 Q 与所有词的 K 的内积(相性)。② 用 softmax 变成合计为 1 的权重。③ 按这组权重对各词的 V 加权平均,作为自己新的向量。

「坐 在 河 的 bank 上」中 bank 的视角

河0.62██████████████ 的0.05█ bank0.18████ 上0.03▌ 坐0.12███

→ 吸收了六成「河」的信息,坐标移向「河岸」的区域

所谓「上下文决定词义」,实体就是这个加权平均。简单得出人意料。

它为什么赢了

  • 距离无关 — 与 100 个词之前的词也能一次内积直连。老一代的 RNN 靠传话游戏,会忘掉远处的词
  • 全部能以矩阵乘法并行计算 — 从历史上看这一点其实更关键。正因为能在 GPU 上一口气算完,模型才得以做大,才吃到了规模定律的红利
POINT

Transformer 取胜的真正理由,与其说是聪明,不如说是「和 GPU 合得来」。

Multi-Head 与层的深度

只取一次平均,只能捕捉一种关系,所以同样的运算要并行跑上几十套。分析下来会发现,有的头在追句法依存,有的头在找指代对象,有的头在维持话题——分工是自然长出来的,并非人为设计。

浅层 ── 词形、词性、就近的依存关系 ↓ 中层 ── 短语与从句的成块、指代的消解 ↓ 深层 ── 逻辑关系、说话人的意图、任务的结构

两点补充

  • 因果掩码 — 生成模型若能看到未来的词就等于作弊,因此被遮住。LLM 永远只能从左往右看
  • 平方级的成本 — 要算所有词对,上下文越长就越贵越慢。这是当下研究的主战场
三

训练的三个阶段

阶段做什么得到什么算力占比
预训练一味地预测下一个词元知识、语言能力、推理的底子99% 以上
SFT模仿示范对话「回应指令」这一形式很少
RLHF用人的评价来调校有用性、安全性、说话方式很少
METAPHOR

预训练是把巨大的石料开采出来,后训练是把它雕成形。算力几乎全在前者,但你实际感受到的品质,多半由后者决定。

预训练 — 答案就在数据里

把「实际出现的下一个词元的概率」提上去,仅此而已。正确答案就藏在文本自身之中,所以不需要人工标注也能无限扩充数据。这一点是决定性的。

不过在这个阶段,它还不好用。

用户「日本的首都是哪里?」 裸模型「这样的题目在考试中经常出现。第2题……」

知识是有的,但它不知道「问题是拿来回答的」。因为它只是在写「像样的下文」。

SFT — 教会它形式

用人写的高质量问答对来训练,只对回答部分计算损失。新知识几乎不会增加,只是把已有的能力变成取得出来的形状。

RLHF — 用偏好来打磨

写示范既贵又不稳定。相反,「A 和 B 哪个更好」这种选择又快又稳。利用的正是这种不对称。

① 让模型对同一问题给出多个回答,由人排序
② 用这些排序训练「另一个打分的神经网络」=奖励模型(人的代理人)
③ 朝奖励更高的方向更新本体
④ 用 KL 惩罚拴住它,别离原模型太远

④ 很关键,只做 ③ 的话模型一定会钻奖励模型的空子(奖励黑客)。写得又臭又长、多加项目符号、多夸对方——它会发现这些没有实质却能提分的偏方。

RLVR — 推理模型的真面目

数学和代码有机器可以自动判定的标准答案。那就不需要奖励模型,可以直接把正确与否当作奖励。而且想得越久正确率越高,于是在训练过程中,模型会自发学会写长长的中间步骤、自我纠正「等等,这里错了」、把不同解法互相对照。这不是人教的,而是它为了提高正确率的结果。

结构性的副作用

  • 谄媚 — 人会给「附和自己」的回答打高分,奖励模型学到了这一点,模型于是变得迎合。这是机制上的必然
  • 对齐税 — 强化安全性与礼貌之后,输出的多样性和部分性能有时会下降
四

幻觉从何而来

THESIS

幻觉不是等着被修的缺陷,而是从这套设计里必然长出来的副作用。它同时也是生成能力正常工作的结果。

原因① 结构上就没有「不知道」这个选项

输出是整个词表上的概率分布,概率再低,分布也不会归零。就算问的是并不存在的论文,看起来像样的词也会以一定概率排出来。因为它必须输出点什么,于是产生了形式完美、内容空洞的句子。

原因② 知识是被有损压缩过的

数万亿词元被压进几千亿个数值里。就像 JPEG 压到极限时,轮廓还在而细节崩掉。

  • 反复出现的事实 → 被多次强化,牢固
  • 只出现过一次的事实 → 被周围的模式淹没,垮掉

结果它必然带着这样的偏差:对有名的事物很强,对冷门的专有名词、数字、日期、出处很弱。

原因③ 后训练让它更严重

SFT 的示范几乎全都是「堂堂正正回答问题」的文章。可是写示范的人写的是自己知道的东西,转移到模型身上的却只有「回答的形式」。

RLHF 让它更糟。比起「我没有确切的信息」,评价者往往更偏好「创立于 1897 年,首任会长是……」——而且并不去核实对错。于是「答得笃定」这件事本身被奖励了。

容易发生的场景

风险场景
高出处、论文名、URL、条款编号、API 的方法名
高冷门人物或企业的细节、精确的日期与数值
高前提本身就错的提问(即使不是事实,它也会编出理由)
中长文的后半(把自己先前的错误当前提继续堆叠)
低一般性说明、摘要、翻译,以及在你给的材料内部就能完成的作业
RULE OF THUMB

给了材料再让它处理,幻觉少;让它从记忆里往外掏,幻觉多。

怎么应对

  • 不靠它的记忆,把材料交给它(做成摘要、分析的形式)
  • 以可验证的单位接收结果(代码就跑一遍,出处就自己点开)
  • 明确写上「不知道就说不知道」(可以抵消后训练带来的压力)
五

提示词的技术

PRINCIPLE

模型是通过 Attention 参照上下文来给输出加条件的。也就是说,没写出来的东西就不存在。把前提写到「对人说会显得失礼」的程度,才是正解。

① 具体性 — 效果最大

✗ 「帮我评审一下这份规格书」 ✓ 「请以开发供应商的视角评审这份概要设计书。 重点指出实现时容易返工的含糊表述, 以及非功能需求的遗漏。按重要度排序,并附上原文引用」

差别在角色、目的、输出格式三点。另外「你是一位优秀的〇〇」这类说法的效果常被高估,具体的情境说明(读者是业务部门的科长级,技术术语讲不通)要有效得多。

② 给它看一个例子

语气和格式,与其解释不如直接示范。把过去做得好的一份成果贴进去,精度就会明显跳升。

③ 把材料交给它

与其「讲讲〇〇」,不如「读完这份资料,按〇〇的视角整理」。这是应对幻觉的正手。

④ 顺序 — 长资料在前,指令在后

【资料】(贴入长文) --- 基于以上内容,请做〇〇。

分隔可以用 ---、小标题,或者 XML 标签(<资料>...</资料>)。

⑤ 指定思考的顺序

「先把前提条件与约束梳理出来,再给方案」。上来就要结论,它会被最先冒出的方向带着走。和人一样。

⑥ 不求一击命中,来回打磨

把第一次的输出当作草稿,用「三个方案 → 选一个 → 局部修改」的方式削出来,比写一条冗长完美的提示词落地更快。

⑦ 对付谄媚

  • 「我不是要你赞成,请指出弱点」
  • 「如果这个方案失败,原因会是什么」
  • 「如果我的前提有错,请先说这一点」

第三条同时还能防住由错误前提引发的幻觉,性价比最高。

⑧ 分开会话

长会话的上下文会变脏,会被失败的方向一直拖着走。要换方针就开新会话。加上平方成本的问题,无谓地拉长会话还会变慢。

可以复用的模板

# 背景 (项目、读者、约束、期限) # 请求 (一件具体的任务) # 输出格式 (结构、长度、语气) # 注意 (希望避免的事;有不明处请反问)
六

MCP・技能・智能体

LLM 本质上是「放进文字、吐出文字的盒子」,本身没有触及世界的手段。以下是叠在它外侧的三层。它们不是竞争关系,而是层次不同。

概念补上什么一句话比作做菜
MCP通往外部系统的手脚能做什么厨具
技能作业的操作手册怎么做菜谱
智能体自主的循环谁来转这个圈厨师

MCP — 连接的通用规格

把过去按各家 AI 服务分别实现的连接,像 USB-C 一样规格化。做一个 GitLab 的 MCP 服务器,任何支持它的 AI 都能用。MCP 服务器提供「可用工具的清单与说明」,LLM 读了之后判断该调用哪一个。

技能 — 需要时才读的手册

实体就是 Markdown 说明书。巧妙之处在于平时只有说明文字是可见的,等到相应的请求来了才去读正文。因为全部常驻会挤占上下文——和图书馆的索引是同一个思路。

智能体 — 看着结果决定下一步

① 思考接下来该做什么
② 使用工具(MCP、执行命令、操作文件)
③ 看结果 → 未达成就回到 ①

决定性的区别在于能自己应对预料之外的情况。测试挂了、和设想不一样——能否在这里改变方针,就是它与普通自动化脚本的差距。

三者的配合

智能体接到「评审这个 MR」,开始循环 ↓ 从技能中读取「本公司的评审要点」 ↓ 用 MCP 连上 GitLab 取回差异 ↓ 发现没有测试,自行决定追加调查 ↓ 用 MCP 发表评论

分工是:MCP 是手脚,技能是知识,智能体是意志。

实务中一定会碰到的注意点

  • 权限 — 它是真的能删文件、能发消息的。设计上必须插入确认环节
  • 提示词注入 — 外部数据里可能写着「忽略此前的全部指示」。从外面来的东西一律当作数据而非指令,这是铁律。由于 Attention 会不加区分地参照上下文中的字符串,这仍是一个难以完全防守的领域
  • 可靠性的累乘 — 每步 95% 成功,重复 20 次整体就只剩 36%。循环越长,验证越重要
CAUTION

一问一答就能结束的事情,这三样一个都不需要。把智能体用在简单作业上,只会又慢又贵。

七

规格表怎么读

模型发布时的规格,可以分成规模、容量、精度、种类、成绩、价格六大类。

规模 — B

B = Billion(十亿),即参数量。7B 就是持有 70 亿个数值。这正是第四章所说「被有损压缩的知识」的容量本身。

0.5B〜3B手机、嵌入式 7B〜14B个人电脑能跑的实用线 30B〜70B正经规模。多张 GPU 或大内存 Mac 100B 以上基本上要靠云
  • 671B-A37B 这样的写法 — 总参数 671B / 每个词元实际激活的是 37B(A = Active)。聪明程度更看总数,速度更看激活数。8x7B 属于同一类
  • T(Trillion) — 训练词元数。同样的 B,训练量大的更强

上下文长度 — K / M

128K 即 12.8 万词元。这正是第二章那个平方成本发作的地方。有两点要注意:输入与输出常常是分开计算的;以及标称值与可用值不是一回事——长上下文中段被漏读的现象已被反复观察到,「放得进去,不等于能被准确使用」。

精度与量化 — 本地运行的关键

写法每个参数用途
FP324 字节基本只在训练时
BF16 / FP162 字节标准推理
FP8 / INT81 字节提速
INT4 / Q40.5 字节本地运行的主流
RULE OF THUMB

所需内存 ≒ B 数 × 字节数 × 1.2。7B 的 4bit 约 4〜5GB,70B 的 4bit 约 40〜45GB,70B 的 BF16 约 160GB。Mac 是统一内存,按装机量的七成估算。

Q4_K_M 是 GGUF 的量化方式,K 系是按块改变精度的做法,末尾的 S/M/L 表示尺寸与质量的折中程度。拿不准就选 Q4_K_M 或 Q5_K_M。低于 4bit,质量下滑会突然变得明显。

表示种类的后缀

写法含义
Base只做了预训练。第三章那个「不回答问题的裸模型」。用作再训练的底座
Instruct / Chat做完了 SFT+RLHF。平时用的就是这个
Thinking / -R经过 RLVR 训练。先想很久再回答
Distill以大模型输出为教师的小型版。往往比同 B 的普通模型更强
VL / Omni能处理图像或声音
Coder / Math专攻特定领域

基准测试

名称测什么
MMLU / MMLU-Pro广泛的学科知识
GPQA专家级的科学题
AIME / MATH数学
HumanEval短代码生成
SWE-bench能否解决真实的 GitHub issue(最接近实务)
LMArena (Elo)人类的盲测对比

基准题混进训练数据的污染始终存在嫌疑,数值又是自报的。测量条件不同就没法比较。看实务就看 SWE-bench,看体感就看 Elo,相对更可信。

许可证与价格

开放权重 ≠ 开源。权重发布了,训练数据和代码却不公开、商用还附带条件,这种情况很常见。若是 Apache 2.0 或 MIT,限制就基本没有了。

  • $/1M 词元 — 输入与输出分开计价。输出通常是输入的 3〜5 倍
  • 缓存价格 — 在反复使用相同前缀的场景里,会大幅左右实际花费
  • TPS / TTFT — 体感速度更取决于首字延迟(TTFT)

运行时可调的参数

这里说的「参数」,全都是怎么从概率分布里挑的设置。回想一下封面的那张图。

名称效果参考值
temperature把分布压平的程度。越高越多样也越不稳事实类 0〜0.3 / 创作 0.8〜1.0
top_p取累积概率到 p% 为止的候选0.9 左右
top_k只取排名前 k 个作为候选40 左右
max_tokens输出上限。输出被截断的第一大原因看用途
stop出现该字符串就停止结构化输出时好用
seed固定随机数,保证可复现验证时

实务上只动 temperature 就够了。和 top_p 一起动,行为就读不懂了。

到底该看哪里

要在本地跑 — 量化后的 GB 数 → B 数 → 许可证
要用 API 上业务 — 实务向基准 → 上下文长度 → 输出侧单价
要快速判断性能 — 总 B 数(聪明的上限)与激活 B 数(速度与成本)的组合
FINAL

最终,准备 5〜10 个自己的真实任务去试,是最快的办法。公开基准与业务中的好用程度,偏差比想象中大。

结 — 一页总结

  1. 机制只有预测下一个词元。但要把预测做到极致,就需要对世界的理解。这是聪明的源头。
  2. Attention 用上下文重塑词义,而它能并行计算,才使规模化成为可能。
  3. 预训练给能力,后训练给可用的形状。谄媚是后者的副作用。
  4. 幻觉是这套设计的必然产物。别让它掏记忆,把材料交给它,并以可验证的形式接收。
  5. 提示词要写清角色、目的、输出格式,靠来回打磨去削。长会话要拆开。
  6. MCP 是手脚,技能是知识,智能体是意志。外部数据永远当作数据。
  7. 规格表上B 数与量化决定内存,基准只是参考。拿真实任务去试最快。

LLM 札记 — 全七章 / 2026.09

← 返回文章列表