大语言模型技术指南:预训练到底在学什么?语料、tokenizer、目标函数与 scaling law 详解

张开发
2026/4/14 2:01:18 15 分钟阅读

分享文章

大语言模型技术指南:预训练到底在学什么?语料、tokenizer、目标函数与 scaling law 详解
大语言模型技术指南预训练到底在学什么语料、tokenizer、目标函数与 scaling law 详解前一篇我们把 Transformer 这块地基先搭起来了。如果说上一篇回答的是为什么今天的大语言模型大多都建立在 Transformer 之上那么这一篇要继续往下拆的就是另一个经常被说烂、但其实很多人并没有真正搞明白的问题预训练到底在学什么很多人会顺口说大模型就是“拿海量语料去做 next token prediction”。这句话当然没错但它实在太短了短到很容易让人误以为预训练就是“喂数据”目标函数就是“猜下一个词”数据越多越好模型越大越好只要堆算力能力自然就会出来可真实情况远没有这么简单。因为预训练真正牵涉的是一整条链路语料从哪里来怎么清洗怎么配比tokenizer 到底怎么把文本切成 tokennext token prediction 为什么能学出世界知识和推理能力为什么不是无限堆参数而是要考虑数据量和训练 token 数scaling law 到底在告诉我们什么到部署和微调阶段预训练时的选择又会留下哪些“后遗症”所以这篇文章我想把预训练最值得真正理解的几个问题讲透预训练的本质到底是什么语料质量为什么和模型上限直接相关tokenizer 为什么不是一个小配件而是能力边界的一部分next-token prediction 为什么能学出这么多能力scaling law 为什么改变了大模型训练思路从工程角度看预训练最贵、最难、最容易踩坑的点在哪如果这篇吃透后面再去看指令微调RLHF / DPO长上下文扩展LoRA / QLoRA多模态预训练你会清楚很多。一、先说结论预训练不是“背答案”而是在学一个压缩后的世界模型很多初学者第一次听到“预测下一个 token”时都会本能觉得“这不就是高级版自动补全吗”从表面任务上看确实像。但如果你只把预训练理解成自动补全就会低估它真正学到的东西。因为要把下一个 token 预测得足够好模型就必须在内部逐渐学会很多更底层的结构语言统计规律句法结构语义关联知识共现关系文档组织模式代码语法与 API 调用习惯某些弱形式的推理模式换句话说模型不是在显式背“标准答案”而是在通过大规模压缩预测任务学一套对世界和语言的内部表示。所以更准确的说法应该是预训练是在用“预测任务”逼模型学会语言、知识和结构的分布。这也是为什么 next-token prediction 虽然形式简单却能长出很复杂的能力。二、为什么大模型训练第一步不是调参数而是找语料很多人以为模型训练最核心的是选架构选优化器设学习率配多少卡这些当然都重要。但在真正的大模型训练里语料本身往往才是第一资源。因为模型最终能学到什么本质上受它看过什么、看得多不多、看得干不干净直接影响。你可以把语料理解成模型的“经验来源”。经验来源如果有问题再好的架构也救不回来。语料至少决定三件事。1知识覆盖范围如果训练数据里几乎没有法律文本那模型的法律理解就很难强如果代码语料占比高代码能力通常更容易起来。2语言风格和表达习惯语料偏论文、偏论坛、偏百科、偏代码仓库模型最后说话方式和组织结构都会受影响。3噪声上限如果脏数据、重复数据、模板垃圾、低质量机翻、SEO 农场内容太多模型就会把这些坏模式也学进去。所以大模型训练并不是“能抓到多少网页就抓多少网页”而是要做很重的数据治理。三、预训练语料通常来自哪些地方虽然不同团队的数据策略差很多但常见来源大致有这些通用网页文本新闻和百科论坛、问答、博客学术论文与技术文档书籍与长文档代码仓库多语言平行或非平行文本结构化转文本的数据如果是多模态模型后面还会加上图文对数据OCR 文档表格、图表、截图等视觉文本混合内容这里最容易被忽视的一点是不同来源不只是“数量不同”而是会把模型往不同能力方向上拉。比如代码数据会显著影响补全、修 bug、工具调用风格数学和论文语料会影响长链条说明和术语表达对话和问答语料会影响 instruction-following 的先天基础高质量长文档会影响模型维持长程结构的能力所以训练数据配比本质上就是能力分配表。四、为什么“数据清洗”不是可选项而是核心工程很多非训练方向的人会低估数据清洗觉得那只是前处理。实际上它几乎决定预训练值不值得烧那笔钱。因为互联网原始语料的问题非常多大量重复页面模板噪声导航栏、广告、脚本残留低质量机翻错别字、乱码、截断文本色情、暴力、违法违规内容极端立场或错误事实堆积自动生成垃圾内容如果不清洗模型就会把这些模式也吸进去。常见清洗动作包括去重语言识别文本质量打分文档长度过滤特殊字符和乱码过滤PII / 敏感信息处理黑名单域名剔除分类采样与重加权这里有一个非常重要的现实预训练最贵的不只是 GPU还是你有没有高质量数据管线。因为低质量数据不只是“浪费一点训练 token”而是会直接污染模型分布。五、tokenizer 到底是什么为什么它不是小工具而是模型输入世界的切刀很多初学者会觉得 tokenizer 就是“分词器”可有可无。实际上它远比这个重要。Tokenizer 的作用是把原始文本切成模型能处理的离散 token 序列。比如一句话Transformer changed NLP forever.在送进模型之前不会直接以“字符串”形式被理解而是会先被 tokenizer 切成 token再映射成 id。这件事为什么重要因为 tokenizer 决定了什么样的文本片段会被当作基本单元一个句子会被切成多长哪些语言更省 token哪些语言更吃亏代码、数字、符号、公式会被怎样拆分长上下文预算到底够不够用所以 tokenizer 不是外围组件它实际上参与定义了模型“如何看世界”。六、为什么不同语言和代码对 tokenizer 特别敏感如果 tokenizer 设计不合理会出现很多实际问题。1某些语言 token 过碎比如中文、日文、代码、数学表达式如果切分策略不合适可能导致原本很短的一段内容被切成特别多 token。结果就是上下文更快被耗尽训练和推理成本升高模型更难捕捉稳定片段2代码结构被切坏如果代码中的关键模式、API 名、缩进或符号组合被切得很碎模型学代码分布会更困难。3数字和特殊符号泛化变差比如日期、金额、长数字串、版本号、路径名、命令行参数这些如果切分不合理模型在工程场景下的稳定性会受影响。所以很多强代码模型、多语言模型都会特别重视 tokenizer 设计和词表覆盖。七、预训练最常见的目标函数next-token prediction现在主流大语言模型里最常见的训练目标就是给定前文预测下一个 token。例如一句话Deep learning is changing the world模型看到前面的 token要尽量把下一个 token 预测对。训练时不是只对一句话最后一个位置算 loss而是对整段序列中很多位置一起算。这件事表面看很简单但为什么它这么有效因为如果模型想把下一个 token 猜准它就不得不学会哪些词常一起出现哪些句法结构更自然哪些事实搭配更常见哪种上下文接下来更可能出现什么内容某些任务里应该先推什么中间步骤所以 next-token prediction 虽然形式统一但能逼出非常广的能力。八、为什么“只做预测下一个 token”也能学出知识和推理这其实是很多人最困惑的点。直觉上会觉得“只是猜词怎么会学出世界知识”关键在于大规模文本本身就把世界知识和推理痕迹编码进去了。比如当模型大量看到这些模式“巴黎是法国的首都”“水在 1 个标准大气压下 100 摄氏度沸腾”“Java 中 ArrayList 底层是动态数组”“当 X 0 时函数单调递增”它并不是显式建立一张知识图谱而是在参数里逐渐把这些统计关系压缩下来。更进一步当训练数据中大量存在解释型文本解题步骤代码推演论文式论证问答结构模型也会学习到某些“生成过程模式”。这不等于它像人一样理解世界但它确实会在参数空间里形成相当强的结构性表示。所以你可以把预训练看成一种非常大规模的分布压缩而不是死记硬背。九、预训练时最容易被误解的一件事不是参数越大就一定更强大模型时代大家都很容易被参数规模吸引。7B14B32B70B671B参数当然重要。但预训练领域一个关键认知是模型规模、数据量、训练 token 数和计算预算必须一起平衡。如果模型很大但训练 token 明显不够它就可能没有被充分训练好。相反一个相对小一点、但训练得更充分、数据质量更高的模型在很多任务上完全可能打过更大的模型。这也是 scaling law 变得关键的原因。十、scaling law 到底在说什么如果用最朴素的话来讲scaling law 想说明的是模型效果不是随机上涨的而是会随着模型参数、数据量、训练计算量的增加呈现某种相对稳定、可预测的改善规律。这件事为什么重要因为它把“大模型训练”从某种拍脑袋堆料逐步变成了更可规划的工程。团队可以开始问如果我有这么多算力参数做多大更划算数据 token 应该准备多少才不浪费模型容量是先加模型还是先加数据收益更高训练到多少 token 时边际收益开始下降这些问题背后其实都是 scaling law 在起作用。十一、为什么 Chinchilla 思路会影响后来很多训练策略早期很多团队更偏向“大模型优先”觉得参数越大越好。但后来一个重要趋势是与其只盲目加参数不如让模型和训练 token 更匹配。Chinchilla 这条线带来的关键启发就是很多模型其实是“参数大了但没喂够数据”在固定算力下适当减小模型、增加训练 token整体效果可能更优这件事直接改变了后面很多训练配置的思路。所以当你今天看一个模型时不能只问它多少参数还要问它训练了多少 token数据质量怎么样训练是否充分是否存在明显欠训练或过度堆料的问题这比单独看参数规模靠谱得多。十二、从工程角度看预训练最贵的成本到底是什么很多人第一反应会说GPU。对但不完整。如果从完整工程链路看预训练至少有四类大成本。1算力成本包括GPU / TPU 采购或租用多机多卡通信长时间训练稳定性checkpoint 存储和恢复2数据成本包括数据收集授权与治理数据清洗、去重、打分高质量领域语料的获取3工程成本包括分布式训练框架容错与监控数据管线调度实验管理训练异常排障4机会成本因为一次大规模预训练非常慢、非常贵方向选错或者数据选错回头成本很高。所以真正做预训练不是“跑个脚本”那么简单而是高投入、高耦合的大工程。十三、几个预训练阶段常见的关键参数应该怎么理解虽然预训练参数非常多但入门阶段我建议你先抓最关键的一批。1训练 token 数这是比“训练了多少轮”更重要的指标。大模型训练里更常看总 token 数因为不同语料长度分布差异很大。2batch size会影响训练稳定性、吞吐和优化行为。通常真实工程里看的是 global batch size而不只是单卡 batch。3learning rate这是最敏感的超参数之一。太大容易不稳太小又学得慢、浪费算力。4warmup steps很多大模型训练前期需要 warmup让学习率慢慢升上去避免一开始就把训练打崩。5sequence length会影响每步计算开销显存压力模型能看到的局部上下文长度6vocab size也就是 tokenizer 词表大小。它会影响嵌入层规模、覆盖能力和切分效果。这些参数没有脱离任务和预算的统一最优值它们永远要结合模型规模数据类型硬件条件训练目标一起看。十四、预训练阶段的选择会怎样影响后续部署和微调这点非常重要但常被低估。预训练不是“训完就过去了”它会长期影响后面所有阶段。1tokenizer 设计会影响后续推理效率如果某类内容天然更碎后面部署时它就更费上下文和显存。2语料配比会影响模型先天偏好比如代码能力、数学能力、多语言能力很大程度上会留下预训练烙印。3预训练 context length 设计会影响后续长上下文扩展难度不是所有模型都能低成本扩上下文。4数据噪声会影响对齐阶段上限如果底座已经学进太多坏模式后面指令微调和偏好优化往往只能部分修补。所以预训练阶段的很多决定后面都得继续买单。十五、如果从部署视角反推应该如何理解预训练质量很多工程同学平时不直接参与预训练但这不代表预训练和你无关。因为你在线上看到的很多问题根源往往就在底座训练阶段。比如为什么某些模型中文 token 消耗异常高为什么某些模型代码补全风格不稳定为什么某些模型事实问答容易“会说但不准”为什么某些模型长文档里结构保持能力差为什么某些模型量化后掉点特别严重这些问题表面上像推理或对齐问题但很多时候都和预训练数据、tokenizer、训练充分性有关。所以一个成熟的模型使用者不能只看 benchmark也要学会从预训练视角判断底座质量。十六、最后总结预训练真正学的不只是“下一个词”而是一整套语言和世界分布如果只用一句话概括这篇我会说预训练的形式是预测下一个 token但它真正逼模型学到的是语言、知识、结构和任务模式的统计分布。你这篇真正应该带走的是下面这几个核心认识1预训练不是简单喂数据而是在大规模预测任务里学习世界与语言的压缩表示2语料质量和配比几乎直接决定模型能力边界和表达风格3tokenizer 不是小配件而是模型输入世界的切刀会影响效率、覆盖和泛化4next-token prediction 看起来简单但足够大的数据和模型下它会逼出知识、结构和某些弱推理能力5scaling law 的价值在于告诉我们模型、数据和算力要一起平衡而不是只迷信参数规模6预训练阶段的很多选择最终都会延续到后续微调、部署和线上表现中从这里开始你对大语言模型的理解就从“知道 Transformer 长什么样”进入到了“知道它为什么要这样被训练”。

更多文章