LLM 到底是什么?
LLM 本质上是一个函数:输入文本,输出关于下一个词元的概率分布。生成就是让这个函数跑在循环里——采样一个词元、拼接上去、把全部内容再喂回去、重复——直到触发停止词元或长度上限。从聊天应用到编程智能体,构建在它之上的一切产品,都是包裹在这个循环外层的编排。
模型文件本身只有两样东西:数十亿个浮点权重(即参数),以及一个把它们组合起来的固定计算图(参见 深入 Transformer 内部)。里面没有数据库,没有规则引擎,也没有草稿内存。推理时权重是冻结的;模型在对话中“记住”的一切,只是驻留在你提示词窗口里的文本。
核心循环
整个生成引擎的伪代码。任何厂商发布的东西都不会比这更深:
tokens = tokenize(prompt)
while not done and len(tokens) < max_context:
probs = model(tokens) # 一次前向传播
next = sample(probs, temperature)
tokens.append(next)
stream_to_user(next)
if next == stop_token:
done = True
这个循环里有两个旋钮主导着日常行为,而且都不在权重里:温度(temperature,采样的“冒险”程度)和最大上下文(能装下多少对话)。两者都是引擎在运行时施加的设置(参见 引擎参数)。
权重的物理形态
一个 "7B" 模型就是 7,000,000,000 个浮点参数。存储大小只取决于精度,与“聪明程度”无关:
| 精度 | 每参数字节数 | 7B 模型大小 |
|---|---|---|
| FP16(原生) | 2 | ~14 GB |
| 8 位量化 | ~1 | ~7 GB |
| 4 位量化 | ~0.55 | ~4 GB |
同样的权重,更粗的存储——用一点质量换大量内存(参见 量化)。参数量在训练时就固定了;使用模型永远不会改变它。
规模阶梯
参数量是衡量“何时出现了什么”的粗糙但诚实的标尺:
| 等级 | 参数量 | 年份 | 能做什么 |
|---|---|---|---|
| GPT-2 | 125M–1.5B | 2019 | 连贯的段落,脆弱的事实 |
| GPT-3 | 175B | 2020 | 少样本提示开始奏效 |
| 小而强(Phi-3、Qwen 3B) | 3–4B | 2024 | 真正可用的轻量助手 |
| 开源 7B(Mistral、Llama 2) | 7B | 2023 | 单张消费级 GPU 上的扎实对话与代码 |
| 开源 70B 级 | 70B | 2023+ | 接近前沿的推理;需要 2×24 GB |
| 开源前沿稠密(Llama 3.1) | 405B | 2024 | 前沿级开放权重,多 GPU |
| MoE 前沿 | 总量 100B–600B+,激活 10–40B | 2024+ | 以合理的服务成本获得顶级输出 |
每一级大约是上一级的 10 倍,而每一级都会解锁更小模型根本无法产生的行为——不是“一样但好一点”。规模带来了新技能;打包封装让它们变得可用。
会话之间没有记忆
模型是无状态的。状态存在于对话中:由你和它共同产生的、不断滚动的词元窗口。关掉标签页它就没了;开一个新对话,它不知道你的存在。任何“记忆”功能都是一个包装器,把旧文本重新注入新提示词而已。
实际后果:此刻窗口里留着的,就是它知道的全部。长对话会在窗口填满后悄悄截断自己的开头——模型不会“注意到”缺失的文本(参见 词元)。
流畅不等于正确
训练目标是“看起来合理的续写”,不是真相。尖锐之处在于:
- 模型会产出自信、格式工整的虚假内容。幻觉是下一词元预测的固有属性,不是谁忘了修补的 bug。
- 流畅度是很差的真相信号:错误答案读起来和正确答案一样好。
- 校准很不可靠。问“你有多大把握?”,得到的往往是一个编造出来的数字。
- 常见事实是可靠的——它们在训练中出现过数百万次。长尾事实则平滑地退化为自信的虚构。
- 模型偏向顺从:反驳一个正确答案,它可能就改口了。正确性和自信是两个不同的维度。
- 强制的可验证输出(带待填字段的 JSON、选择题)胜过让模型自省。
知识在训练时冻结
模型知道的一切都在训练时被固化;存在截止日期,再多的对话也不会更新权重。新事实需要把文本喂进上下文(检索)或新的训练(参见 训练)。模型也无法引用某个事实的出处——它没有对其语料库的索引,只有语料库在权重中的回声。
能力到来得不均匀
规模不是平滑地增加技能:
- ~3B 以下:不错的自动补全、抽取、分类;多步推理大多失败。
- 7–9B:可靠的指令遵循、尚可的代码;算术和长链条仍然不稳。
- 30B+:规划、细微差别、更难的代码——来得很晚且相当突然。
- MoE 让阶梯复杂化:按激活参数判断,而非总量。
所以“越大越好”平均而言成立、细节上误导:有些任务早早到达平台期,有些则很晚才点亮。用你的任务做基准测试,而不是凭感觉(参见 选择模型)。
产品就是这个循环的包装
当你使用任何 LLM 产品时,大致发生以下事情:
- 你的文本被分词。
- 系统提示词、工具定义、检索到的文档和聊天历史被拼接成一个提示词。
- 模型运行上面的循环并流式输出词元。
- 包装代码解析输出、调用工具、把结果喂回去、再次提示。
- UI 渲染 markdown,并称之为“对话”。
第 1、2、4、5 步都不是模型。一旦你内化了“模型是一个带固定窗口的无状态文本进/文本出函数”,本指南的其余部分就是记账:窗口有多大(词元)、循环跑多快(预填充与解码)、它在哪里跑(硬件概览)、以及如何驾驭它(提示词)。
相关: 词元 · 深入 Transformer 内部 · 参数 · 训练