HyperAIHyperAI

Command Palette

Search for a command to run...

WizardLM:赋予大型预训练语言模型遵循复杂指令的能力

Can Xu Qingfeng Sun Kai Zheng Xiubo Geng Pu Zhao Jiazhan Feng Chongyang Tao Qingwei Lin Daxin Jiang

摘要

使用开放域指令遵循数据训练大型语言模型(LLMs)带来了巨大成功。然而,人工创建此类指令数据非常耗时且劳动密集。此外,人类可能难以生成高复杂度的指令。在本文中,我们展示了一种利用 LLM 而非人类创建大量具有不同复杂度级别的指令数据的途径。从一组初始指令出发,我们使用所提出的 Evol-Instruct 逐步将其改写为更复杂的指令。然后,我们将所有生成的指令数据混合,用于微调 LLaMA。我们将所得模型称为 WizardLM。自动评估和人工评估一致表明,WizardLM 优于 Alpaca(基于 Self Instruct 训练)和 Vicuna(基于人工创建的指令训练)等基线模型。实验结果表明,由 Evol-Instruct 构建的指令遵循数据集的质量能够显著提升 LLMs 的性能。

一句话总结

微软与北京大学的研究者提出 WizardLM,利用 Evol-Instruct 对初始指令集进行迭代改写,使其逐步成为更复杂、更多样的开放域指令,用于微调 LLaMA;自动评估和人工评估均表明 WizardLM 优于 Alpaca 与 Vicuna,说明由 Evol-Instruct 演化得到的指令数据能显著提升指令遵循性能。

核心贡献

  • Evol-Instruct 是一种方法,通过对种子指令进行迭代改写为更复杂和更多样的版本,自动大规模生成多样化的开放域指令数据。
  • 在 Evol-Instruct 数据上微调得到的 WizardLM 优于开源基线 Alpaca 和 Vicuna,在代码、数学、GPT-4 评估和人工评估上提升明显。
  • 初步研究表明,指令复杂度对于提升大型预训练语言模型的监督微调性能很重要。

引言

大型语言模型广泛用于自然语言任务,但往往难以遵循真实用户指令。先前的指令微调工作要么依赖封闭域数据集,多样性和单任务指令有限;要么依赖昂贵的人工构建开放域数据,且这些数据往往偏向较简单样本。作者引入 Evol-Instruct,一种自动方法,利用大型语言模型迭代生成更复杂、更多样的开放域指令,并证明在该演化数据上微调得到的 WizardLM 显著优于 Alpaca 和 Vicuna 等开源基线。

数据集

作者通过迭代演化过程构建数据集:

  • 基础数据集(种子):Alpaca 指令微调数据集的 52k 条指令-响应对,作为起点 D(0)D^{(0)}D(0)
  • 演化轮数:进行 M = 4 轮演化。每轮中,每条指令从一组 六个 演化提示中随机选择一个提示进行演化(五个“深入”提示和一个“广度”提示)。随后由 ChatGPT 生成新响应(temperature=1,top‑p=0.9,max tokens=2048)。
  • 完整演化数据集:四轮后,集合增至 250k 条指令-响应对。
  • 训练子集:为训练 WizardLM,从 250k 集合中随机抽取 70k 条,与 Vicuna 使用的数据量一致。未进行额外过滤。
  • 数据特征:指令属于开放域,任务与输入经常混合在一起,指令部分和输入部分没有严格分离。除演化提示外,未进行裁剪或特殊元数据构建。

方法

作者提出 Evol-Instruct,一种用于自动演化指令数据以提升开放域指令数据集复杂度、多样性和难度的方法。该流程主要由两部分组成:指令演化器和指令消除器。

如下图所示:

指令数据演化过程从初始指令数据集 D(0)={(Ik(0),Rk(0))}1kND^{(0)} = \{(I_k^{(0)}, R_k^{(0)})\}_{1 \leq k \leq N}D(0)={(Ik(0),Rk(0))}1kN 开始,其中 Ik(0)I_k^{(0)}Ik(0) 表示第 kkk 条指令,Rk(0)R_k^{(0)}Rk(0) 为对应响应,NNN 为样本总数。在每个演化步骤中,作者通过向大型语言模型(LLM)给定特定的 Evol-Instruct 提示,将当前数据集 D(t)D^{(t)}D(t) 中的指令 I(t)I^{(t)}I(t) 升级为 I(t+1)I^{(t+1)}I(t+1)。随后 LLM 为这些新演化指令生成对应响应 R˚(t+1)\mathring{R}^{(t+1)}R˚(t+1),得到演化数据集 D(t+1)D^{(t+1)}D(t+1)。通过迭代执行 MMM 次演化,系统依次生成 MMM 个演化数据集。

指令演化器使用两种不同类型的提示来扩充指令池:深入演化和广度演化。深入演化旨在通过五种具体策略使指令更复杂、更难:增加约束、深化、具体化、增加推理步骤和复杂化输入。其核心目标是将提示改写为更复杂的版本,使其对人类仍然合理且可理解,同时对 AI 系统稍更难。为防止难度突然升高而损害模型泛化性,作者限制难度增加是渐进的,每次演化最多增加 10 到 20 个词。广度演化侧重扩展主题和技能覆盖,以提升整体数据集多样性。它基于给定指令生成完全新的长尾指令,解决小规模开放域数据集典型缺乏多样性的问题。

指令演化后,流程进入响应生成和消除演化。用于演化的同一 LLM 为新指令生成响应。随后指令消除器过滤掉未成功演化的指令。作者将四种情况归为演化失败:演化后的指令相比原指令没有信息增益;LLM 难以生成响应,通常表现为包含“sorry”一词的较短响应;生成响应仅包含标点和停用词;或演化后的指令明显复制了演化提示中的短语。失败的指令要么被丢弃,要么放回指令池,以便在下一轮中可能成功升级。

所有演化轮次完成后,作者将初始指令数据集与所有轮的演化数据合并,并随机打乱样本,形成最终微调数据集。这样可以确保不同难度级别的指令均匀分布,最大程度提升模型微调的平滑性。为了验证性能提升来自 Evol-Instruct 方法而非只是数据量增加,他们从合并后的数据池中随机抽取等量数据,以匹配训练基线。随后使用特定聊天提示格式在该筛选后的数据集上微调基础 LLM。

实验

WizardLM 与 Alpaca、Vicuna、ChatGPT 及其他开源模型进行比较评估,评估方式包括自动基准测试(涵盖知识、推理、代码、数学以及基于 GPT-4 的评估)和对多样化人工构建测试集进行人工两两对比。该模型一致优于同规模模型,在数学、代码和整体质量上提升明显,人工评估也以较高标注者一致性确认了这些优势。消融实验进一步表明,Evol-Instruct 方法受益于更丰富的种子数据和更大的指令集,不局限于特定基础模型或演化 LLM,并能跨不同预训练架构良好泛化。

WizardLM-13b 在开源 13b 模型中取得最高平均分,在 ARC、HellaSwag、HumanEval、GSM8k、AlpacaEval 和 WizardEval 上超过所有基线。虽然 ChatGPT-3.5 仍是整体最强模型,但 WizardLM-13b 在 TruthfulQA 上超过它,并在 HellaSwag 上几乎持平,展示了有竞争力的常识和真实性能力。该模型在代码生成和数学推理上表现尤其突出,性能大约是次优开源模型的两倍。WizardLM-13b 在 TruthfulQA 上超过 ChatGPT-3.5(50.55 对 47.0),表明其输出虚假内容的倾向更低。在 HumanEval 上,WizardLM-13b 的 pass@1 达到 24.0,约为 Vicuna-13b 的 12.5 的两倍,是 Alpaca-13b 的 9.2 的两倍以上。WizardLM-13b 在 AlpacaEval 上以 75.31 分领先所有开源模型,明显高于 Vicuna-13b 的 70.43。WizardLM-13b 在 GSM8k 上的数学推理得分为 37.15,比次优开源结果 Vicuna-13b 的 24.34 高出 50% 以上。开源基线如 Alpaca-13b 和 Baize-13b 在代码生成和数学上表现严重不足,HumanEval 和 GSM8k 得分低于 10。

消融实验表明,使用 ShareGPT 作为种子数据可提升整体性能,但因其数学示例较少,降低了 GSM8k 准确率。将演化数据集扩展到 250k 带来一致提升;evol-instruct 方法在与替代演化模型 Llama-2-70B-Chat 以及 Mistral-7B 等不同基础架构配合时仍然有效,一致优于在 Supernatural Instructions 上训练。使用 ShareGPT 种子的 WizardLM-13b 平均分高于原始 Alpaca 种子版本,但其 GSM8k 分数下降,原因是 ShareGPT 中的数学指令比例更小。将演化数据从 70k 增至 250k 可提升 MMLU 和 GSM8k 等知识密集型基准表现。用 Llama-2-70B-Chat 替代 ChatGPT 作为演化模型仍能获得有竞争力的结果,但略低于基于 ChatGPT 的基线。使用 Supernatural Instructions 进行训练在所有指标上平均分最低,确认 evol-instruct 生成数据具有优势。将方法应用于 Mistral-7B 基础模型获得最高总体平均分 65.81,超过基于 Llama-13b 的 WizardLM,证明其具备跨架构泛化能力。

实验表明,Evol-Instruct 方法产出的 13B 模型在多种推理基准上领先开源替代方案,在代码生成和数学推理上尤其出色,甚至在真实性上超过 ChatGPT-3.5。消融实验确认,扩展演化数据集和使用 ShareGPT 种子数据可提升整体性能,但如果种子数据缺少数学示例,数学准确率可能下降;该方法还能跨不同演化模型和基础架构有效泛化,其中 Mistral-7B 取得最高总体结果。


用 AI 构建 AI

从创意到上线——通过免费 AI 协同编码、开箱即用的环境和最优惠的 GPU 价格,加速您的 AI 开发。

AI 协同编码
开箱即用的 GPU
最优定价

HyperAI Newsletters

订阅我们的最新资讯
我们会在北京时间 每周一的上午九点 向您的邮箱投递本周内的最新更新
邮件发送服务由 MailChimp 提供