title: 什么是大语言模型:从"预测下一个 token"看懂 LLM
lecture: 1-2-2
chapter: 1
section: 2
series: AI Agent 全栈开发工程师学习笔记
tags: LLM, Token, 词表, 模型训练
什么是大语言模型:从"预测下一个 token"看懂 LLM
先把定义收窄
LLM 全称 Large Language Model,本质是一个用海量数据训练出来的深度学习模型,做的事情只有一件:给定一段输入,预测下一个内容片段应该是什么。
文本、音频、视频都可以喂进去,出来的是模型的预测结果。所以它的抽象就是一个"输入 → 处理 → 输出"的函数。听起来很朴素,但"大"这个字带来的变化是质变级别的------这也是为什么一个只会预测下一个词的东西,能做翻译、能写代码、能总结长文。
"大"到底大在哪
训练数据
GPT-3 公开过它的训练集构成,比例大致是:
| 来源 | 占比 | 规模 |
|---|---|---|
| Common Crawl(过滤后的公开网络数据) | 60% | 约 4100 亿 token |
| WebText2(Reddit 论坛文本) | 22% | 约 190 亿 token |
| Books1 / Books2(互联网书籍语料) | 16% | 合计约 670 亿 token |
| 英文维基百科 | 3% | 约 50 亿 token |
合计约 3000 亿文本单位。注意一个反直觉的点:维基百科只占 3%。很多人以为大模型是"读完了人类所有正规出版物",实际上它的主体是互联网上质量参差不齐的抓取数据。这直接解释了后面会反复遇到的两个问题------幻觉,以及为什么需要 RAG 去外挂可信知识源。
参数量
参数规模的演进是一条陡峭的曲线:
- GPT-1:1.17 亿
- GPT-2:15 亿(约 12.8 倍)
- GPT-3:1750 亿(约 116 倍)
- GPT-4:官方未公布,社区估算在万亿量级
参数是什么?每个参数就是一个浮点数。所谓 7B 模型,说穿了是 70 亿个数字的集合。按每个数字 4 字节粗算,70 亿参数约等于 28GB 的存储------这就是"为什么 7B 模型跑不满 32GB 显存却装不进 8GB 显卡"的数量级来源。
这个估算是 FP32 口径。实际部署里还有 FP16/BF16 和各类量化,同一个模型的显存占用能差好几倍,别把 28GB 当成死数。
参数量和能力不是线性关系。从 1.17 亿到 15 亿带来的提升,和从 1500 亿到 1750 亿带来的提升,完全不是一个量级------这是"智能涌现"话题的入口。
Token 与词表:模型眼里的世界
模型不认字,只认编号。
- token 是文本片段的切分单位,也是模型衡量长度的单位。英文里一个 token 大致是一个词或词的一部分;中文更复杂,可能是一个字、一个词、甚至字的组成部分。
- 词表 建立 token 与数字 ID 的双向映射。特殊符号占靠前位置,比如 unk 这类占位符对应 ID 0,非常规字节用字节级 token 兜底;中文词组同样有各自的 ID。
这里有个工程上会真实踩到的差异:同一个语义,中文消耗的 token 往往比英文多(取决于词表里中文条目的数量与质量)。上下文窗口是按 token 算的,所以把 GPT-3.5 的 16k 上下文当成"能放 16000 个汉字"是错的,实际能装的中文内容通常明显更少。做长文档切分、决定 RAG 一次塞多少召回片段时,这个折扣必须算进去。
一次生成到底发生了什么
把流程拆开:
- 输入文本被切成 token,再映射成 token ID 序列。
- 模型基于这串 ID,对整个词表算一个概率分布,比如
[0.015, 0.0025, ...]。 - 从分布里挑一个 token(概率最大的,或按采样策略挑)。
- 把它拼回输入,回到第 2 步,直到结束条件满足。
所以"流式输出"不是产品层的视觉把戏,它就是模型本来就是一个 token 一个 token 往外蹦的。
至于模型凭什么能预测对,有两种理解路径:
- 统计视角:建立"输入片段 → 后续 token"的频次表。给"肚子饿了",语料里接下来高频出现"吃什么"。
- 向量视角:把输入编码成多维向量,在向量空间里找最近的 token。
向量视角的价值在于容错。遇到训练时没见过的表达,模型可以靠相似度泛化,而不是直接崩掉。
这些参数是怎么定下来的
训练目标说到底就是"给这 70 亿多个浮点数各自找一个合适的值"。流程是标准的深度学习迭代:
- 参数随机初始化。
- 喂入样本,模型输出一个结果(可能完全错,比如输入"程"输出"hello")。
- 用损失函数衡量输出与目标的差距。
- 梯度下降反向更新参数。
- 重复,直到满足停止条件。
现代大模型的训练数据量通常在 2 万亿 token 以上。
几个容易混淆的点
- "深度学习模型"不是区分点 。传统 NLP 模型也是深度学习的。LLM 的分水岭是数据驱动 + 规模 + 通用性,而不是"用了神经网络"。
- 通用 vs 专用是场景选择,不是能力压制。LLM 能一个模型做生成/分类/总结/改写,但一个为特定任务微调的小模型,在那个任务上仍然可能更快更准更便宜。
- 多任务能力来自同一个机制。生成、分类、总结、改写,在模型内部都是"预测下一个 token",只是提示词不同。这是提示工程能成立的根本原因。
面试会怎么追问
"LLM 为什么会产生幻觉"------顺着训练数据构成回答最扎实:主体是互联网抓取语料,模型学到的是"统计上最可能的下一个 token",而不是"事实上正确的下一个 token"。它没有真值概念,只有概率。这也自然引出缓解方案(外挂知识库、检索增强、约束输出格式)。
"为什么中文比英文更费 token"------回到词表:token 化规则和词表构成决定了切分粒度,中文条目占比低就会切得更碎。
小结
- LLM 的机制只有一句话:预测下一个 token,循环执行。多任务能力是这个机制在超大规模下的副产品。
- "大"体现在三处:训练数据(GPT-3 约 3000 亿文本单位,六成来自 Common Crawl)、参数量(GPT-1 亿级 → GPT-3 千亿级)、训练量级(2 万亿 token 以上)。
- 参数就是浮点数集合,7B ≈ 28GB 是 FP32 粗算,量化会显著改变这个数字。
- 上下文窗口按 token 计,中文通常比英文更费 token,规划 RAG 和长文本时必须留折扣。
- 训练数据的构成(网络抓取为主)是理解幻觉问题的一根线,后面所有 RAG 的内容都在还这笔债。