背景与目标
最终目标是在 LLAMA3 模型的基础上进行继续训练与 SFT,但 LLAMA3 的数据与配比方案并未公开,因此期望从其他方案中获得配比的思路,从而确保预训练与 SFT 不会严重影响原本的模型效果。
当前一种潜在的不伤害原模型的方法是,直接继续训练/SFT,随后通过 参数合并Merge 来保留原始效果。
首先需要调研现有的方案,思路为:
公开的预训练数据配比
公开的 SFT 配比方案
探测 LLAMA3 配比的潜在方法
更新日期:2024.07.29
前文:天晴:论文解读:如何自动选择 SFT 数据
后文:天晴:多模态数据混比工作调研
LLAMA 和 Qwen 技术报告
最新的Qwen2和LLAMA3.1终于是公布了很多数据细节,当然也包括数据配比问题。
Qwen2
预训练数据增强
Qwen2 的预训练数据分为 启发式方法过滤 和 Qwen 模型过滤。虽然实现细节未阐明,但根据其他工作,启发式方法可能类似 C4 数据的过滤方法。Qwen 模型过滤则可能是由 GPT 对模型进行 1-5 的质量分数打标,随后对 Qwen 的一个小版本(如 0.5B)进行微调,使其只输出 1-5 的分数 token。
数据扩充
Qwen2 包含了代码、数学、多模态数据,也包括多语数据。最关心的 数据分布 依然是含糊的,目标是让数据分布与人类相似的学习一致。通过实验,对不同来源和领域划分方法进行混合。
数据规模
Qwen1.5 使用了 3T 数据,而 Qwen2 扩充至 7T 数据。团队还尝试继续放宽数据质量筛选阈值,扩充到 12T 数据。然而,在打榜精度上,7T 和 12T 的训练并无显著差异。
长上下文训练
Qwen2 的长上下文训练分为几个阶段:
4k 上下文训练
32k 上下文训练
使用 RoPE 位置编码,将频率从 1 万增加到 100 万(频率越高,能容纳的上下文越长)
此外,Qwen2 还使用了 YARN 和 Dual Chunk Attention 机制,支持 131k 上下文(实践上,是对长上下文进行Chunk切分,随后在chunk内与chunk间进行相对位置信息的捕捉)。
后训练
核心是使用了大量非人工合成数据,值得关注的趋势是:
人机协作数据打标:使用 InsTag 模型生成标签,人工改进表述。依据标签多样性、语义性、复杂度、意图完整性评估筛选出具有代表性的数据;借助一些LLM数据演进生成的工作,例如Self-Evolution,进行数据合成;最后也包括人工标注。
自动数据合成:例如,使用 Rejection Sampling 进行数学任务推导,或者通过 Execution Feedback 对代码任务进行执行筛选。随后是SFT常见的Data Repurposing,为各种任务,借助LLM基于某些源数据,来构造任务数据。对于Qwen它还做了安全审查,当然这里我可能并不需要。
LLAMA3.1
数据清洗与质量过滤
LLAMA3.1 对数据进行了清洗和过滤,包括:
排除不安全的网站 URL
HTML 数据抽取(发现在预训练数据里包含markdown是有害的)
去重(URL、MinHash for Docs、ccNet for Lines会删除导航栏cookie警告以及一些高质量数据)
启发式过滤(n-gram 去重、脏词过滤、KL 散度过滤等)
数据质量过滤:fasttext判断docs与Wikipedia的相关,distilRoberta分类器由LLAMA2打质量标签训练去预测质量分数。distilRoberta分类器还被训练去判断代码和数学推理的数据。
相较于前代版本,有了更多的多模态数据,唯独中文的不多。
数据配比
基于知识分类和Scaling Law实验来测试配比的合理性。
知识分类:分类器划分预训练数据为领域知识数据,例如按着 艺术、娱乐…分类
Scaling Law实验确定数据配比:基于同一个数据配比,训练若干个不同的小模型(从40M到16B),观察其scaling曲线。(我猜是人工设置的配比候选),最终结构:50%通用、25%数学以及推理、17%代码、8%多语。最终通用是什么样子也不清楚左图为浮点计算量与Loss的scaling law曲线,右图是loss与accuracy之间的曲线。有趣的一点是,loss与acc的关系,不是一个线性的
长上下文数据与退火训练
长上下文数据:基于两个标准来判断是否应该增加一个上下文长度:1) 在短上下文下性能恢复 2) 已经可以完美解决某长度下的 大海捞针。所以现在的长上下文,基本是照着大海捞针任务设计的,对于真正其他的长上下文需求,考虑的并不充分。
退火数据:基于高质量代码和 数学数据在预训练尾部做退火(可以提升GSM8k 24%,Math 6.4%)。
一个重要的发现是,退火训练可以评判小规模领域数据的价值。70%数据由原始配比方案获得,30%由需要测试的目标数据获得,在40B Tokens的退火训练中,将一个训练到50%的8B模型,学习率从开始降低至0,随后进行测评或者观察Loss。基于退火法测试小数据集比基于Scaling law实验更有效。
SFT 数据配比
LLAMA 和 Qwen 的 SFT 数据处理技术非常相似,包括:
Rejection Sampling:对于一个问题使用最新 checkpoints 生成多个输出,保留最终答案可行的输出。
数据清洗:避免过度使用表情、感叹、Sorry、道歉,这个很有启发,现在的LLM一般跟他意见不符,都是直接道歉
话题分类:(微调LLAMA 8B来作话题分类器,分桶这些数据到比较粗粒度和细粒度的簇,例如粗粒度的数学推理和细粒度的三角几何)
质量打分:同时使用Reward模型(将分数分布在上四分位的数据视为高质量)和LLAMA模型信号来得到质量分数(通用数据有三个维度,精准度,指令遵循,语调与表达;代码数据两个维度,代码Bug识别和用户意图),这两个模型有很大分歧,以or关系结合二者可以达到很高的召回率。
难度打分:基本想法是优先处理对模型而言更复杂的数据,使用InsTag(Qwen也用到了)对数据打意图标签,意图越多复杂性越高,以及LLAMA的评分(与质量打分一致的方法)
语义去重:Roberta Embedding聚类,每个簇内的数据以质量和难度的乘积进行排序,保留阈值以上的。
合成数据:2.7M SFT是合成的
代码合成数据:1M规模,如果直接用LLAMA3 405B生成的数据是没有帮助的,通过Execution Feedback(也就是执行一遍,并得到执行结果,将这个错误和反馈结合进行训练,使得模型可以汲取教训)。具体为编程问题描述生成–>问题解决(让LLAMA3跑一遍,生成带有解释的解决方案最好)–>正确性分析(如果是错误的解决方案会伤害SFT,所以需要鉴别是否代码是正确的,包括 用编译器和代码分析工具Linter来作语法检查,以及通过LLM生成单元测试情况)–>错误反馈和迭代自我矫正(当前面出错后,把原始问题、错误的解法、反馈 告诉LLM来进行修复,当单元测试出错时,模型可以选择修复解决方法或者是单元测试,约20%是通过反馈矫正来变为正确的)–>迭代式微调(微调、生成数据、再微调,螺旋提升)
编程语言翻译的数据合成:Python C++和其他PHP Type Script等语言进行翻译,只要通过单元测试和语法检测的翻译保留。
反向翻译的数据合成:考虑到执行反馈的信息量对于评价质量来说是不够的,因此基于代码进行对话生成,补充代码解释、生成、文档、Debug数据。随后用这些数据让LLM进行代码生成,用原始代码作为基准,让LLM进行生成代码质量的评估。
长上下文数据合成:QA:将预训练里面的超长文档切分成8k的块,生成QA pair。Summarization:对8k的上下文进行总结后,再对总结进行总结,得到QA数据。Long Context Code Reasoning:找到python最常import引用的代码函数,删除其中的一个关键文件,提示模型去识别哪些文件依赖于这个丢失的文件,并生成丢失文件的代码。如果SFT模型在长语境表现良好,DPO只使用短文本,不会伤害模型的长上下文能力。
工具使用数据合成:包括搜索引擎(Brave Search)、Python解释器、数学计算引擎(Wolfram Alpha API)
前代版本:LLAMA2共使用2T数据语言分布:LLAMA3使用了15T数据,并未给出更详细的信息
只有LLAMA1介绍了数据配比:但SFT方案没有给出
现有公开的模型方案
小模型 - MiniCPM
预训练数据配比:预训练退火阶段SFT数据配比:SFT阶段:
使用了和退火阶段类似的SFT数据(不同的是将预训练数据、高质量的无标注数据例如wiki去除,只留高质量有标标注数据,即sft数据)
小模型 - Microsoft/Phi-3-mini-4k-instruct
未给出更多详细的数据信息。
大模型 - PALM2
除了部分中文的语言配比外,更多的数据信息未公开。
PALM1 版本
PALM1 版本给出了具体的代码和语言配比。PALM1具体的代码配比PALM1语言配比
缺少具体的Finetune方案,只介绍了PALM-Code版本用了60%-python(ExtraPythonData)和30%多代码语言(预训练中相同的源)与10%自然语言,共计7.75B
大模型 - Qwen
Qwen1 只透露了数据源,未给出具体的配比。Qwen2 也未公开数据配比。
大模型 - Baichuan
Baichuan2 的数据配比按领域划分,但未公开 SFT 配比信息。成熟的工作在后期对数据配比的讨论越来越少,逐渐变成了商业机密。
探索性工作
现在一般折腾做SFT模型的工作,都是找一堆看着质量还可以的数据源,随后一股脑全扔进去,也不考虑配比啥的
Chinese-LLAMA
Chinese-LLAMA 在 LLAMA 的基础上进行了中文微调,包含以下数据源:
0_english_LongQLoRA-SFT-39k.jsonl:506.50MB
0_english_Open-Platypus_25k.jsonl:31.91MB
1_0_firefly_chinese_common_task_1649k.jsonl:1.18GB
1_chengyu_0.1k.jsonl:56.06KB
1_coig_human_value_multi_choice_0.1k.jsonl:69.24KB
1_coig_pc_core_sample_3k.jsonl:3.94MB
1_poem_0.05k.jsonl:18.69KB
1_trad-multi-choice_0.1k.jsonl:35.81KB
1_translate_classical_chinese_0.7k.jsonl:473.36KB
1_xhs_1.5k.jsonl:2.44MB
1_zhihu_expansion_0.17k.jsonl:408.97KB
1_zhihu_score9_2.5k.jsonl:6.66MB
2_sharegpt_common_zh_76k.jsonl:482.59MB
2_sharegpt_computer_zh_20k.jsonl:81.02MB
2_sharegpt_continue_zh_1.9k.jsonl:18.88MB
3_logi-qa_0.4k.jsonl:482.07KB
3_ruozhiba_ruozhiba2_0.22k.jsonl:205.56KB
sft_zh_with_all.jsonl:1.98GB
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】

第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
