大模型微调深入研究

在本博文系列的前一部分中,我们探讨了情境学习的概念,这是一种克服大型语言模型 (LLM) 的“舒适区”限制的强大方法。我们讨论了如何使用这些技术来转换任务并将其移回模型的专业领域,从而提高性能并与有用性、诚实性和无害性的关键设计原则保持一致。

在本文部分,我们将重点转移到第二种领域适应方法:微调。我们将深入研究微调的细节,探索如何利用它来扩展模型的“舒适区”,从而通过使模型适应特定领域和任务来提升性能。我们将讨论快速工程和微调之间的权衡,并根据数据速度、任务模糊性和其他考虑因素等因素提供何时选择一种方法而不是另一种方法的指导。

NSDT工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 - Three.js虚拟轴心开发包 - 3D模型在线减面 - STL模型在线切割 

1、Transformers 101

大多数最先进的 LLM 都由 Transformer 架构提供支持,Transformer 架构是一系列深度神经网络架构,自 2017 年 Vaswani 等人提出以来,它就颠覆了 NLP 领域,打破了该领域的所有常见基准。该架构系列的核心区别在于一个称为“注意力”的概念,它擅长根据单词或较大自然语言的上下文来捕捉它们的语义含义。

Transformer 架构由两个根本不同的构建块组成。一方面,“编码器”块专注于将自然语言的语义转换为所谓的上下文化嵌入,这是向量空间中的数学表示。这使得编码器模型在利用这些向量表示进行下游确定性或概率任务(如分类问题、NER 或语义搜索)的用例中特别有用。另一方面,解码器块在下一个标记预测上进行训练,因此如果以递归方式使用,则能够生成文本。它们可用于所有依赖于文本生成的任务。这些构建块可以彼此独立使用,也可以组合使用。当今生成式人工智能领域中提到的大多数模型都是仅解码器模型。这就是为什么这篇博文将重点介绍这种类型的模型。

图 1:Transformer 架构

2、端到端微调流程

微调利用迁移学习将专业知识高效地注入 LLaMA2 等基础模型。该过程涉及通过对特定领域的数据进行训练来更新模型的权重,同时保持整体网络架构不变。与需要大量数据集和计算的全面预训练不同,微调具有很高的采样和计算效率。从高层次上讲,端到端流程可以分为以下几个阶段:

图 2:E2E 微调流程

数据收集和选择:需要仔细选择要输入到模型中的专有数据集。除此之外,对于特定的微调目的,数据可能尚未可用,必须有目的地收集。根据可用的数据和要通过微调实现的任务,可以选择具有不同定量或定性特征的数据(例如标记、未标记、偏好数据 - 见下文)除了数据质量方面,还需要考虑数据源、机密性和 IP、许可、版权、PII 等维度。

LLM 预训练通常利用网络抓取和精选语料库的混合,微调作为一种领域适应方法的性质意味着所使用的数据集主要是针对组织、知识或特定任务领域的标记或未标记数据的精选语料库。

图 3:预训练与微调:数据组成和选择标准

虽然这些数据的来源可能不同(文档存储库、人造内容等),但这强调了,为了进行微调,重要的是仔细选择有关质量的数据,但如上所述,还要考虑机密性和知识产权、许可、版权、PII 等主题。

图 4:每种微调方法的数据要求

除此之外,一个重要的维度是将训练数据集分类为未标记和已标记(包括偏好)数据。领域适应微调需要未标记的文本数据(与其他微调方法不同,见图 4)。换句话说,我们可以简单地使用我们认为具有相关内容和足够质量的任何自然语言全文文档。这可能是用户手册、内部文档,甚至是法律合同,具体取决于实际用例。

另一方面,标记数据集(如指令上下文响应数据集)可用于监督微调方法。最近,将模型与实际用户反馈对齐的强化学习方法已经显示出很好的效果,利用人为或机器创建的偏好数据,例如二进制人类反馈(竖起大拇指/竖起大拇指)或多响应排名。

与未标记数据相比,标记数据集更难收集且成本更高,尤其是在规模较大且具有足够的领域专业知识的情况下。开源数据中心(如 HuggingFace Datasets)可以成为标记数据集的良好来源,尤其是在相关人群更广泛同意的领域(例如,红队的毒性数据集),使用开源数据集作为模型真实用户偏好的代理就足够了。

不过,许多用例更加具体,开源代理数据集是不够的。这时就需要由可能具有重要领域专业知识的真实人类标记的数据集。Amazon SageMaker Ground Truth 等工具可以帮助收集数据,无论是通过提供完全托管的用户界面和工作流程还是整个劳动力。

最近,合成数据收集越来越成为微调领域的一个话题。这是使用强大的 LLM 合成创建标记数据集的实践,无论是用于 SFT 还是偏好对齐。尽管这种方法已经显示出有希望的结果,但目前仍需进一步研究,并且必须证明其在实践中具有大规模用途。

数据预处理:选定的数据需要进行预处理,以使其“易于消化”以供下游训练算法使用。常见的预处理步骤如下:

  • 与质量相关的预处理,例如格式化、重复数据删除、PII 过滤
  • 与微调方法相关的预处理:例如渲染为提示模板以进行监督微调
  • 与 NLP 相关的预处理,例如标记化、嵌入、分块(根据上下文窗口)
  • 模型训练:根据选定的微调方法训练深度神经网络。我们将在下文中详细讨论流行的微调方法:
  • 持续预训练,又称领域适应微调:对全文数据进行训练,对齐与下一个标记预测任务相关联
  • 监督微调:利用标记数据的微调方法,对齐与目标标签相关联
  • 偏好对齐方法:利用偏好数据的微调方法,与模型/系统的实际用户定义的期望行为保持一致

随后,我们将深入研究各个阶段,首先介绍训练方法和不同的微调方法,然后再讨论数据集和数据处理要求。

3、训练

在本节中,我们将探讨训练解码器 Transformer 模型的方法。这适用于预训练和微调。

与传统的 ML 训练方法(如使用未标记数据的无监督学习或使用标记数据的监督学习)相反,Transformer 模型的训练采用一种称为自监督学习的混合方法。这是因为尽管输入的是未标记的文本数据,但算法实际上是通过屏蔽特定的输入标记来自我监督。给定以下输入标记序列“柏林是德国的首都”,这自然会生成一个监督样本,其中 y 是屏蔽的标记,X 是其余的标记。

图 5:语言模型的自监督训练

上述自监督训练方法正在针对语言建模 (LM) 特定的损失函数优化模型权重。虽然编码器模型训练利用掩码语言建模 (MLM) 通过随机掩码标记来利用双向上下文,但仅解码器模型与因果语言建模 (CLM) 方法相关联,该方法具有单向上下文,始终掩码序列的最右边的标记。简而言之,这意味着它们被训练为以自回归的方式基于前一个标记作为语义上下文来预测后续标记。除此之外,还存在其他 LM 方法,例如置换语言建模 (PLM),其中模型被训练为将随机打乱的标记序列恢复到排序顺序。

图 6:语言建模变化和损失函数

通过使用 CLM 任务作为代理,可以创建预测和基本事实,可用于计算预测损失。因此,将模型词汇表所有标记的预测概率分布与基本事实进行比较,基本事实是代表基本事实的标记的概率为 1.0 的稀疏向量。实际使用的损失函数取决于特定的模型架构,但通常使用交叉熵或困惑度损失等损失函数,这些函数在标记预测等分类问题空间中表现良好。利用损失函数逐渐最小化损失,从而通过在深度神经网络反向传播中执行梯度下降,在每次迭代中优化模型权重以实现我们的训练目标。

4、微调变体 — 场景

理论讲得够多了,让我们开始实践。假设你是来自生物技术领域的一家组织,旨在利用 LLM(比如说 LLaMA2)作为 COVID-19 疫苗研究各种 NLP 用例的基础模型。不幸的是,在很多方面,这个领域都不属于通用现成预训练 LLM 的“舒适区”,导致性能低于您的预期标准。在接下来的部分中,我们将讨论不同的微调方法,以及它们如何在我们虚构的场景中帮助将 LLaMA2 的性能提升到各个维度之上。

5、微调变体 — 持续预训练,又称领域适应微调

正如标题所示,虽然该领域开始融合到“持续预训练”这一术语中,但社区尚未就本节中讨论的微调方法的明确术语达成一致。但这种微调方法到底是什么呢?

生物技术领域的研究论文在写作风格上相当奇特,充满了领域特定的知识和行业甚至组织特定的缩写(例如 Polack 等人,2020 年;见图 7)。

图 7:以 Polack 等人 (2020) 为例说明研究论文的领域细节

另一方面,详细研究 Meta LLaMA 模型 (Touvron 等人,2023;图 8) 和 TII Falcon 模型系列 (Almazrouei 等人,2023;图 9) 的预训练数据集混合表明,通用 LLM 仅包含来自研究甚至生物技术领域的极小部分数据(分别为 2.5% 和 2%)(LLaMA 3 系列的预训练数据混合在博客发布时未公开)。

图 8:Meta LLaMA 模型的预训练数据集混合

图 9:TII Falcon 模型的预训练数据集混合 

因此,我们需要通过利用微调来扩大模型的“舒适区”,以便在要执行的特定任务上表现更好,从而弥补这一差距。持续预训练恰恰在上述方面表现出色。它涉及在由纯文本数据组成的特定数据集上调整预训练的 LLM 的过程。这种技术有助于将特定领域的信息(如语言模式(特定领域的语言、首字母缩略词等)或隐含在原始全文中的信息)注入模型的参数知识中,以使模型的响应与该特定语言或知识领域保持一致。对于这种方法,使用未标记的文本数据对预训练的解码器模型进行下一个标记预测的微调。这使得持续预训练成为与预训练最相似的微调方法。

在我们的示例中,我们可以将所提及的论文内容与来自相似领域的相关文献一起使用,并将其转换为连接的文本文件。根据调整目标和其他要求,可以应用数据管理步骤,例如删除不必要的内容(例如作者、目录等)、重复数据删除或 PII 减少。最后,数据集经过一些 NLP 特定的预处理(例如标记化、根据上下文窗口分块等 - 参见上文),然后才用于训练模型。训练本身是上一节中讨论的经典 CLM 训练。在调整 LLaMA2 并使用来自 BioTech 领域的一组研究出版物进行持续预训练后,我们现在可以将其用作该特定领域的文本完成模型“BioLLaMA2”。

6、微调变体 — 监督微调 (SFT)

不幸的是,我们人类不喜欢以纯文本完成/标记预测的形式来构建我们想要解决的问题。相反,我们是一种喜欢交谈的物种,倾向于闲聊或指导性行为,尤其是当我们想要完成任务时。

因此,我们需要模型行为中超越简单的下一个标记预测的复杂性。这就是监督微调方法发挥作用的地方。监督微调 (SFT) 涉及将特定数据集上预先训练的 LLM 与标记示例对齐的过程。这种技术对于定制模型的响应以适应特定领域或任务至关重要,例如上述对话性质或指令遵循。通过在与目标应用程序密切相关的数据集上进行训练,SFT 允许 LLM 加深理解并根据专门的要求和行为产生更准确的输出。

除了上述内容之外,SFT 的良好示例可以是问答模型的训练、实体识别等数据提取任务或红队攻击以防止有害响应。

图 10:E2E 监督微调管道

正如我们上面所理解的,SFT 需要带标签的数据集。开源中有很多通用的带标签数据集,但是,为了使模型最适合您的特定用例、行业或知识领域,手动制作自定义数据集是有意义的。最近,使用强大的 LLM(如 Claude 3 或 GPT-4)制作此类数据集的方法已经发展成为一种资源和时间高效的人工标记替代方案。

“dolly-15k”数据集是一种流行的通用开源指令微调数据集,由 Databricks 的员工手动制作。它由大约 15k 个指令示例和标有期望响应的上下文组成。该数据集可用于将我们的 BioLLaMA2 模型与以下指令对齐,例如用于封闭式问答任务。对于针对指令遵循的 SFT,我们将继续将数据集的每一项转换为全文提示,嵌入到代表我们想要将模型对准的任务的提示结构中。这可能如下所示:

### Instruction:
{item.instruction}
### Context:
{item.context}
### Response:
{item.response}

提示模板可能因模型系列而异,因为有些模型更喜欢 HTML 标签或其他特殊字符而不是主题标签。在将数据集的所有项目连接成一大段文本之前,会将此过程应用于数据集的每个项目。最后,在完成上述 NLP 特定的预处理之后,可以通过利用下一个标记预测和基于 CLM 的训练目标将此文件训练到模型中。由于它始终暴露于这种特定的提示结构,模型将学会坚持它并以相应的方式行动——在我们的例子中,是遵循指令。将我们的 BioLLaMA2 与 dolly-15k 数据集对齐后,我们的 BioLLaMA2-instruct 模型将彻底遵循通过提示提交的指令。

7、微调变化—人类偏好对齐技术

借助 BioLLaMA2,我们拥有一个适应生物技术研究领域的模型,可以方便地按照我们的指示来满足用户的期望。但是等等——这个模型真的与我们的实际用户保持一致吗?这凸显了迄今为止讨论的微调方法的核心问题。

我们使用的数据集代表了我们认为用户喜欢或需要的内容:内容、语言、所选研究论文的缩写,以及少数 Databricks 员工制作 dolly-15k 时所期望的指导行为。这与以用户为中心的产品开发概念形成了鲜明对比,后者是敏捷产品开发的核心和完善原则之一。

事实证明,在开发优秀产品时,反复循环收集来自实际目标用户的反馈非常成功。事实上,如果我们的目标是为您的用户打造出色的体验,这绝对是我们想要做的事情!

图 11:强化学习框架

考虑到这一点,研究人员付出了相当大的努力来寻找将人类反馈纳入 LLM 性能改进的方法。在此过程中,他们意识到与(深度)强化学习 (RL) 存在显著的重叠,强化学习涉及自主代理在环境内的动作空间中执行动作,产生下一个状态,该状态始终与奖励相关联。代理根据策略或价值图采取行动,该策略或价值图在训练阶段逐渐优化以最大化奖励。

图 12:用于语言建模的经过调整的强化学习框架

这一概念(投射到 LLM 世界中)归结为 LLM 本身充当代理。在推理过程中,它通过其自回归标记预测特性的每一步执行一个动作,其中动作空间是模型的词汇表,环境是所有可能的标记组合。随着每个新的推理周期,都会建立一个新状态,该状态会获得奖励,理想情况下与某些人类反馈相关。

基于这个想法,已经提出并测试了几种人类偏好对齐方法。接下来,我们将介绍一些最重要的方法:

8、使用近端策略优化的强化学习

图 13:RLHF 的奖励模型训练

从人类反馈中进行强化学习是早期生成式人工智能炒作的主要隐藏技术支柱之一,它为 Anthropic Claude 或 GPT-3.5 等大型解码器模型取得的突破提供了额外的推动力,推动了用户对齐的方向。

RLHF 的工作过程分为两个步骤,如图 13 和 14 所示:

步骤 1(图 13):首先,需要训练奖励模型,以供以后在实际的 RL 驱动训练方法中使用。因此,与要优化的目标(在我们的 BioLLaMA2-instruct 模型中,这将是指令和上下文的对)一致的提示数据集被输入到模型中进行微调,同时不仅要求一个,而且要求两个或更多推理结果。这些结果将呈现给人类贴标者,以根据优化目标进行评分(第 1、第 2、第 3,……)。

还有一些开源的偏好排名数据集,其中包括“Anthropic/hh-rlhf”,它是针对红队和诚实无害的目标量身定制的。经过标准化步骤以及转换为奖励值之后,将基于单个样本奖励对训练奖励模型,其中样本是单个模型响应。奖励模型架构通常类似于要微调的模型,经过小头调整,最终将潜在空间投射到奖励值而不是令牌上的概率分布。然而,该模型参数的理想大小仍有待研究,过去模型提供商选择了不同的方法。

图 14:基于强化学习的 RLHF 模型调整(使用 PPO)

步骤 2(图 14):现在使用我们的新奖励模型来训练实际模型。因此,另一组提示将输入到要调整的模型中(图中的灰色框),每个提示都会产生一个响应。随后,这些响应将输入到奖励模型中,以检索单个奖励。然后,使用基于策略的 RL 算法近端策略优化 (PPO) 逐步调整模型的权重,以最大化分配给模型答案的奖励。与 CLM 相反,这种方法不是利用梯度下降,而是利用梯度上升(或梯度下降超过 1 — 奖励),因为我们现在试图最大化目标(奖励)。为了提高算法稳定性,防止训练期间模型行为出现过大的漂移(这可能是由 PPO 等基于 RL 的方法引起的),奖励项中添加了预测偏移惩罚,惩罚与初始语言模型在同一输入提示上的预测概率分布相差太大的答案。

除了使用 PPO 的 RLHF(目前最广泛采用和最有效的偏好对齐方法)之外,还开发了其他几种方法。在接下来的几节中,我们将深入探讨其中一些方法的高级水平。这仅适用于高级读者,因此根据您对深度学习和强化学习的经验水平,您可能希望直接跳到下一部分“决策流程图 - 选择哪种模型,选择哪种微调路径”。

9、直接策略优化 (DPO)

直接策略优化 (DPO) 是一种从 RLHF 中推导出的偏好对齐方法,解决了它的两个主要缺点:

  • 首先训练奖励模型需要额外的资源投入,并且根据奖励模型的大小,投入可能很大
  • 使用 PPO 的 RLHF 的训练阶段需要大量计算集群,因为模型的三个副本(初始 LM、调整后的 LM、奖励模型)需要在低延迟设置中同时托管和编排
  • RLHF 可能是一个不稳定的过程(→ 预测偏移惩罚试图缓解这种情况)

图 15:RLHF 与 DPO

DPO 是一种替代的偏好对齐方法,由 Rafailov 等人于 2023 年提出。DPO 的核心思想是跳过奖励模型训练,直接根据偏好数据调整最终的偏好对齐 LLM。这是通过应用一些数学调整来实现的,将奖励模型(奖励项)的参数化转换为损失函数(图 16),同时用偏好数据的概率值替换实际奖励值。

图 16:DPO 的损失函数

这在实现偏好对齐模型的过程中节省了计算和算法的复杂性。虽然本文还展示了与 RLHF 相比的性能提升,但这种方法相当新颖,因此结果需要经过实践证明。

10、卡尼曼-特沃斯基优化 (KTO)

现有的将语言模型与人类反馈对齐的方法,例如 RLHF 和 DPO,需要偏好数据——对于给定的输入,输出对中一个输出比另一个输出更受青睐。然而,在现实世界中,大规模收集高质量的偏好数据既具有挑战性,又成本高昂。偏好数据通常会受到噪音、不一致和不及物性的影响,因为不同的人类评分者可能对哪种输出更好有不同的看法。KTO 是由 Ethayarajh 等人 (2024) 提出的一种替代方法,它可以使用更简单、更丰富的信号——只需知道给定的输出对于输入来说是可取的还是不可取的,而无需知道输出之间的相对偏好。

图 17:根据 Kahneman 和 Tversky 的前景理论,人类决策的隐含效用

从高层次来看,KTO 的工作原理是定义一个奖励函数来捕捉一代人的相对“善意”,然后优化模型以在 Kahneman-Tversky 价值函数下最大化该奖励的预期值

Kahneman 和 Tversky 的前景理论解释了人类如何以有偏见但定义明确的方式对不确定的结果做出决策。该理论认为,人类效用取决于一个价值函数,该函数在收益上是凹的,在损失上是凸的,并且有一个将收益与损失分开的参考点(见图 17)。KTO 直接优化了这种人类效用概念,而不仅仅是最大化偏好的可能性。

图 18:RLHF 与 DPO 与 KTO

关键创新在于 KTO 只需要一个二元信号来表明输出是可取的还是不可取的,而不是完整的偏好对。这使得 KTO 比基于偏好的方法更具有数据效率,因为二元反馈信号更加丰富,收集起来也更便宜。(见图 18)

KTO 在偏好数据稀缺或收集成本高昂但您可以访问大量有关模型输出质量的二元反馈的情况下特别有用。根据论文,它可以匹配甚至超过基于偏好的方法(如 DPO)的性能,尤其是在更大的模型规模下。然而,这需要在实践中进行大规模验证。当目标是直接优化人类效用而不仅仅是偏好可能性时,KTO 可能是更好的选择。但是,如果偏好数据质量非常高且噪音或不传递性很小,那么基于偏好的方法仍然可能是更好的选择。 KTO 在处理极端数据不平衡以及在某些情况下避免监督微调的需要方面也具有理论优势。

11、比值偏好优化 (ORPO)

ORPO 背后的主要动机是解决现有偏好对齐方法(例如 RLHF 和 DPO)的局限性,这些方法通常需要单独的监督微调 (SFT) 阶段、参考模型或奖励模型。Hong 等人的论文 (2024) 认为,SFT 本身可能会无意中增加以不良风格生成 token 的可能性,因为交叉熵损失不会对不受欢迎的响应提供直接惩罚。同时,他们声称 SFT 对于收敛到强大的偏好对齐模型至关重要。这导致了一个耗费大量资源的两阶段对齐过程。通过将这些阶段合二为一,ORPO 旨在保留 SFT 的领域适应优势,同时辨别和缓解偏好对齐方法所针对的不必要的生成风格。(见图 19)

图 19:RLHF 与 DPO 与 ORPO

ORPO 引入了一种新颖的偏好对齐算法,该算法将基于比值的惩罚与传统的因果语言建模绑定损失(例如交叉熵损失)结合起来。ORPO 的目标函数由两个部分组成:SFT 损失和相对比率损失 (LOR)。LOR 项最大化了产生受欢迎响应和不受欢迎响应的可能性之间的比值比,有效地惩罚了为被拒绝的响应分配高概率的模型。

图 20:ORPO 损失函数将 SFT 损失和偏好优势比合并为一个损失项

当你想要微调预训练语言模型以适应特定领域或任务,同时确保模型的输出符合人类偏好时,ORPO 特别有用。它可以应用于您可以访问成对偏好数据集(yw = 偏好,yl = 不喜欢,例如 UltraFeedback 或 HH-RLHF 数据集)的场景。考虑到这一点,ORPO 旨在成为 RLHF 和 DPO 的更高效、更有效的替代方案,因为它不需要单独的参考模型、奖励模型或两步微调方法。

12、决策流程图 — 选择哪种模型和微调路径

在深入研究了大量微调方法之后,一个显而易见的问题出现了:从哪种模型开始,根据具体要求选择哪种方法最好。选择适合微调的模型的方法分为两个步骤。第一步与选择不带任何微调意图的基础模型非常相似,包括以下维度的考虑(并非详尽无遗):

  • 要使用的平台:每个平台都带有一组可通过其访问的模型。这需要考虑在内。请注意,模型可用性可能因地区而异。请查看相应平台的文档以获取有关此方面的更多信息。
  • 性能:组织应致力于使用最精简的模型来完成特定任务。虽然无法提供这方面的通用指导,并且微调可以显著提升模型的性能(较小的微调模型可以胜过较大的通用模型),但利用基础模型的评估结果可以作为有用的指标。​​
  • 预算 (TCO):一般来说,更大的模型需要更多的计算能力,并且可能需要多个 GPU 实例才能在多个加速器上进行训练和服务。这会直接影响训练和推理成本、训练和推理的复杂性、所需的资源和技能等因素,这些因素是模型整个生命周期的 TCO 的一部分。这需要与分配的短期和长期预算保持一致。
  • 许可模式:模型(无论是专有模型还是开源模型)都带有许可限制,具体取决于使用领域和要使用的商业模型。这需要考虑到这一点。
    治理、道德、负责任的 AI:除了这些方面,每个组织都有合规指南。在选择模型时需要考虑这一点。
  • 示例:组织可能会决定考虑 LLaMA 2 模型,并根据基础模型的评估结果排除使用专有模型(如 Anthropic Claude 或 AI21Labs Jurassic)。此外,他们决定仅使用该模型的 7B 参数版本,以便能够在单个 GPU 实例上训练和提供服务。

第二步是将初始模型选择范围缩小到 1-几个模型,以供实验阶段考虑。最终决定选择哪种具体方法取决于下图所示的语言模型微调生命周期的所需切入点。

图 21:通过微调进行领域适应的决策流程图

因此,需要考虑以下维度:

  • 要执行的任务:不同的用例需要特定的模型行为。虽然对于某些用例,简单的文本完成模型(下一个标记预测)可能就足够了,但大多数用例都需要特定于任务的行为,如闲聊、指令遵循或其他特定于任务的行为。为了满足这一要求,我们可以从要执行的期望任务采取逆向工作的方法。这意味着我们需要定义我们特定的微调过程,以结束与此特定任务一致的模型。就插图而言,这意味着模型必须与期望的模型行为一致,以蓝色、橙色或绿色圆圈结束,而微调过程则与流程图的可能路径一起定义。
  • 选择正确的起点(只要合理):虽然我们应该非常清楚我们的微调过程应该在哪里结束,但我们可以通过选择相应的基础模型从流程图中的任何位置开始。然而,这需要合理——在拥有数百万个已发布模型的模型中心时代,检查微调步骤是否已被共享结果模型的其他人执行是有意义的,尤其是在考虑将流行模型与开源数据集结合使用时。
  • 微调是一个迭代的、潜在的递归过程:在实现我们想要的模型的过程中,可以执行多个后续微调作业。但是,请注意,我们需要牢记灾难性遗忘,因为模型无法在其权重中编码无限量的信息。为了缓解这种情况,您可以利用参数高效的微调方法,如本文和博客中所示的 LoRA。
  • 针对特定任务的性能提升:执行微调是为了提升模型在特定任务中的性能。如果我们正在寻找语言模式(领域特定语言、首字母缩略词等)或隐含在训练数据中的信息的性能提升,那么继续进行预训练是正确的选择。如果我们想要提升特定任务的性能,则应选择监督微调。如果我们想让模型行为与实际用户保持一致,那么人类偏好对齐是正确的选择。
  • 数据可用性:训练数据也会影响我们选择哪条路径。一般来说,与标记数据相比,组织持有大量未标记的文本数据,而获取标记数据可能是一项昂贵的任务。在浏览流程图时需要考虑这个维度。

通过这种反向工作方法以及上面的流程图,我们可以确定要开始的模型以及遍历微调流程图时要采取的路径。

为了使这一点更加明显,我们提供了两个示例:

图 22:示例 1 的决策流程图

示例 1:按照上面微调部分中所示的示例,我们可以构建一个针对特定用例的指导模型,该模型与我们实际用户的偏好保持一致。但是,我们希望提升生物技术领域的性能。研究论文形式的未标记数据可用。我们选择 LLaMA-2–7b 模型系列作为所需的起点。由于 Meta 尚未发布 LLaMA-2–7b 指导模型,因此我们从文本完成模型 LLaMA-2–7b-base 开始。然后,我们对研究论文语料库进行持续的预训练,然后对开源指导数据集(如 dolly-15k 数据集)进行监督微调。这会产生一个指导微调的生物技术版本的 LLaMA-2–7B-base,我们称之为 BioLLaMA-2–7b-instruct。在下一步中,我们希望将模型与我们实际用户的偏好保持一致。我们收集偏好数据集,训练奖励模型,并使用带有 PPO 的 RLHF 来偏好对齐我们的模型。

图 23:示例 2 的决策流程图

示例 2:在此示例中,我们旨在使用聊天模型,但要与实际用户的偏好保持一致。我们选择 LLaMA-2–7b 模型系列作为理想的起点。我们发现 Meta 提供了一个现成的聊天微调模型 LLaMA-2–7b-chat,我们可以将其用作起点。在下一步中,我们希望将模型与实际用户的偏好保持一致。我们从用户那里收集偏好数据集,训练奖励模型,并使用 RLHF 和 PPO 来使我们的模型与偏好保持一致。

13、结束语

生成式 AI 为企业和组织提供了许多令人兴奋的用例。然而,这些应用程序通常比生成食谱或演讲等个人消费者用途复杂得多。对于公司而言,AI 需要了解组织的特定领域知识、流程和数据。它必须与现有的企业系统和应用程序集成。并且它需要为不同的员工和角色提供高度定制的体验,同时以无害的方式行事。要在企业环境中成功实施生成式 AI,必须精心设计技术并根据组织的独特需求进行量身定制。仅仅使用通用的、公开训练的模型是不够的。

在这篇博文中,我们讨论了领域适应如何通过克服模型面临“舒适区”之外的任务的情况来帮助弥合这一差距。通过情境学习和微调,我们深入研究了两种强大的领域适应方法。最后,我们讨论了在这两种方法之间做出选择时需要权衡的事项。

成功弥合强大的 AI 功能与现实世界的业务需求之间的差距是释放公司生成式 AI 全部潜力的关键。


原文链接:LLM微调深入研究 - BimAnt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/393510.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WebBench源码分析

WebBench 源码解析 一、前言 WebBench 作为一款网站性能测试工具,其源码蕴含着丰富的技术细节和逻辑流程。本文将深入剖析其安装编译过程以及关键函数的核心逻辑。 二、安装编译 1. 克隆代码到本地仓库 git clone https://github.com/EZLippi/WebBench.git2. 编…

使用 Squid 搭建 Http 代理服务器隐藏 IP

在一些情况下,需要变更自己的访问 IP,可以通过 Squid 搭建代理服务器实现。 本文使用的是 CentOS 7.6 系统。 一、部署 Squid 安装 Squid。 yum install squid -y启动服 systemctl start squid二、访问控制 总有刁民想害郑,疯狂访问朕的…

基于宝塔面板稳定快速安装 ssl 证书脚本

背景 我通过AI制作了不少关于签发ssl证书的脚本,目的是方便无脑安装,不需要懂代码。 但全都是基于acme.sh这个工具来设计的脚本,而且证书申请有点慢,有时还会申请失败。 然后我发现了certbot, 安装证书可谓神速! c…

ASP.NET Core基础 - 简介

目录 一. 简介 A、跨平台性 B、高性能 C、开源性 D、模块化与可扩展性 E、集成现代前端技术 二. ASP.NET 4.x 和 ASP.NET Core 比较 A、架构与平台支持 B、性能 C、开发体验 D、社区支持与生态系统 三. NET 与 .NET Framework 比较 A、概念范围 B、跨平台能力 C…

基于JAVA的高考智能排考场系统设计与实现,源码、部署+讲解

绪 论 随着教育规模的不断扩大和技术的进步,传统的考试管理方式面临着诸多挑战,如考试安排的复杂性、作弊现象的频发以及考试过程中的监督和管理等问题。因此,针对这些挑战,智能排考系统应运而生。 智能排考系统利用先进的技术…

数据结构(邓俊辉)学习笔记】词典 03—— 排解冲突(1)

文章目录 1. 一山二虎2. 泾渭分明3. 开放定址4. 线性试探5. 赖惰删除 1. 一山二虎 此前我们已经多次指出,对于需要动态维护的散列表冲突是不可避免的,无论你的散列函数设计的有多么精妙,因此我们不得不回答的第二个重要问题就是一旦发生冲突&…

零售EDI:OBI欧倍德EDI项目案例

OBI欧倍德公司是德国建材和家居装饰零售连锁店,在德国以及其他欧洲国家拥有众多分店,是欧洲领先的DIY(Do It Yourself)零售商之一。为了更好地处理与全球供应商之间的业务数据往来,OBI采用EDI提高其供应链的自动化水平…

基于微信小程序的宠物服务平台(系统源码+lw+部署文档+讲解等)

文章目录 目录 详细视频演示 系统详细设计截图 微信小程序系统的实现 1.1系统前台功能的实现 2.1微信小程序开发环境搭建 2.2微信开发者工具 2.3程序应用相关技术和知识 2.3.1小程序目录结构以及框架介绍 2.3.2 Java技术 2.3.3 MySQL数据库 2.3.4 SSM框架 源码获…

Pygame制作简单的跑酷游戏

今天我们来看看如何使用Pygame框架制作一个简单的跑酷游戏。这个游戏包含了基本的游戏元素,如玩家角色、障碍物、背景、音效等,可以作为入门Pygame游戏开发的一个不错的示例。 游戏概述 这是一个简单的横版跑酷游戏,玩家控制一个忍者角色,通过跳跃来躲避迎面而来的各种障碍物…

【研发日记】嵌入式处理器技能解锁(二)——TI C2000 DSP的SCI(串口)通信

文章目录 前言 背景介绍 SCI通信 Transmitter Receiver SCI中断 分析和应用 总结 参考资料 前言 见《【研发日记】嵌入式处理器技能解锁(一)——多任务异步执行调度的三种方法》 背景介绍 近期使用TI C2000 DSP做的一个嵌入式系统开发项目中,在使用它的SCI&…

Pytorch系列-张量的类型转换

🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” 张量转换为NumPy数组 使用Tensor.numpy()函数可以将张量转换为ndarray数组 # 1.将张量转换为numpy数组 data_tensortorch.tensor([2,3,4]) # 使用张量对象中的numpy函数进行转…

c++STL中list介绍,模拟实现和list与vector对比

目录 前言 : 1. list的介绍及使用 1.1list的介绍 1.2 list的使用 1.2.1 list的构造 1.2.2 list iterator的使用 1.2.3 list capacity 1.2.4 list element access 1.2.5 list modifiers 1.2.6 list的迭代器失效 2. list的模拟实现 3. list与vector的对…

串行并行数据转换

前言 串行数据传输通常在数据传输距离较远时使用,而并行数据传输适用于短距离、高速数据交换。通过转换,可以根据实际需求选择合适的传输方式,以优化数据传输效率和速度。串行数据传输在长距离传输中可以减少信号的干扰和失真,因为…

springboot整合libreoffice(两种方式,使用本地和远程的libreoffice);docker中同时部署应用和libreoffice

一、 背景 因为项目中需要使用word转pdf功能,因为转换速度原因,最后选用了libreoffice,原因及部署请参考 linux ubuntu环境安装libreoffice,word转pdf 远程调用的话可选docker部署,请看2.3.1 二、springboot整合libr…

达梦数据库的系统视图v$mem_pool

达梦数据库的系统视图v$mem_pool 达梦数据库的V$MEM_POOL视图主要用于显示所有内存池的信息。通过查询这个视图,用户可以监控数据库中各个内存组件的使用状况,包括内存池的大小、使用情况等。这有助于用户判断内存池是否空闲或紧张,从而进行…

【机器人学】6-4.六自由度机器人运动学参数辨识-机器人精度验证【附MATLAB代码】

前言 前两个章节以及完成了机器人参数辨识。 【机器人学】6-1.六自由度机器人运动学参数辨识-辨识数学模型的建立 【机器人学】6-2.六自由度机器人运动学参数辨识-优化方法求解辨识参数 标定了工具端、基座以及机器人本身的DH参数。那么我们的机器人精度如何呢?机…

Unity射击游戏开发教程:(31)制造一定追踪行为的敌人

在本文中,我们将介绍如何在两种敌人行为之间切换。本文是前两篇文章的延续,分别介绍了敌人躲避玩家射击以及敌人不断旋转并向玩家射击的情况。我只是介绍如何在这两种行为之间进行转换。 这种新的敌人行为的目标: 当不开火时,敌人可以躲避玩家的射击。射击时,敌人无法躲避…

谷粒商城实战笔记-137-商城业务-首页-整合dev-tools渲染一级分类数据

文章目录 一,使用热加载工具spring-boot-devtools1,引入devtools依赖2,ctrlshiftf9 编译静态资源 二,thymeleaf原理三,渲染一级分类 一,使用热加载工具spring-boot-devtools 因为我们采用的前后端一体的开…

全国首例 腾讯《穿越火线》协助破获DMA外挂案

据腾讯游戏安全中心公告,腾讯旗下的游戏《穿越火线》协助警方破获了首例DMA外挂案件。DMA即Direct Memory Access(直接内存访问),原本是一种读写数据的计算机技术。 DMA外挂则通过特殊的软硬件工具直接访问电脑内存,读…

MIMO技术入门(通俗易懂)

MIMO技术的思路 形象地形容就是,从原来的一个人在搬砖,转变成多个人在搬砖。 MIMO/SIMO/MISO示意图 MIMO用专业一点的词形容,就是发射端和接收端都有多个天线,这里的多天线并不是指有多个天线板,对于基站来说&#…