【AI大模型】揭秘监督微调(SFT):语言模型性能跃升的秘密武器!

前言

大型语言模型(LLMs)的训练通常分为多个阶段,包括预训练和后续的微调阶段。虽然预训练成本高昂(通常需要数百万美元的计算资源),但相比之下,微调一个LLM或通过上下文学习进行适配的成本要低得多,仅需几百美元甚至更少。

随着高质量的预训练模型(如 MPT、Falcon 或 LLAMA-2)的广泛可用,并且许多可以免费甚至商业化使用,我们能够通过在特定任务上微调这些模型,快速构建功能强大的应用。这种方法不仅经济高效,还显著降低了开发复杂AI系统的门槛。

在人工智能研究的最新进展中,监督微调(SFT)已成为大型语言模型(LLMs)最广泛应用的微调方法之一。SFT 的核心是利用一个高质量的数据集(通常是 LLM 输出的精挑细选内容),通过标准语言建模目标对模型进行微调。这种方法以其简单性低成本著称,作为校准语言模型的有效工具,迅速在开源LLM研究社区以及更广泛的应用领域中流行开来。

在本文中,我们将详细阐述SFT的基本理念,探讨其在研究中的应用实例,并为实践者提供使用 SFT 的简易教程。无论你是新手还是经验丰富的开发者,仅需几行 Python 代码,你就可以快速上手,充分释放SFT的潜力!

为了深入理解 SFT,我们需要对语言模型(以及深度学习)有一个基础的了解。让我们回顾一些相关的背景信息,并简要重温一些重要的观点。

语言模型。SFT 是一种流行的微调技术,对于LLMs来说。因此,我们需要对语言模型有一个基本的了解。以下资源可以帮助您快速了解这些模型的工作原理:

Transformer 库。本概述中的代码依赖于 Transformer 库,这是最强大的深度学习库之一。此外,该库拥有大量教程和文档,为任何深度学习或LLM-相关项目提供了实用的学习资源。

训练 LLMs. 语言模型的训练过程通常分为三个阶段;见上文。首先,我们预训练语言模型,这是训练过程中计算量最大的步骤。从这里开始,我们进行对齐,通常通过以下三步框架(见下文)进行监督微调(SFT)和基于人类反馈的强化学习(RLHF)。

上述步骤构成了用于大多数最先进LLMs(例如 ChatGPT 或 LLaMA-2 [3])的标准训练流程。与预训练相比,SFT 和 RLHF 在计算上更为经济,但它们需要整理一个数据集——要么是高质量的LLM输出,要么是对LLM输出的人类反馈——这可能很困难且耗时。

有时在应用LLM解决下游任务时,我们可能需要做更多的工作。特别是,如果需要,我们可以通过领域特定的微调或在上下文中学习进一步专门化语言模型;见下文。

领域特定的微调简单地对模型进行进一步训练——通常通过语言建模目标,类似于预训练/SFT——在相关于下游任务的数据上,而在上下文中学习则将额外的上下文或示例添加到语言模型的提示中,用作解决问题的上下文。

什么是对齐?最后,在上述讨论中我们多次使用的一个重要术语是:对齐。预训练的语言模型通常没有太大用处。如果我们用这个模型生成输出,结果可能会重复且不太有帮助。为了创建一个更有用的语言模型,我们必须将这个模型与人类用户的期望对齐。换句话说,我们的语言模型不是生成最可能的文本序列,而是学习生成用户期望的文本序列。

这种协调是通过上述 SFT 和 RLHF 的三步框架完成的,可用于鼓励LLM内的各种行为和属性。通常,训练模型的人会选择一组在整个对齐过程中强调的一个或几个标准。常见的调整标准包括:提高指令遵循能力、阻止有害输出、使LLM更有帮助等等。例如,LLaMA-2[5] 被认为是i)有帮助和ii)无害/安全;见上文。

监督微调(SFT)是LLMs对齐过程中的第一个训练步骤,实际上非常简单。首先,我们需要整理一个高质量的LLM输出数据集——这些基本上只是LLM正确运行的例子;见下文。

然后,我们直接根据这些示例对模型进行微调。在这里,微调的“监督”方面来自于这样一个事实:我们正在收集模型应该模拟的示例数据集。然后,模型在微调期间学习复制这些示例的样式 。

与下一个标记预测的关系。有趣的是,SFT 与语言模型预训练没有太大区别——预训练和 SFT 都使用下一个 token 预测作为其基本训练目标!主要区别在于所使用的数据。在预训练过程中,我们使用大量原始文本数据来训练模型。

相比之下,SFT 使用高质量LLM输出的监督数据集。在每次训练迭代期间,我们都会对几个示例进行采样,然后使用下一个标记预测目标在此数据上微调模型。通常,下一个标记预测目标仅应用于每个示例中与LLM输出相对应的部分(例如上图中的响应)。

三步对齐过程(包括 SFT 和 RLHF)最初由InstructGPT[2]提出(尽管之前在 [21] 中针对摘要模型进行了探索),它是ChatGPT的前身和姐妹模型。由于InstructGPT和ChatGPT的成功,这个三步框架已经变得标准化并且相当流行,导致其在多种后续语言模型中使用(例如Sparrow[4]和LLaMA-2[6])。通过 SFT 和 RLHF 进行比对现在在研究和实际应用中大量使用。

SFT 之前进行微调。尽管 SFT 最近很流行,但语言模型微调长期以来一直是一种流行的方法。例如,GPT[7] 直接在评估它的每个任务上进行微调(见下文),以及仅编码器的语言模型(例如BERT[8])——因为它们并不常见——用于生成任务——几乎专门使用微调方法来解决下游任务。

此外,一些LLMs采取了与 SFT 略有不同的微调方法;例如,LaMDA[9] 对各种辅助任务进行微调,而Codex[10] 在代码语料库上执行特定领域的微调(即基本上对不同数据进行更多预训练)。

值得注意的是,SFT 与一般的微调略有不同。通常,对深度学习模型进行微调是为了教会模型如何解决特定任务,但这使得模型更加专业化,不那么通用——模型变成了“狭隘专家”。

与通用模型(例如,参见GOAT[11])相比,该模型可能会更准确地解决对其进行微调的任务,但它可能会失去解决其他任务的能力。相比之下,SFT 是对齐语言模型(包括通用基础模型)的核心组件。因为我们正在微调模型以模拟正确的风格或行为,而不是解决特定任务,所以它不会失去其通用问题解决能力。

SFT 使用简单——训练过程和目标与预训练非常相似。另外,该方法在执行对齐方面非常有效,并且相对于预训练而言,计算成本低廉(即便宜100X,甚至更多)。

如上图所示,单独使用 SFT(即不使用任何 RLHF)在模型的指令跟踪能力、正确性、一致性和整体性能方面具有明显的优势3。换句话说,SFT 是一种提高语言模型质量的高效技术。但是,我们应该记住,它并不完美!以下是我们应该考虑的一些缺点。

创建数据集。SFT 的结果在很大程度上取决于我们管理的数据集。如果该数据集包含一组不同的示例,可以准确捕获所有相关的对齐标准并表征语言模型的预期输出,那么 SFT 是一种很好的方法。

然而,我们如何保证用于 SFT 的数据集全面捕获我们在对齐过程中想要鼓励的所有行为?这只能通过仔细的手动检查数据来保证,这i)不可扩展,并且ii)通常很昂贵。

作为替代方案,最近的研究探索了为 SFT 生成数据集的自动化框架(例如,自我指导[12];见上文),但无法保证数据的质量。因此,SFT 尽管很简单,但需要管理高质量的数据集,而这可能很困难。

添加 RLHF 是有益的。即使在为 SFT 策划了高质量的数据集之后,最近的研究表明,通过执行 RLHF 可以获得进一步的好处。换句话说,仅通过 SFT 微调语言模型是不够的。

这一发现在最近的LLaMA-2 [5] 出版物中尤为明显,该出版物通过 SFT 和 RLHF 进行对齐;见上文。对于 SFT,LLaMA-2 使用大量(总共 27,540 个示例)对话会话数据集,这些数据集是手动策划的,以确保质量和多样性。尽管 SFT 使用了大量高质量的数据源,但进一步执行 RLHF 在有用性和安全性方面产生了巨大的好处(即 LLaMA-2 的对齐标准);见下文。

此外,作者指出,执行 SFT 后,语言模型能够生成与人类编写的对话质量相似的对话会话。因此,为 SFT 创建更多数据带来的好处较少,因为我们可以使用模型本身自动为 SFT 生成更多数据。

简而言之,研究界目前的共识似乎是,对齐的最佳方法是i)在中等大小的高质量示例数据集上执行 SFT,以及ii)投入剩余的精力来整理人类偏好数据以实现精细化。 -通过 RLHF 进行调整。

现在我们了解了 SFT 的概念,让我们探讨一下这个概念如何在实际和研究应用中使用。首先,我们将看一个如何在 Python 中执行 SFT 的示例。然后,我们将概述最近发表的几篇关于 SFT 主题的论文。

如前所述,SFT 的实现与语言模型预训练非常相似。在幕后,SFT 的任何实现都将使用我们已经广泛了解的下一个标记预测(也称为标准语言建模)目标。在实践中,我们可以使用 SFT 训练LLM的最佳工具之一是Transformer Reinforcement Learning (TRL)

Python 库,它包含 SFT 的实现,可用于微调现有的语言模型,只需使用几行代码。

执行 SFT。TRL 构建在HuggingFace 转换器库之上,可以使用上面显示的代码通过 SFT训练语言模型(在本例中为 Meta 的OPT 模型)。

这个简单的例子展示了通过 SFT 训练模型是多么容易!由于简单性,通过 SFT 微调模型在开源LLM研究社区中非常受欢迎。快速访问Open LLM排行榜将向我们展示一系列有趣的例子。使用 SFT 微调预训练的LLM是目前训练开源LLMs最简单、最有效的方法之一。

除了 SFT 的基本定义之外,我们可能还想使用一些有用的(并且更先进的)技术,例如仅对模型响应应用监督(而不是完整的对话或示例),通过共享来增强所有响应示例提示模板,甚至采用参数有效微调(PEFT)方法(例如LoRA[13])。

有趣的是,TRL 定义的 SFTTrainer 类具有足够的适应性和可扩展性,足以处理每种情况。有关实施的更多详细信息,请参阅下面的链接。

在本概述中,我们了解了 SFT、它如何在实践中使用以及当前研究中对其的了解。 SFT 对于人工智能从业者来说是一个强大的工具,因为它可用于以数据有效的方式将语言模型与某些人类定义的目标保持一致。

虽然通过 RLHF 可以获得更多好处,但 SFT 使用简单(即与预训练非常相似)、计算成本低且高效。这些特性使得 SFT 在开源LLM研究社区中得到广泛采用,几乎每天都会训练(使用 SFT)并发布各种新模型。

如果能够访问高质量的基础模型(例如 LLaMA-2),我们可以通过 SFT 高效、轻松地微调这些模型,以处理各种不同的用例。

最后的最后

感谢你们的阅读和喜欢,我收藏了很多技术干货,可以共享给喜欢我文章的朋友们,如果你肯花时间沉下心去学习,它们一定能帮到你。

因为这个行业不同于其他行业,知识体系实在是过于庞大,知识更新也非常快。作为一个普通人,无法全部学完,所以我们在提升技术的时候,首先需要明确一个目标,然后制定好完整的计划,同时找到好的学习方法,这样才能更快的提升自己。

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费

大模型知识脑图

为了成为更好的 AI大模型 开发者,这里为大家提供了总的路线图。它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

经典书籍阅读

阅读AI大模型经典书籍可以帮助读者提高技术水平,开拓视野,掌握核心技术,提高解决问题的能力,同时也可以借鉴他人的经验。对于想要深入学习AI大模型开发的读者来说,阅读经典书籍是非常有必要的。

在这里插入图片描述

实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

面试资料

我们学习AI大模型必然是想找到高薪的工作,下面这些面试题都是总结当前最新、最热、最高频的面试题,并且每道题都有详细的答案,面试前刷完这套面试题资料,小小offer,不在话下

在这里插入图片描述

640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

在这里插入图片描述

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值