社区供稿 | 智源千万级指令微调数据集 Infinity-Instruct 持续迭代,Llama3.1 仅微调可接近 GPT-4

文摘   2024-08-19 10:31   广东  

指令微调是引导语言模型落地、构建高性能对话模型的关键一步。针对目前开源的指令数据集质量低、覆盖领域少、数据信息不透明等问题,智源研究院推出了千万级指令微调数据集 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 可在 Hugging Face、DataHub、Flopsera 等平台下载。

  • Hugging Facehttps://huggingface.co/datasets/BAAI/Infinity-Instruct
  • DataHubhttps://data.baai.ac.cn/details/InfinityInstruct
  • Flopserahttp://open.flopsera.com/flopsera-open/details/InfinityInstruct

Hugging Face 提供了快速下载 Infinity-Instruct 系列数据集及模型的代码。

## 数据集下载 
from datasets import load_dataset 
dataset_7M = load_dataset('BAAI/Infinity-Instruct','7M',split='train'
dataset_Gen = load_dataset('BAAI/Infinity-Instruct','Gen',split='train'
 
## 模型下载 
from transformers import AutoModelForCausalLM, AutoTokenizer 
model_llama3_1_70B = AutoModelForCausalLM.from_pretrained("BAAI/Infinity-Instruct-7M-Gen-Llama3_1-70B"
    torch_dtype=torch.bfloat16, 
    device_map="auto"  

 
tokenizer_llama3_1_70B = AutoTokenizer.from_pretrained("BAAI/Infinity-Instruct-7M-Gen-Llama3_1-70B"

model_mistral_7B = AutoModelForCausalLM.from_pretrained("BAAI/Infinity-Instruct-7M-Gen-Mistral-7B"
   torch_dtype=torch.bfloat16, 
   device_map="auto" 
)
 
tokenizer_mistral_7B = AutoTokenizer.from_pretrained("BAAI/Infinity-Instruct-7M-Gen-Mistral-7B")

Infinity-Instruct 给每一条指令数据标注了语种、能力类型、任务类型、数据来源等信息,便于使用者根据自身需要筛选数据子集。

技术路线

智源研究院搜集了 7500 万余条开源指令作为待选指令池,采用数据选择与指令合成两条途径快速迭代,构建高质量的基础、对话指令数据集,以填补开源对话模型与 GPT-4 之间的基础能力、对话能力差距。

基础指令数据筛选

对于基础指令数据集,筛选流程主要考虑训练数据集和目标数据集数据分布的对齐,基于DSIR的思路,在训练数据集上进行排序,选取训练集的子集,拟合目标数据集的分布。

对话数据集生成、进化、评价

对于对话指令数据集,Infinity-Instruct 首先采样了部分高质量的开源指令集,并为每条指令分配一组标签,描述完成指令所需的能力和知识。标签系统共有两个级别:

  1. 第一级标签: 宏观类别,如 "自然语言处理 "和 "数学推理"。共包括 26 个类别。
  2. 第二集标签: 刻画具体任务,包含超过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 接收,欢迎引用。

@misc{zhang2024inifinitymath, 
title={InfinityMATH: A Scalable Instruction Tuning Dataset in Programmatic Mathematical Reasoning},
author={Bo-Wen Zhang and Yan Yan and Lin Li and Guang Liu},
year={2024},
eprint={2408.07089},
archivePrefix={arXiv},
primaryClass={cs.LG},
url={https://arxiv.org/abs/2408.07089},
}




本文由 Hugging Face 中文社区内容共建项目提供,稿件由社区成员投稿,经授权发布于 Hugging Face 公众号。文章内容不代表官方立场,文中介绍的产品和服务等均不构成投资建议。了解更多请访问 CSDN 博主“智源研究院官方账号”。

如果你有与开源 AI、Hugging Face 相关的技术和实践分享内容,以及最新的开源 AI 项目发布,希望通过我们分享给更多 AI 从业者和开发者们,请通过下面的链接投稿与我们取得联系:

https://hf.link/tougao


Hugging Face
The AI community building the future.
 最新文章