大模型数据基础:Token化、清洗、配比与数据工程实践
2026/9/6 5:37:14 网站建设 项目流程

简介:《大模型数据基础知识》PPT课件从大模型数据概述、数据类型与格式、训练优化、部署推理到未来趋势,系统梳理了大模型数据全链路知识,适合正在入门深度学习或希望建立大模型数据认知体系的开发者、算法工程师及高校学生使用。资源共1个pptx文件,压缩包大小约13.92MB,幻灯片结构完整、层级清晰,便于按章节快速定位与二次编辑。目前已有47人学习。内容不仅涵盖结构化、非结构化和半结构化数据的采集、预处理与标注,还深入介绍了SGD、Adam、RMSProp等常用训练算法,以及梯度消失或爆炸、过拟合等问题对应的解决方案;在部署推理部分,则给出模型剪枝、量化、硬件加速等优化思路,可帮助读者从数据到模型、从训练到落地形成完整的方法框架,适合课程讲解、技术分享或自学巩固时配合使用。

1. 为什么要从数据角度看大模型:先绕开模型只看燃料

先聊个挺常见的现象:很多人入手大模型,第一反应是去追模型架构、注意力机制、显存优化这些偏"模型侧"的东西。但真正跑过几次训练、微调和部署的人,最后都会回到同一个瓶颈上——数据。模型结构可以抄开源社区的成熟方案,训练框架也有现成的,唯独数据这关,谁也替不了你。这也是我拿到"大模型数据基础知识"这个题目时,第一个想展开聊透的方向。

数据在大模型项目里的定位,用一句话概括:数据决定了模型能力的上限,模型架构和训练技巧只是在逼近这个上限。换句话说,同样的模型,喂进去的数据不一样,出来就是两个东西。早期GPT系列和Llama系列的开源报告里,几乎都会用大篇幅交代数据来源、清洗流程和数据配比,原因就在这里。

这篇文章不打算从Transformer结构讲起,那些资料到处都是。我想聚焦在数据侧,把这几件事讲清楚:

  • 大模型眼里的"数据"到底是什么形态(Token、序列、上下文的关系);
  • 训练一份模型需要什么样的数据,这些数据从哪里来,怎么处理;
  • 数据规模、数据质量和模型能力之间到底是什么关系;
  • 实际做微调、做领域应用时,数据工作应该怎么做才不踩坑。

适合谁来读?两类人。一类是刚入门大模型、想建立系统认知的开发者,另一类是已经在跑模型但总觉得效果不理想、怀疑是数据问题的从业者。这篇内容会尽量把原理讲透,也会给一些可以直接落地的经验。

2. 大模型的数据形态:Token化是所有数据工作的起点

2.1 模型不读字,只读Token

所有进入大模型的数据,不管是中文、英文、代码还是表格,第一步都要变成Token序列。你可以把Token理解成"模型自己的词汇碎片"——它不完全等于词,也不完全等于字。

拿中文来举例,有些分词器会把"大模型"切成["大", "模型"]两个Token,有些会切成["大模型"]一个Token,取决于词表设计和分词算法。英文里,一个常见词可能是一个Token,"unbelievable"这种长词可能会被切成["un", "belie", "vable"]这样的碎片。

为什么这件事重要?因为模型的上下文窗口限制是按Token数算的,计费也是按Token数算的,推理速度同样受Token数影响。一条数据如何被切分,直接决定了同样的文本占多大空间、花多少钱、跑多快。

注意:不同模型用了不同的分词器,Token切分规则完全不同。同一个Prompt,在GPT系列和Llama系列里消耗的Token数量可能差出30%以上。做成本估算和性能优化时,不能直接套用一个固定比例。

2.2 训练数据里的Token长什么样

实际训练时的数据格式,不是一条条文本扔进去就行,而是要先组装成"序列"。

举个例子,一条对话数据大概长这样:

[INST] 请解释一下什么是数据增强 [/INST] 数据增强是在不改变数据真实标签的前提下,通过变换生成更多训练样本的技术。

模型实际拿到的是这个完整文本的Token序列。在训练时,整段都会被输入模型,但只有"回答部分"的Token会参与损失计算,"问题部分"只作为上下文。

这里有个关键设计:[INST][/INST]<s></s>这类特殊Token,是模型用来理解"哪里是问题、哪里是回答、哪里是开头结尾"的结构标记。不同模型对这些标记的约定不同,做微调时用错标记格式,是新手最常犯的错误。

2.3 从原始文本到训练样本的组装逻辑

如果你去看一份开源训练数据集(比如Alpaca、ShareGPT的清洗版),会发现里面的每条样本都已经是结构化的JSON格式:

{ "instruction": "解释什么是数据增强", "input": "", "output": "数据增强是在不改变数据真实标签的前提下,通过变换生成更多训练样本的技术。" }

到了真正的训练环节,还需要把这些字段拼接成模型能读的文本模板。拼接规则的代码通常长这样:

def format_prompt(instruction, input_text, output): if input_text: prompt = f"指令:{instruction}\n输入:{input_text}\n回答:" else: prompt = f"指令:{instruction}\n回答:" return prompt + output

这段代码本身不难,难的是你选的模板必须和基座模型预训练时见过的一致。同样是Llama系列,Llama 2的对话模板和Llama 3的就不一样,直接用错模板,模型输出的质量会明显下降——不是模型变笨了,是它没理解你要它干嘛。

3. 模型能力的上限,其实被数据配比锁死了

3.1 通用数据、代码数据、对齐数据各司其职

现在主流的开源大模型,训练数据大致分三类:通用文本数据、代码数据、对齐数据。这三类数据的配比,直接影响了模型最终的能力画像。

通用文本数据(网页、书籍、论文、百科)负责给模型注入世界知识和语言能力。代码数据(GitHub、技术文档、Stack Overflow)不只是让模型会写代码,更重要的是提升模型的逻辑推理能力——代码有严格的语法和逻辑结构,模型在代码上学到的模式,会迁移到普通文本的推理任务上。对齐数据(指令数据、人类反馈数据)负责让模型学会"好好说话",知道怎么回答用户的问题,而不是把训练语料里的内容原样吐出来。

3.2 一个值得参考的数据配比

不同模型公开的数据配方差异很大,但有一个比较经典的配比可以作为理解框架:

数据类型典型占比模型获得的能力
通用网页/百科/书籍文本60%-70%世界知识、语言能力
代码数据20%-30%逻辑推理、结构化理解
多语言数据5%-10%跨语言能力
对话/指令数据1%-5%指令遵循、对话质量

注意一个反直觉的点:对话数据在训练语料里的占比非常小,可能不到2%,但它对模型"好不好用"的影响极大。很多团队的误区是,收集了几十万条指令数据就以为足够微调了,实际上基座模型的底子如果没有打好,喂再多指令数据也只是扬汤止沸。

3.3 为什么要反复提"数据配比"

因为大模型预训练的算力开销非常巨大,一旦开始训练,几乎没有"回头调整数据"的机会。开源模型报告(比如Llama系列的技术报告)里最核心的工程经验,就是通过小规模实验确定最优数据配比,再放大到大模型训练。这个路径可以类比成做菜:先小锅试味,确定盐和调料的比例,再按比例做大锅。聪明的小规模实验设计,能省下大量训练成本。

4. 数据的获取、清洗与去重:决定效果下限的脏活

4.1 公开数据源:起步阶段够用的资源池

日常做微调和领域应用,不需要自己从零构建预训练数据,直接用公开数据集起步完全可行。这里列几个我实际用过、真实可靠的数据源:

  • Hugging Face Datasets:最全的集散地,从预训练语料到指令微调数据都有,按任务和数据格式筛选就行。
  • 开源模型配套数据:Alpaca指令数据的清洗版、ShareGPT对话数据、OpenOrca等,都是微调场景的高质量选择。
  • 领域数据集:法律(CAIL)、医疗(CMB、cMedQA)、金融(FinanceIQ)等中文领域数据集都有公开版本,做垂直场景可以快速冷启动。

4.2 数据清洗不是可选项,是必须项

从网上抓来的原始数据,问题集中在以下几类,每一类都有对应的处理手段:

首当其冲的是噪声文本。网页里的导航栏、广告、版权声明、乱码字符,都要靠规则过滤掉。常规做法是用正则表达式去除HTML标签和特殊符号,再通过长度过滤和重复度过滤淘汰低质量段落。一个经验值:文本长度低于50个字符的片段,大多没有训练价值。

然后是敏感信息和个人隐私。这是合规红线,需要做电话号码、身份证号、邮箱、地址等模式的识别和脱敏。如果你的数据处理流程里还没有这一步,建议立刻补上——这不是能讨价还价的事。

质量过滤方面,可以用一个比较trick的方式:用现成的高质量模型给"脏"数据打分排序。具体是抽取一部分候选数据,让模型判断这些文本是否通顺、是否有价值,得到分数后训练一个小的分类器,再拿这个分类器去批量过滤全量数据。这是很多团队实际在用的"数据质量自动筛选"方案。

4.3 去重:数据集越大,重复问题越容易被忽略

重复数据对训练的影响,很多人意识不到。多份网页文本之间会有大量片段雷同,如果不去重,模型会把反复出现的文本当成"最重要的知识",导致某些语句被机械记忆,严重时还会引发训练不稳定。

去重的常见做法分两层:

  • 精确去重:对文本做哈希,去掉完全相同的样本。
  • 模糊去重:用MinHash算法对文本做相似度计算,去掉相似度超过阈值(比如90%)的样本。

模糊去重是大规模数据处理的标配。互联网抓取的网页之间,往往是大段复制再插入少量修改,精确去重根本抓不到这些重复。MinHash的思路是把文本切成若干片段集合,用多个哈希函数映射成签名,再比较签名集合的Jaccard相似度。它不追求100%精准,但能以极低的算力成本完成全量数据的两两比较。

提示:MinHash的阈值选择,直接影响数据量的保留比例。阈值设太严(比如95%以上才去重),重复数据漏网多;设太松(比如80%),可能误伤正常重复出现的常见表达。实践中从0.85-0.9起步,用小规模实验观察数据量和下游效果再调整。

5. 数据规模与Scaling Law:模型能力的标尺

5.1 Scaling Law到底在说什么

OpenAI和DeepMind先后提出过一个核心规律:在模型架构不变的前提下,模型性能与训练数据量、模型参数量、计算量之间存在稳定的幂律关系。用大白话说就是:模型效果随数据量和模型规模的增加而提升,但存在边际递减效应——一开始增加数据效果提升明显,越到后面收益越小。

这里有一个从业者必须知道的点:很多人以为"数据越多越好",但Scaling Law实际上在讲的是"数据要多,模型也得跟着大"。小模型配超大训练数据,数据是浪费的;大模型配小数据,模型能力发挥不出来。两者要匹配,这也是为什么现在的开源社区里,小参数模型(比如7B、13B)的推荐训练数据量级,和大模型(70B以上)完全不是一个量级。

5.2 但数据不是只有"多"这一个维度

实际项目中,数据质量对效果的影响往往比数据量更大。一个被广泛提及的数据对比是:用几千条高质量人工标注数据微调出来的模型,效果通常好于用几万条自动爬取的低质量数据。高噪声数据不但无益,还会主动带偏模型。

判断数据质量可以关注几个维度:

  • 正确性:答案本身是否准确,有没有事实性错误;
  • 格式一致性:数据里的结构标记是否统一;
  • 覆盖度:是否覆盖目标场景的各种变体;
  • 无偏性:避免某类回答在数据里被过度重复,导致模型输出风格固化。

5.3 一个小成本验证数据质量的实验设计

我在实际项目里常用一个"先小后大"的验证路径:

先用5%的数据做一次短训练(比如1000步),再随机抽取500条测试问题人工观察模型表现。把回答分成三类:直接可用、需要小幅修改、完全不可用。如果"直接可用"比例低,问题大概率不在训练参数上,而在数据本身。这时候优先检查数据清洗是否到位、模板格式是否正确、样本覆盖是否全面,比反复调整学习率要有效得多。

这个办法的好处是便宜且快。不用等到完整训练结束,就能判断一批数据的价值,避免把算力浪费在坏数据上。

6. 面向微调和垂直场景的数据工程实践

6.1 对话数据结构化:从原始对话到可训练样本

微调场景下,最常见的数据形态是对话语料。但原始对话文本不能直接用,必须做结构化处理。

给一个实践示例。拿到一段客服对话:

用户:我的订单三天了还没发货,能帮忙查一下吗? 客服:您好,请问您的订单号是多少? 用户:订单号是20251214001。 客服:好的,我已经帮您查询到,该订单由于仓库库存不足,预计会延迟2天发货,非常抱歉给您带来不便。

整理成微调样本时,要加入指令字段:

{ "instruction": "你是某电商平台的客服助手,请根据上下文回答用户问题。", "input": "用户:我的订单三天了还没发货,能帮忙查一下吗?", "output": "您好,请问您的订单号是多少?" }

一个完整的多轮对话样本还要维护对话历史,把之前的问答都拼进上下文。这里容易犯的错是,把整段对话不加区分全部丢进去,导致模型分不清哪些是历史、哪些是当前问题,训练出来的效果自然混乱。

6.2 数据增强:数量不够的时候怎么办

领域数据往往不够用。这时候数据增强能帮忙,但要注意方式方法。

文本数据增强的常见手段包括:

  • 同义词替换:把句子里的部分词换成近义词,适合扩充表达变化;
  • 回译增强:把文本翻译成另一种语言再翻译回来,得到语义相近但措辞不同的新样本;
  • 模型生成:用现有大模型改写样本,保持语义、改变句式,是目前效果最好的方式。

用模型生成增强数据时,建议保留原始样本做一致性校验,防止生成结果偏离原意。

6.3 数据管理的基本规范

做数据工程时间长了,会意识到可复现性比单次效果更重要。我的习惯是把数据管理分成三层:

  • 原始数据层:只读存储,存放所有抓取/收集到的原始数据,不做任何修改;
  • 清洗数据层:存储去重、过滤、脱敏后的干净数据,每个处理步骤都有脚本记录;
  • 训练数据层:按模型要求组装好的最终样本,附带数据版本号和组合规则。

这个分层看起来会多花一些存储和时间,但排查问题的时候价值巨大——模型效果异常时,能快速定位是数据版本问题、清洗逻辑问题还是训练参数问题,而不是两眼一抹黑。

7. 工具链参考与选型建议

数据工作涉及的工具相当多,整理一份我实际用过的组合,给大家做参考。

工作环节推荐工具说明
数据探索分析Pandas、DuckDBDuckDB可以高效跑SQL查询,适合快速统计大数据集
文本清洗Python正则、BeautifulSoup处理HTML、噪声字符,规则配置灵活
模糊去重datasketch(MinHash)Python库,支持大规模相似度去重
数据集管理Hugging Face Datasets支持流式加载大数据集,节省本地存储
数据合成LangChain + OpenAI API,或本地模型用大模型批量生成/改写样本
数据质量评估LlamaIndex、Ragas做检索/生成质量评估,辅助判断数据效果

选工具的原则,我个人的经验是:能扛住规模再看功能。数据处理前期,用DuckDB做SQL式分析会比Pandas省很多内存;数据集到了几GB甚至更大的规模,Hugging Face Datasets的流式加载能避免把数据全读进内存。

7.1 一套最小可行数据流程

如果你现在只想要一个能跑的方案,我建议按下面这个最小流程走:

  1. 用爬虫或公开数据集收集原始文本;
  2. 用正则清洗掉HTML标签、特殊字符、超短文本;
  3. 用datasketch做MinHash去重,阈值设0.9;
  4. 按"指令+输入+输出"的JSON结构整理样本;
  5. 用Hugging Face Datasets导出成训练格式(jsonl或arrow);
  6. 抽5%做小规模测试训练,观察效果,再决定是否全量。

这套流程不需要太多代码技巧,但每一步都是必须的,跳一步后面都会出问题。

8. 数据工作中的常见坑与应对思路

踩过几次坑之后,总结出几个典型错误,写出来帮大家少走弯路。

第一个坑:混淆预处理和增强。数据清洗是去掉低质量内容,数据增强是生成新样本,两个环节不要混在一起。先清洗、后增强,顺序颠倒会让增强结果被清洗规则误伤。

第二个坑:用错模板格式。我见过很多次,微调Llama模型时用了ChatML模板(GPT系列风格的模板),模型能训练但没有效果,最后发现是模板格式和模型预设不一致。解决方式是:去模型卡页面找到官方推荐的对话模板,照着写提示格式和特殊Token,先验证一条样本能正常跑通再批量处理。

第三个坑:忽略长尾情况。数据里数质量问题往往集中在尾部——非常短的输入、超长的上下文、特殊格式的字符。建议在数据检查时,专门统计最大值、最小值、分位数,异常样本单独处理,而不是只盯着平均质量。

第四个坑:评估只看Loss。Loss下降代表模型学到了数据里的统计规律,但它不直接等于业务表现。我见过训练Loss降得很漂亮,实际生成的答案却完全不能用的案例。原因就是训练数据的格式和真实推理时的Prompt格式分布不一致。一定要在训练集之外,单独保留一份与真实场景一致的评估集,用评估集判断数据工作是否真的有效。

最后一点:数据是可复现实验的根基。同样的训练代码,数据不同结果就完全不同。把数据版本管理做好,比记录训练参数更重要。我的习惯是每次数据变更都生成一份数据说明,写明来源、清洗规则、样本数量、去重阈值。三个月之后再回来看,你会感谢自己当初多写的这段说明。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询