ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

数据改进才是大模型预训练进步的主引擎

数据改进才是大模型预训练进步的主引擎 最近在整理上一代大模型的技术复盘时我注意到一个很有意思的说法预训练模型的持续进步首要推动力并不是架构的又一次大改也不是算力的单纯翻倍而是数据质量的系统化改进。这个观点不是我的发明它出自 Dwarkesh Patel 的研究梳理。我以前挺迷信“模型够大就会有智能”但把几代模型公开发布的信息摆在一起看之后不得不承认真正拉开差距的很多时候就是数据处理这件事本身。这篇内容我想把这件事拆开讲清楚包括为什么数据改进会成为主引擎、具体改的是哪些环节以及落到自己团队时应该怎么检查和复现。1. 一个经常被低估的结论数据改进才是预训练进步的主引擎1.1 这个观点到底在说什么先解释一下 Dwarkesh Patel 的这套分析到底讲了什么。他梳理了几代大模型从发布到迭代的公开技术报告以及大量一线研究者访谈得出了一个在圈内争议不小的判断过去几年预训练模型的性能提升主要贡献来自数据侧的持续改进而不是模型架构的突破性变化。这里的“数据改进”不是单纯指把数据集变大而是包括采集渠道扩展、清洗去重、质量过滤、去污染、数据配比调整、合成数据引入、tokenizer 优化等一整套系统性工程。我一开始对这个判断是打问号的毕竟过去几年的流行叙事一直是“更大的模型 更多算力 更强智能”。可当我把各代模型的架构清单摆在一起对比后不得不承认一个事实Transformer 的基本结构这么多年其实没有大换血大家反复应用的更多是在归一化、位置编码、注意力形式和路由机制上的细节优化这些改动大多只带来几个百分点的提升。而在数据侧只是把重复文本清掉、把评测集污染片段摘掉、把代码和数学语料比例调高带来的收益往往是跨数量级的。这个结论用生活化的方式理解会更直观模型架构像发动机算力像燃油供应量而数据像燃料本身的品质。如果你一直在加注含杂质的劣质燃料发动机再好也跑不出标称功率但把燃料提纯、调配好哪怕发动机没换动力表现也会立刻上一个台阶。预训练这几年发生的恰恰就是“提纯燃料”这件事被越来越多团队做深做透了。1.2 为什么架构提升的边际贡献常常被高估我参与过不少横向对比实验同一个架构、同一种损失函数只改数据预处理方案最终结果的差距经常比换一个更大的模型还要明显。有人可能会疑惑既然数据改进这么重要为什么论文和行业媒体上总是铺天盖地宣传架构创新原因很简单架构创新容易写成新闻数据处理很难变成标题。架构创新的传播速度还特别快。今天某篇论文放出一个新的归一化方式或注意力变体下周可能就有开源实现再过一个月主流训练框架都内置了。这意味着架构红利会被迅速抹平很难形成长期壁垒。算力堆叠同样如此算力翻一倍确实有效但如果不配合数据策略调整loss 曲线很快就会进入瓶颈期继续砸钱只是在收益趋平的地方越走越慢。数据侧的改进则完全不同。数据配比如何确定、清洗规则怎么定、合成数据该掺多少这些细节很少被完整公开。每个团队实际摸索出的那套数据配方就是各自的“祖传秘方”。所以当 Dwarkesh Patel 把预训练的进步归因于数据改进时他其实是在点破行业竞争的真实逻辑当算法和算力越来越同质化数据的差异化水平才是真正把团队拉开差距的杠杆。1.3 损失函数的作用和数据改进是什么关系这一节想顺带聊一个经常和“数据改进”混在一起讨论的问题预训练损失函数的设计。热词里有人提到“llm 预训练 损失函数”很多初学者会觉得换一个损失函数就等于换了一种学习方式应该能大幅提升模型。但从实际效果看损失函数定义的只是模型从数据里提取信号的规则如果数据本身的噪声和重复太多规则再精巧也是白搭。RoBERTa 当年去掉 NSP 改成动态掩码就是一个很好的例子。很多人把这个改动解读为“损失函数创新”但本质上它是在让模型更充分地利用已有数据静态掩码每次训练见到的 mask 都一样模型在重复数据上的学习效率自然低动态掩码每个 epoch 重新生成 mask等于在不增加数据总量、不改变模型架构的前提下把数据里的信息挖掘得更彻底。这说明损失函数的调整很多时候只是“数据利用效率”的一部分真正决定模型上限的还是数据本身的信息密度和覆盖度。2. 数据改进具体在做哪些事从原始网页到高质量语料2.1 清洗与去重信息密度的第一道关预训练语料最底层的来源是通用爬虫Common Crawl 这样的快照动辄几十 TB直接扔进训练流程是行不通的。原始网页里塞满了导航栏、广告、重复模板、乱码和无关内容信息密度低得可怕。如果语料里 30% 都是重复文本模型就会把大量容量花在“背诵”重复内容上真正学到的新知识极其有限。这也是为什么去重被公认为数据工程里的第一道工序。实操上去重分成几个层级最基础的是 URL 级去重把同一页面的不同快照合并然后是文档级去重用 MinHash 或 SimHash 计算文档间的相似度把近似重复的文档剔除再细一点可以做段落级和 n-gram 级去重。不同层级解决的问题不同文档级去重解决“整篇重复”n-gram 级去重解决“碎片化重复”。常用工具包括 datasketch 做 MinHash、Spark 做大规模去重任务、pyarrow 做高效 IO。一个经验参数是对英文通用语料MinHash 的相似度阈值设在 0.7 到 0.8 之间比较合适去重后语料规模通常会缩减 20% 到 50%。2.2 去污与去噪评测分数不能虚高另一个权重很高但不常被写进论文的问题是评测集污染。如果你的预训练语料里混进了公开 benchmark 的题目训练完的模型在评测集上会表现得非常好但一换到真实任务上立刻现原形。这个“虚高”极其危险因为它会误导你做出错误决策——比如你以为某个方向的改动有效实际只是靠泄露数据刷上去的分数。处理方式是为所有公开评测集建立指纹库。具体来说把评测集里的题目和样本做 n-gram 切分建立 Bloom filter 或倒排索引每次语料入库前做全量扫描命中指纹的段落直接剔除。这个操作必须放在训练管线的最前面因为爬虫数据是持续更新的今天新增的评测集规模明天就可能出现在新的网页快照中。很多团队上线后才发现评测和真实表现严重不符返工成本极高而排查的第一步往往就是污染检查。2.3 质量过滤与数据配比不给模型喂垃圾清洗去重解决的是“重复”和“污染”但语料里还有大量低质量文本比如机器翻译痕迹明显的页面、纯广告文案、口水化社区帖。业界通常会用两套过滤器一套是启发式规则包括长度过滤、标点比例过滤、特殊字符比例过滤另一套是质量分类器先人工标注少量高质量和低质量样本训练一个轻量分类器再对全量语料打分按阈值过滤。分类器不需要很重fastText 或一个小 BERT 就够用关键在标注样本要有代表性。数据配比是一个更讲究的技术活。不同领域语料的比例直接决定模型能力结构代码语料太少逻辑推理和结构化能力弱数学语料太少符号演算和复杂推理跟不上中文语料太少中文指令遵循和长文本理解就差。配比不能拍脑袋定最靠谱的方式是跑一组小模型消融实验用不同配比训练同一规模的小模型对比下游任务表现再放大到完整规模。这个过程会反复迭代因为每加入一批新数据老配比可能就要重新调整。2.4 合成数据与多阶段训练从“找数据”到“造数据”当优质自然语料接近耗尽时合成数据成了重要补充。当前不少模型在代码、数学、指令跟随上的能力很大程度依赖于“教师模型”生成的合成数据。用合成数据必须严格控制质量生成的数据要经过过滤、去重、人工抽查否则错误会被扩散进下一代模型多轮反复蒸馏还会让模型多样性下降甚至出现“模型坍塌”。多阶段训练则是一种常见的数据策略先用大规模通用语料做基础预训练再用领域语料做继续训练最后用高质量指令数据做对齐。这个流程的本质是把数据按难度和用途设计成“课程”让模型在不同阶段接触不同分布的数据。相比一次性混训多阶段训练往往收敛更稳定下游针对性也更强。值得注意的是每个阶段的切换时机和配比都算数据改进的一部分同样需要通过小实验来验证。2.5 数据改进不只属于语言模型CV 预训练的同一逻辑预训练数据改进这条逻辑在计算机视觉领域也一样成立。ResNet 这类骨干网络在 ImageNet 上预训练时ImageNet 数据集的整理质量包括类别均衡、去重、标签清洗直接决定了学到的特征质量。后来 Swin Transformer 这类模型在 NuImages、NuScenes 等自动驾驶数据集上做预训练时数据集的采集规模、场景多样性、标注一致性对下游任务效果的影响同样是决定性的。很多做 CV 的同学以前会觉得“换 Backbone”才算创新但实际工作中把采样策略、数据增强、伪标签过滤做好收益往往比换一个更大的预训练模型更稳。这说明数据改进不是 LLM 的专属话题而是所有预训练任务的公共底层逻辑。模型越来越同质化的背景下谁的数据处理得更干净、更有针对性谁就能在同样的算力预算下拿到更好的预训练结果。3. 实操现场我如何用数据改进复现一次预训练提升3.1 从零搭一个数据检查管线很多朋友问数据改进到底怎么落地我建议拿到一个预训练项目时先别急着选模型或堆算力花点时间把数据管线搭出来。我常用的管线大致长这样语言识别、清洗、去重、去污、质量过滤、配比采样、tokenizer 检查。每一步都有对应的工具和检查点我一个个说。语言识别用 fastText 的 language identification 模型先过滤目标语种避免无关语言稀释训练信号。清洗阶段去掉 HTML 标签、重复段落、处理 Unicode 异常字符、统一换行符。去重阶段先做 URL 级和文档级 MinHash 去重再按需做 n-gram 去重。去污阶段就是前面说的评测集指纹扫描一定放在入库前。质量过滤阶段先跑规则再跑分类器打分。配比采样阶段根据目标领域决定采样权重。最后一定要检查 tokenizer拿中文、英文、代码、数字分别测一遍如果分词粒度太碎模型的训练效率和下游表现都会受影响。3.2 用一个 1 亿参数的小模型做数据消融数据改没改对不能靠感觉判断。我的习惯是先跑一个 1 亿参数的小模型做数据消融实验固定模型架构和训练步数只改数据管线里的一个变量然后对比训练 loss、验证 loss以及几个有代表性的下游任务分数。这样每个变量带来的影响都能单独评估不容易被混在一起的噪音带偏。公开案例里最经典的就是 RoBERTa。它几乎没有改动 BERT 的模型架构真正调整的是训练数据规模、动态掩码、移除下一句预测任务以及训练步数延长。就这么几项和数据、训练流程相关的改动让它在 GLUE 等多个基准上全面超过了 BERT充分说明数据侧的系统性改进被很多人严重低估。后来中文 RoBERTa 系列模型也走了类似路线通过更干净的语料、更合理的配比和继续预训练策略把中文理解能力拉高了一个台阶。所以当你怀疑数据有问题时不妨先拿一个小模型把数据消融跑一遍用事实说话。3.3 训练中的观察点与止损判断数据消融实验跑起来后有几个信号值得盯紧。如果验证 loss 在某个 epoch 后开始回升训练 loss 还在继续下降通常是数据里的重复样本太多模型开始过拟合高频片段。如果某个下游任务分数异常高先别高兴跑一遍 n-gram 指纹扫描确认有没有污染。如果 loss 曲线在某批数据换入后出现跳变说明新数据和原数据分布差距太大很可能是配比突变导致的需要回退并重新调整混合比例。我特别想强调一个止损判断当训练 loss 长时间不降时先检查数据不要第一反应就是加算力或换大模型。我在多个项目里见过这种场景团队一遇到瓶颈就开卡继续烧最后发现只是语料里有几亿条重复文本没有去干净。把数据管线单独拉出来排查往往能用最小的成本解决最大的问题。这条经验放到今天依然适用而且随着模型越来越大数据问题被放大的程度只会更夸张。4. 常见坑位与排查技巧数据工程最容易翻车的地方4.1 去重过度导致能力退化去重不是越狠越好。有些团队为了追求信息密度把相似度阈值调得很低结果把大量有效变体也删掉了模型在特定领域上的知识覆盖明显下降。这个坑很隐蔽因为整体数据量看着变“干净”了训练 loss 可能也下降了但下游任务迟迟不涨。排查方法是统计去重前后的 n-gram 覆盖率和领域分布确认关键领域没有被误伤。实操上我建议分两步去重先用较高阈值去掉明显重复再做一次基于关键领域的保留扫描确保低资源语言和长尾知识不被过度清理。这样既能获得信息密度又能保住多样性。4.2 合成数据把模型带偏合成数据最常见的坑是“自我蒸馏退化”。如果教师模型本身带有某种偏见或错误合成数据会把错误放大并传给下一代模型迭代几轮后模型能力反而下降。更麻烦的是合成数据错误往往比较隐蔽不是一眼能看出来的脏文本。我在实践中发现两个快速验证方法一是把合成数据混入真实数据跑一个小模型实验对比纯真实数据的基线如果训练 loss 收敛变慢或下游任务变差说明合成数据有问题二是随机抽几千条合成样本做人工检查统计明显事实错误的占比。合成数据不是不能用而是要当成“高风险高收益”的原材料来管理必须有过滤和抽检机制兜底。4.3 多语种与代码语料的配比失衡我见过不少团队只盯着英文通用语料结果中文任务和代码任务一测就很拉胯。这类问题的根源通常是语料分类账没做好不知道自己的数据里各类别到底占多少。建议先建一份语料分类账按语言和类别统计 token 量再设定目标配比用采样权重补齐短板。举个例子如果中文章节只占原始语料的 3%而你的产品目标是中文场景为主那就得在采样时对中文语料做上采样否则模型的中文能力永远上不来。代码语料同理如果代码只占 5%而你想让模型具备较强的结构化推理能力最好把代码语料比例提到 15% 甚至更高。这个比例没有绝对标准要靠小实验验证但它必须是数据团队日常关注的指标之一。4.4 评测集污染防不胜防评测集污染的隐蔽性比很多人想象得高。普通 n-gram 匹配只能防住“一字不改”的泄露换一种同义改写的方式照样能骗过简单过滤器。更稳妥的长期做法是建立动态评测集黑名单机制凡是进入预训练语料的网络快照都要和最新版评测集做一次向量相似度级别的检查而不只是字面匹配。同时要定期更新评测集让旧污染自动失效。这个机制维护起来确实费人力但它能避免“看起来很强、上线就废”的尴尬。如果你负责的模型会被公开评测污染问题不是一个可以靠“我们没故意加”带过的细节而是必须用工程手段主动防御的隐患。5. 对个人与团队的影响数据思维正在改变预训练格局5.1 数据岗位价值上升预训练和后训练哪个薪资高数据改进地位上升最直观的影响是行业对数据工程、数据飞轮相关岗位的重视程度大幅提升。以前讨论“预训练和后训练哪个薪资高”很多人会脱口而出“后训练”因为 RLHF、SFT 和推理优化离业务更近效果也更直接。但从数据视角看后训练本身极度依赖高质量的人类偏好数据和指令数据而这些数据的生产、清洗、迭代本质上依然是一场数据工程。换句话说预训练和后训练不是两个割裂的世界它们共享同一套数据底层逻辑。随着数据改进的价值被更多人认可懂得数据管线、数据质量评估、数据配比和合成数据策略的人才在薪资上开始追赶甚至超过单纯做模型训练的工程师。我认为未来两三年数据基础设施相关岗位的稀缺度只会更高因为每个实验室都意识到“数据飞轮”才是长期竞争力。5.2 从模型中心到数据中心机器人等领域的同构逻辑数据改进的逻辑并不只属于语言模型领域。机器人领域同样有预训练和后训练而且更依赖高质量的数据采集。无论是真实遥操作数据、仿真环境数据还是多模态传感器数据模型能不能学会泛化的操作技能很大程度取决于数据集的覆盖度、清洁度和任务多样性。最近很多工作强调“预训练、后训练”在机器人技能学习中的应用但把数据换成低质量、低覆盖的版本效果立刻能感受到差距。这也是为什么机器人大模型团队都在疯狂搭建数据采集和回流管线。真实操作数据昂贵仿真数据有 sim-to-real 差距如何清洗、标注、配比、增强每一步都是数据工程问题。可以说谁先建立起高效的数据采集、清洗、标注、回流飞轮谁就能在具身智能这条赛道上拉开身位。5.3 给从业者的建议先把数据做扎实再谈模型增长如果你正在做预训练相关的工作我的统一建议是先把数据做扎实再谈模型增长。换一个更大的模型可能只是改几个启动参数把数据质量从 70 分提到 90 分往往需要数周甚至数月的脏活累活。可正是这些脏活累活决定了模型最终能走多远。预算有限的团队最划算的第一笔投入是搭一个可视化的数据质量看板把语料来源、清洗规则、去重比例、污染检出率、配比现状全部列出来。这个看板能帮你随时回答两个关键问题我手里的数据到底干不干净我的配比离目标还有多远把这两个问题答清楚你就已经领先不少直接开训的团队了。我个人的体会是预训练技术的竞争正在从“模型军备竞赛”慢慢转向“数据飞轮竞赛”。以前我接到一个新任务第一反应是“要不要换更强的开源模型”现在我的第一反应变成了“先看看手里的数据干不干净、分布对不对”。在好几个项目里花两周清洗和重配数据带来的提升比租一批卡再硬训一个大模型要明显得多。所以如果你也在预训练这条路上我建议你先别急着追新架构认真做一次只改动数据的小规模消融实验。亲自跑完一轮之后你就会明白为什么那么多资深团队会把数据工程当作最高优先级的事。
返回列表