AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


Macpie:合成数据用于训练大型语言模型
发布日期:2024-06-28 05:41:20 浏览次数: 2254 来源:AI进修生


通过提示无任何内容的对齐 LLM 从头开始进行对齐数据合成”的官方存储库。

https://magpie-align.github.io/

Hi,这里是Aitrainee,欢迎阅读本期新文章。

 主要思想提取:

    1. 1. 使用Macpie工具自动生成合成数据,不需要手动输入。

    2. 2. 合成数据用于训练大型语言模型,提升效率并降低成本。

    3. 3. Macpie生成的数据集比基础模型表现更好。

    4. 4. 解释Macpie的工作原理,包括标签和自动生成问题与答案的过程。

    5. 5. 演示如何使用Macpie生成合成数据,并提供具体步骤。

Macpie 是一个令人惊叹的工具,它可以完全自动地生成合成数据,无需任何人工指令。通过大型语言模型,Macpie 能够自动创建用于训练模型的数据,显著减少了时间和成本。这对于我们训练大型语言模型来说非常重要,因为手动创建数据集既耗时又昂贵。而有了Macpie,我们可以更快更低成本地完成这项工作。

我想给大家展示一下,使用在训练Llama 3 instruct模型时,表现优于基础模型。在相关论文中也提到,当使用合成数据训练基础模型时,其在多个任务中的表现均超越了原模型。那么,Macpie是如何生成这些数据的呢?今天我们就来详细了解一下。

Macpie能够从无到有地生成合成数据。通常情况下,当你向大型语言模型提问时,会得到一个响应,但在后台,每个问题和答案前后都会自动添加特定标签。通过仅提供这些标签,Macpie能够自动预测并生成完整的问题,然后再使用相同的模型生成响应。这个过程可以无限循环,从而自动生成大量的问答对。

下面继续文字教程(缺少的配图可结合视频教程观看&后面有Macpie项目介绍

让我们以Llama 3为例。在文档中,你会看到所有标签都被标记为特殊标记。我们仅提供初始标签,模型就能自动生成完整的问题,然后同样通过这些标签生成相应的答案。

这一过程如同一个循环,模型不断生成问题并回答,最终得到大量的训练数据。结果显示,使用这些数据训练的模型效果显著优于基础模型。

接下来,我将逐步演示如何使用Macpie生成类似的数据,并尝试用自己的大型语言模型进行测试。

我们将首先克隆Macpie的代码库。我会使用M电脑来执行这项任务,这样可以使用更便宜的GPU。接下来,创建一个虚拟环境以确保项目之间的隔离,之后安装所需的依赖包。我们使用的是Llama 3 8 billion参数模型,因此需要申请访问权限,并生成访问令牌以下载模型。

然后,通过命令行登录Hugging Face并输入访问令牌。在同一文件夹中,我们会找到一个名为demo.iynb的文件,打开它并选择我们创建的虚拟环境,即可开始运行代码。首先,我们初始化模型并配置管道,然后提供预查询模板以生成问题。模型会根据模板自动生成问题和答案,通过重复这一过程,我们可以生成大量合成数据。

这就是使用Macpie生成合成数据的整个过程。通过这些数据,我们可以训练自己的大型语言模型,从而获得更好的结果。

下面提供官方的文档介绍、相关资源、部署教程等,进一步支撑你的行动,以提升本文的帮助力。

? Magpie

Magpie 支持的模型

目前,Magpie 已在 Llama-3 和 Qwen2 系列上进行了测试。如果有更多的模型支持,可以随时提交到 configs/model_configs.json

模型系列MagpieMagpie 脚本数据集
Llama 38B,70B8B,70B
Qwen27B,72B72B
Phi 3mini,small,mediummedium
Llama 2⭕️7B,70B
Gemma⭕️7B
Mistral⭕️7B
Yi⭕️34B
  • • ✅: 效果极佳!

  • • ⭕️: 部分有效。可以得到一些有趣的结果,但可能需要强大的过滤器和/或 logits 处理器。

  • • ❌: 无效。

  • • ❓: 未测试。

我们希望 Magpie 能为 AI 的民主化做出贡献。通过你的帮助,我们可以创建更多数据并增强模型对齐过程的透明度!

摘要

高质量的指令数据对于对齐大型语言模型 (LLMs) 至关重要。尽管一些模型,如 Llama-3-Instruct 具有开放权重,但其对齐数据仍是私有的,这阻碍了 AI 的民主化。

高人力成本和有限的、预定义的提示范围使现有的开源数据创建方法无法有效扩展,可能限制了公共对齐数据集的多样性和质量。我们提出了一种名为 Magpie 的自我合成方法,用于大规模生成对齐数据。

我们的关键发现是,通过输入仅包含左侧模板到用户消息预留位置的内容,Llama-3-Instruct 等对齐 LLM 可以生成用户查询。

这种方法允许我们提示 Llama-3-Instruct 并生成 400 万条指令及其相应的响应。我们对提取的数据进行了全面分析,并选择了 30 万条高质量实例。

为了比较 Magpie 数据与其他公共指令数据集的表现,我们使用每个数据集微调 Llama-3-8B-Base,并评估微调模型的表现。结果表明,在某些任务中,使用 Magpie 数据微调的模型表现与官方 Llama-3-8B-Instruct 相当,尽管后者通过监督微调 (SFT) 和后续反馈学习增强了 1000 万数据点。

我们还表明,单独使用 Magpie 进行 SFT 的表现优于之前用于 SFT 和偏好优化的公共数据集,如 UltraFeedback 的直接偏好优化。这一优势在 AlpacaEval、ArenaHard 和 WildBench 等对齐基准上尤为明显。

安装

构建环境

git clone https://github.com/magpie-align/magpie.git
cd magpie
conda create -n magpie python=3.10
conda activate magpie
pip install -r requirements.txt

从 ? Huggingface 获取 Llama-3 模型访问权限

你可以在这里申请 Llama-3 模型访问权限。要在终端登录,请输入:

huggingface-cli login

然后输入以 "hf_" 开头的 Huggingface 私钥。

示例

使用 Jupyter Notebook

示例可以在 demo.ipynb 中找到。玩得开心!

批量数据生成

要使用 Llama-3-8B-Instruct 运行批量生成,你可以简单地运行:

cd scripts
bash magpie.sh

该脚本将在数据文件夹中生成指令和响应。它已在 RTX 4090 24G GPU 上测试。如果你使用的 GPU 内存较少,考虑实现量化

我们还提供了其他模型的脚本,见 scripts 文件夹。你可以使用此导航找到特定的 Magpie 脚本。请注意,对于大于 8B 的模型,你可能需要 4*A100 GPU 来运行这些脚本。

数据集标记和去重

标记

要标记在上一步生成的指令-响应对,例如 ***_ins_res.json,你可以运行:

cd scripts
bash unitag.sh ***_ins_res.json all

该脚本将自动生成生成数据集的质量、难度、任务类别、安全性和奖励标签。你也可以一次生成一个标签。例如,如果你只想使用设备 0 生成安全标签,可以运行:

cd scripts
bash unitag.sh ***

_ins_res.json safety 0

数据合并和转换以进行微调

你可以使用不同的生成配置生成数据集。我们提供了一个 Jupyter notebook here 用于合并所有数据集并将其转换为 ShareGPT 格式,Axolotl 完全支持该格式进行微调。

去重

一旦你有了一个完整的 ShareGPT 格式的数据集,你可以计算每条指令的最小邻居距离并去除重复项。要执行此操作,请运行:

cd exp
python gen_dis.py --input_file ***_sharegpt.jsonl

其中 ***_sharegpt.jsonl 是在上一步中获得的数据集路径。Python 脚本将负责构建 FAISS 索引并计算最小距离。



53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询