构成大语言模型
构成大语言模型智能的“养分”究竟是什么,以及它们是如何被精心培育出来的。
阶段一:预训练语料库 —— 奠定知识基石的“海量原矿”
这是模型训练的起点,也是规模最庞大的阶段。其目标不是教会模型“对话”,而是让它通过海量文本,无监督地学习语言本身的统计规律、语法结构、事实知识以及世界的运行逻辑。你可以把它想象成让一个天才少年阅读整个互联网和图书馆,从中悟出语言的奥秘。
这个阶段的语料来源主要有以下几个:
- 通用网络文本:这是最大的数据源,以Common Crawl为代表的网页快照是绝对的主力。然而,原始网络数据极其“肮脏”,充斥着广告、导航栏、乱码和无意义内容。因此,清洗是关键。一个典型的清洗流程(如RefinedWeb数据集的做法)会包含以下步骤:
- 溯源处理:从原始的HTML(WARC格式)中提取纯净的文本,去除广告、脚本等。
- URL过滤:利用黑名单剔除包含成人、暴力等不良内容的域名。
- 语言识别:筛选出目标语言(如英语)的文本。
- 文本规范化:修正Unicode乱码和拼写错误。
- 去重:这是重中之重。不仅要去除完全相同的文档(精确去重),还要通过MinHash(最小哈希)等算法去除高度相似的内容(模糊去重),以减轻模型重复生成的问题。例如,SlimPajama数据集通过对RedPajama-1T进行深度去重,过滤掉了近50%的重复Tokens,反而训练出了性能更好的模型。
- 专业领域与结构化数据:为了增强模型的特定能力,需要引入高质量的专业数据。
- 学术资源:如arXiv论文预印本(数学、物理、计算机领域)、PubMed Central生物医学文献。这些数据为模型注入了严谨的科学知识。
- 书籍:如Books3、Gutenberg项目藏书。书籍内容长、逻辑连贯,有助于模型学习长距离依赖和复杂的叙事结构。
- 代码:如GitHub开源代码。代码数据对于提升模型的逻辑推理和问题解决能力至关重要。它不仅教会模型生成代码,也提升了其在自然语言任务上的表现。
- 政府与公共领域数据:新兴的开放数据集如Common Corpus,汇集了政府公开信息、公共文化机构藏品(如博物馆文献)、开放获取的学术文章等,总量已达约2万亿token,旨在构建版权合规、真正开放的训练数据。
预训练数据的一个显著趋势是从单纯追求“大”转向追求“精”与“合规”,通过复杂的清洗流程“淘尽黄沙始见金”。
阶段二:指令微调数据集 —— 教会模型“理解指令、执行任务”
经过预训练的模型只是一个“文本续写器”,它不知道如何回答问题或完成任务。指令微调(SFT)就是通过成千上万个“指令-回复”的示例,将模型的续写能力“调教”成对话和执行指令的能力。这是让模型从一个知识渊博的“哑巴”变成一个合格“助理”的关键一步。
指令数据的构建方式多种多样,各有优劣:
- 人工标注:由标注员编写高质量的“指令-回复”对。这种方法数据质量最高,最符合人类偏好,但成本高昂、规模受限。
- 开源社区与真实场景:从真实的用户交互中收集并清洗数据。例如COIG-CQIA(一个中文指令微调数据集),就整合了社交媒体、论坛、百科、考试试题等来自中文互联网的多样化内容,经过深度清洗和人工审核构建而成。
- 合成数据:这是当前最前沿和高效的方法。即利用一个更强大的“教师”模型(如GPT-4)来生成海量的指令数据。例如,SearchInstruct方法先由人工生成少量种子问题,再由LLM进行扩展,并通过检索相关文档来生成准确的答案。华为云的平台也提供了丰富的“预置数据合成指令”,如“文本生成问答对”、“问题改写”、“BadCase问题泛化”等,用户只需简单编排,就能让模型自动生成大量高质量的微调数据。甚至有专门的框架如DeepFabric,可以通过定义主题树,自动化、大规模地生成覆盖特定领域的合成数据集。
阶段三:偏好数据集 —— 对齐人类价值观的“是非题”
指令微调让模型学会了“怎么做”,但没学会“什么更好”。偏好数据集就是为了解决这个问题而生,它是强化学习从人类反馈(RLHF)的核心。这个数据集不直接告诉模型正确答案,而是提供同一个问题下的多个不同回答,并标注出这些回答的优劣排序。模型通过学习,会倾向于生成那些排名更高、更符合人类偏好的回答。
偏好数据集的构建通常依赖人工反馈或自动化的“AI反馈”。例如,COIG-P(一个中文偏好数据集)的构建就极具代表性:
- 收集查询:筛选出9.2万条高质量的中文查询。
- 生成响应:利用15种主流的LLM为每个查询生成多个回答。
- 评分与筛选:再让LLM对这些回答进行评分,选出最好的作为“ chosen”(正例),最差的作为“ rejected”(负例)。通过这种自动化的流水线,他们构建了一个包含100.9万对中文偏好样本的大规模数据集,覆盖聊天、代码、数学、逻辑等多个领域。
阶段四:评估数据集 —— 检验能力的“试金石”
最后,我们需要客观的标尺来衡量模型在各个维度的能力。评估数据集就像考卷,用于评测模型是否真的学到了知识,以及学到了多少。这些数据集通常包含精心设计的问题和标准答案。
评估数据集覆盖了广泛的能力维度:
- 知识与推理:如MMLU(大规模多任务语言理解),涵盖了从数学到历史的57个学科,用于评测模型的世界知识和解决问题的能力。
- 代码生成:如HumanEval,包含一系列编程问题,用于检查模型生成的代码是否正确。
- 数学能力:如GSM8K,包含小学数学应用题,用于评测模型的数学推理能力。
- 鲁棒性与可靠性:如AuReal数据集,通过重复询问同一问题,并标注答案的正确性和语义一致性,来评估模型的可靠性和幻觉程度。
有趣的是,为了防止数据泄露导致模型“背答案”,研究者们还开发了像PhantomWiki这样的动态评估框架。它能在每次评估时,按需生成一套全新的、包含虚构事实的文档和问答对,确保模型从未见过这些数据,从而真实地测试其推理和检索能力。
总结与趋势展望
总的来说,这四个阶段的数据构成了一个从通用到专用、从知识到对齐的完整训练链条。
- 预训练数据是广袤的“大地”,提供基础。
- 指令微调数据是具体的“地图”,指引方向。
- 偏好数据是“指南针”,确保航向正确。
- 评估数据是“里程碑”,标记进展。
未来的趋势是数据质量的重要性将超越数量,合成数据将成为提升特定能力(尤其是推理和逻辑)的关键引擎,同时,数据的版权合规与伦理对齐也将成为构建数据集的刚性约束。