返回顶部
热门问答 更多热门问答
技术文章 更多技术文章

Macpie:合成数据用于训练大型语言模型

[复制链接]
链载Ai 显示全部楼层 发表于 12 小时前 |阅读模式 打印 上一主题 下一主题
通过提示无任何内容的对齐 LLM 从头开始进行对齐数据合成”的官方存储库。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 1em;letter-spacing: 0.1em;color: rgb(80, 80, 80);">

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

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 16px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">Hi,这里是Aitrainee,欢迎阅读本期新文章。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 16px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">主要思想提取:

    ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 16px;color: rgb(63, 63, 63);">
    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生成合成数据的整个过程。通过这些数据,我们可以训练自己的大型语言模型,从而获得更好的结果。

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

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 1.2em;font-weight: bold;display: table;margin: 2em auto 1em;padding-right: 1em;padding-left: 1em;border-bottom: 2px solid rgb(0, 152, 116);color: rgb(63, 63, 63);">? Magpie

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 1.2em;font-weight: bold;display: table;margin: 4em auto 2em;padding-right: 0.2em;padding-left: 0.2em;background: rgb(0, 152, 116);color: rgb(255, 255, 255);">Magpie 支持的模型

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 16px;margin: 1.5em 8px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">目前,Magpie 已在Llama-3Qwen2系列上进行了测试。如果有更多的模型支持,可以随时提交到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
    ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 16px;padding-left: 1em;list-style: circle;color: rgb(63, 63, 63);" class="list-paddingleft-1">
  • •✅: 效果极佳!

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

  • •❌: 无效。

  • •❓: 未测试。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 16px;margin: 1.5em 8px;letter-spacing: 0.1em;color: rgb(63, 63, 63);">我们希望 Magpie 能为 AI 的民主化做出贡献。通过你的帮助,我们可以创建更多数据并增强模型对齐过程的透明度!

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;font-size: 1.2em;font-weight: bold;display: table;margin: 4em auto 2em;padding-right: 0.2em;padding-left: 0.2em;background: rgb(0, 152, 116);color: rgb(255, 255, 255);">摘要

高质量的指令数据对于对齐大型语言模型 (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 等对齐基准上尤为明显。

安装

构建环境

gitclonehttps://github.com/magpie-align/magpie.git
cdmagpie
condacreate-nmagpiepython=3.10
condaactivatemagpie
pipinstall-rrequirements.txt

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

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

huggingface-clilogin

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

示例

使用 Jupyter Notebook

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

批量数据生成

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

cdscripts
bashmagpie.sh

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

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

数据集标记和去重

标记

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

cdscripts
bashunitag.sh***_ins_res.jsonall

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

cdscripts
bashunitag.sh***

_ins_res.jsonsafety0

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

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

去重

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

cdexp
pythongen_dis.py--input_file***_sharegpt.jsonl

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


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

链载AI是专业的生成式人工智能教程平台。提供Stable Diffusion、Midjourney AI绘画教程,Suno AI音乐生成指南,以及Runway、Pika等AI视频制作与动画生成实战案例。从提示词编写到参数调整,手把手助您从入门到精通。
  • 官方手机版

  • 微信公众号

  • 商务合作

  • Powered by Discuz! X3.5 | Copyright © 2025-2025. | 链载Ai
  • 桂ICP备2024021734号 | 营业执照 | |广西笔趣文化传媒有限公司|| QQ