智源千万级指令微调数据集 Infinity-Instruct 持续迭代,Llama3.1 仅微调即可接近 GPT-4
指令微调是引导语言模型落地、构建高性能对话模型的关键一步。针对目前开源的指令数据集质量低、覆盖领域少、数据信息不透明等问题,智源研究院推出了千万级指令微调数据集 Infinity Instruct。该数据集今年 6 月发布,近日完成了新一轮迭代,包括 Infinity-Instruct-7M 基础指令数据集和 Infinity-Instruct-Gen 对话指令数据集。
Infinity-Instruct-7M 包含 744 万条数学、代码、常识问答等领域的基础指令数据,用于进一步全面提升预训练模型的基础能力。Opencompass 测试结果显示,经过在 Infinity-Instruct-7M 数据集上的微调,Llama3.1-70B、Mistral-7B-v0.1 综合能力评价可基本对齐官方自己发布的对话模型,且 InfInstruct-7M-Mistral-7B 的综合评分超过了 GPT-3.5,InfInstruct-7M-Llama3.1-70B 已十分接近 GPT-4。
*官方汇报结果
Infinity-Instruct-Gen 包含 149 万条合成的复杂指令,用于提升模型在各种真实对话场景中回复的鲁棒性。基于该数据,对经过 Infinity-Instruct-7M 增强的模型做进一步 SFT,即可取得超过官方对话模型的效果。而大多数的官方对话模型除了做基本的 SFT 外,还会做 DPO/RLHF 等对齐训练以提升模型的对话能力,产生额外的训练成本。
智源在 MTBench、AlpacaEval2、Arena-Hard 三个主流榜单上评测了 Infinity-Instruct 7M+Gen 对模型对话能力的增益,其中,AlpacaEval2 和 Arena-Hard 与真实人类评价榜单 Chatbot Arena 有很高的一致率,MTBench 则评测模型的多轮对话能力。
如下左图所示,InfInstruct-7M-Gen-Mistral-7B,InfInstruct-7M-Gen-Llama3.1-8B,InfInstruct-7M-Gen-Llama3.1-70B 等经过 Infinity Instruct 微调的模型已经超越了官方对话模型的性能。Arena-Hard 上 InfInstruct-7M-Gen-Llama3.1-70B(66)超过了 Llama3.1-70B-Instruct(55.7)和 Llama3.1-405B-Instruct(64.1)。此外,如右下图所示,AlpacaEval2.0 榜单上,InfInstruct-7M-Gen-Llama3.1-70B(46.1)更是超过了 GPT4-0314(35.3),非常接近 GPT4-1106(50)的水准,真正实现了 GPT-4 级别的对话能力。
Infinity Instruct 数据集今年 6 月在 Flopsera,Huggingface 等平台发布后,快速到达了 Huggingface Dataset 的 Trending 第一,且吸引大量基于 Infinity Instruct 的开源微调工作。
下载使用
Infinity-Instruct 可在 Huggingface、DataHub、Flopsera 等平台下载。
Huggingface 提供了快速下载 Infinity-Instruct 系列数据集及模型的代码。
Infinity-Instruct 给每一条指令数据标注了语种、能力类型、任务类型、数据来源等信息,便于使用者根据自身需要筛选数据子集。
技术路线
智源研究院搜集了 7500 万余条开源指令作为待选指令池,采用数据选择与指令合成两条途径快速迭代,构建高质量的基础、对话指令数据集,以填补开源对话模型与 GPT-4 之间的基础能力、对话能力差距。
基础指令数据筛选
对于基础指令数据集,筛选流程主要考虑训练数据集和目标数据集数据分布的对齐,基于 DSIR 的思路,在训练数据集上进行排序,选取训练集的子集,拟合目标数据集的分布。
对话数据集生成、进化、评价
对于对话指令数据集,Infinity-Instruct 首先采样了部分高质量的开源指令集,并为每条指令分配一组标签,描述完成指令所需的能力和知识。标签系统共有两个级别:
第一级标签: 宏观类别,如 "自然语言处理 "和 "数学推理"。共包括 26 个类别。
第二集标签:刻画具体任务,包含超过 1.5w 个类别。
基于此系统,就能识别指令集的内容分布以及完成不同任务所需的能力,构建一个高质量的种子数据集。随后,Infinity-Instruct 参考 WizardLM 的方法对种子指令在广度、深度方向上进行扩展,并用 AI Agent 从指令合规性的角度剔除未能进化的数据。最后,进化后的指令作为初始输入,使用 AI Agent 扮演不同角色,为每条指令生成 2 至 4 轮对话。
数据去污、去重
为避免构造的数据存在自身重复、或与评测榜单重复的样本,Infinity-Instruct 对所有数据应用了 MinHash 进行去重。并基于 BGE 检索剔除了和 AlpacaEval、MT-Bench 等评测榜单重复的样本。
训练框架
考虑到微调成本,项目使用 FlagScale 去掉训练样本中不必要的 pad,压缩样本量,同时应用模型切分、切分支持大模型在数百万量级指令数据集上的训练。初步测试可比传统微调框架,如 FastChat+Accelerate 快三倍以上。
未来规划
Infinity Instruct 未来将开源基础、对话指令数据处理的全流程代码,以及模型训练代码。同时,智源将探索扩展 Infinity Instruct 数据策略到对齐、预训练阶段,支持语言模型构建全生命周期的高质量数据需求。
Infinity RLAIF:基于 Infinity Instruct 标签体系以及生成指令构建了 50K 对齐数据的第一个版本,实验结果显示,Infinity-Gemma-2-9B-SimPO 在 AlpacaEval 上达到 73.4,在 Arena Hard 上达到 59.1。未来会进行更多对齐数据、算法的探索。
Infinity Math:基于多个开源数学数据集构建了可无限扩增的数学领域指令数据集,其中 POT 指令数据可提升在多个 7B 的基础语言模型和基础代码模型的 zero-shot 数学能力 180%-510%,相关论文被 CIKM 2024 接收,欢迎引用。
评论