在 2025 年微调大型语言模型 (LLM)

众所周知,大型语言模型 (LLM) 正在以惊人的速度发展,并在生成式 AI 行业中引起人们的注意。企业不仅感兴趣;他们痴迷于 LLM,尤其是 LLM 微调的潜力。最近,数十亿美元被投入到 LLM 研究和开发中。行业领导者和技术爱好者越来越渴望加深他们对 LLM 及其微调的理解。虽然自然语言处理 (NLP) 的这一前沿领域不断扩大,但保持消息灵通至关重要。LLM 可能为您的业务增加的价值取决于您对这项技术的知识和直觉。

大型语言模型生命周期有几个关键步骤,今天我们将介绍这个周期中最有趣和最密集的部分之一 – LLM 微调过程。这是一项费力、繁重但有益的任务,涉及许多语言模型训练过程。

大型语言模型生命周期

在讨论 LLM 微调之前,了解 LLM 生命周期及其工作原理非常重要。

1. 愿景和范围:首先,你应该定义项目的愿景。确定您的 LLM 是更通用的工具还是针对特定任务,例如命名实体识别。明确的目标可节省时间和资源。

2.模型选择:选择从头开始训练模型或修改现有模型。在许多情况下,调整预先存在的模型是有效的,但有些实例需要使用新模型进行微调。

3. 模型的性能和调整:准备好模型后,您需要评估其性能。如果不满意,请尝试 prompt engineering 或进一步微调。我们将重点介绍这部分。确保模型的输出与人类偏好同步。

4. 评估和迭代:定期使用指标和基准进行评估。在提示工程、微调和 LLM 评估之间迭代,直到达到所需的结果。

5. 部署:模型按预期执行后,进行部署。此时优化计算效率和用户体验。

什么是 LLM 微调?

大型语言模型 (LLM) 微调是采用预先训练的模型并在较小的特定数据集上进一步训练它们的过程,以优化其功能并提高特定任务或领域的性能。微调是指将通用模型转换为专用模型。它弥合了通用预训练模型与特定应用程序的独特要求之间的差距,确保语言模型与人类的期望密切相关。想想 OpenAI 的 GPT-3,这是一种最先进的大型语言模型,专为广泛的自然语言处理 (NLP) 任务而设计。假设一家医疗保健组织希望使用 GPT-3 来帮助医生从文本注释生成患者报告。虽然 GPT-3 可以理解和创建一般文本,但它可能没有针对复杂的医学术语和特定的医疗保健术语进行优化。

为了提高其针对此专业角色的性能,该组织在充满医疗报告和患者记录的数据集上微调了 GPT-3。它可能会使用 SuperAnnotate 的 LLM 自定义编辑器等工具来构建具有所需界面的自己的模型。通过此过程,模型会更加熟悉医学术语、临床语言的细微差别和典型的报告结构。微调后,GPT-3 已准备好帮助医生生成准确和连贯的患者报告,展示其对特定任务的适应性。

这听起来不错,但请记住,一切都是有代价的。我们很快就会更详细地讨论这个问题。

何时使用微调

我们关于大型语言模型的文章涉及上下文学习和 zero/one/few shot 推理等主题。以下是快速回顾:

上下文学习是一种通过提示中的特定任务示例来改进提示的方法,为 LLM 提供需要完成的蓝图。

Zero-shot 推理将您的输入数据合并到 Prompt 中,无需额外的示例。如果零样本推理没有产生预期的结果,则可以使用“单次”或“少样本推理”。这些策略包括在提示中添加一个或多个已完成的示例,从而帮助较小的 LLM 表现更好。

这些是直接在用户提示中使用的技术,旨在优化模型的输出并更好地使其适应用户的偏好。问题是它们并不总是有效,尤其是对于较小的 LLM。以下是上下文学习可能失败的示例。

除此之外,您在提示中包含的任何示例都会占用上下文窗口中的宝贵空间,从而减少您必须包含其他有用信息的空间。最后,来了微调。与预训练阶段不同,对于大量非结构化文本数据,微调是一个监督式学习过程。这意味着您可以使用标记示例的数据集来更新 LLM 的权重。这些标记的示例通常是提示-响应对,从而更好地完成特定任务。

监督微调 (SFT)

监督式微调是指使用标记数据更新预先训练的语言模型以执行特定任务。使用的数据已事先检查过。这与不检查数据的无监督方法不同。通常,语言模型的初始训练是无监督的,但微调是有监督的。

如何进行微调?

让我们更深入地了解一下 LLM 中的微调。为了准备训练数据,有许多开源数据集可以提供对用户行为和偏好的见解,即使它们没有直接格式化为教学数据。例如,我们可以将 Amazon 产品评论的大型数据集转化为指令提示数据集进行微调。提示模板库包括许多用于不同任务和不同数据集的模板。

指令数据集准备就绪后,与标准监督学习一样,您可以将数据集划分为训练验证和测试拆分。在微调过程中,您可以从训练数据集中选择提示并将其传递给 LLM,然后 LLM 会生成完成。

在微调阶段,当模型暴露于特定于目标任务的新标记数据集时,它会计算其预测与实际标签之间的误差或差异。然后,模型使用此误差来调整其权重,通常通过梯度下降等优化算法。权重调整的幅度和方向取决于梯度,梯度表示每个权重对误差的贡献程度。对误差影响较大的权重调整幅度较大,而影响较小的权重调整幅度较小。

在数据集的多次迭代(或 epoch)中,模型继续调整其权重,以磨练将特定任务的误差降至最低的配置。目的是使以前学到的一般知识适应新数据集中存在的细微差别和特定模式,从而使模型对目标任务更加专业和有效。

在此过程中,将使用标记的数据更新模型。它会根据其猜测和实际答案之间的差异而变化。这有助于模型了解在标记数据中找到的详细信息。通过执行此作,模型可以改进它所针对的任务。

让我们举个例子来更好地描述这一点;如果你问一个预先训练的模型,“为什么天空是蓝色的?”它可能会回答,“因为大气散射阳光的方式。这个答案简单直接。然而,对于科学教育平台的聊天机器人来说,答案可能太简短了。它可能需要基于您的指南的更多科学细节或背景。这就是监督式微调的用武之地。

微调后,模型可以对科学问题给出更深入的回答。微调后,当被问到“为什么天空是蓝色的”时,模型可能会提供更详细的解释,例如:

“天空看起来是蓝色的,因为有一种叫做瑞利散射的现象。当阳光进入地球大气层时,它由不同的颜色组成,每种颜色都有自己的波长。蓝光的波长较短,被大气中的气体和颗粒向各个方向散射。这种散射导致阳光直射呈现白色,但天空本身呈现蓝色。这种丰富的回答是全面的,适合作为科学教育平台。

微调 LLM 的方法

LLM 微调是一个监督式学习过程,您可以在其中使用标记示例的数据集来更新 LLM 的权重,并使模型提高其执行特定任务的能力。让我们探索一些微调 LLM 和 LLM 代理的著名方法。

指令微调

用于提高模型在各种任务上性能的一种策略是指令微调。它是关于使用示例来训练机器学习模型,这些示例演示了模型应如何响应查询。用于微调大型语言模型的数据集必须用于您的指令目的。例如,假设您微调模型以提高其摘要技能。在这种情况下,您应该构建一个示例数据集,该数据集以 summarize 说明开头,然后是文本或类似短语。在翻译的情况下,您应该包含诸如“翻译此文本”之类的说明。这些提示完成对允许您的模型以一种新的利基方式 “思考” 并服务于给定的特定任务。

完全微调

指令微调,其中模型的所有权重都更新,称为完全微调。该过程会产生具有更新权重的新版本模型。需要注意的是,就像预训练一样,完全微调需要足够的内存和计算预算来存储和处理训练期间更新的所有梯度、优化器和其他组件。

参数高效的微调

训练语言模型是一项计算密集型任务。对于完整的 LLM 微调,您不仅需要内存来存储模型,还需要训练过程所需的参数。您的计算机可能能够处理模型权重,但在训练过程中分配内存以优化状态、梯度和前向激活是一项具有挑战性的任务。简单的硬件无法处理如此多的障碍。这就是 PEFT 至关重要的地方。虽然完整的 LLM 微调会在监督学习过程中更新每个模型的权重,但 PEFT 方法只更新一小部分参数。这种迁移学习技术选择特定的模型组件并 “冻结” 其余参数。结果是逻辑上具有比原始模型少得多的参数(在某些情况下,只有原始权重的 15-20%;LoRA 可以将可训练参数的数量减少 10,000 倍)。这使得内存需求更易于管理。不仅如此,PEFT 还在处理灾难性的遗忘问题。由于它没有触及原始 LLM,因此模型不会忘记之前学习的信息。完全微调会为您训练的每个任务生成新版本的模型。它们中的每一个都与原始模型的大小相同,因此,如果您针对多个任务进行微调,则可能会产生代价高昂的存储问题。

其他类型的微调

让我们学习更多类型的学习:

迁移学习:迁移学习是指采用在通用的海量数据集上学习的模型,并在不同的、特定于任务的数据上对其进行训练。此数据集可能包含与该域相关的标记示例。当没有足够的数据或没有时间训练数据时,使用迁移学习;它的主要优点是训练后提供了更高的学习率和准确性。您可以使用基于大量数据进行预训练的现有 LLM,例如 GPT 3/4 和 BERT,并根据自己的使用案例对其进行自定义。

特定于任务的微调:特定于任务的微调是一种使用专为特定任务或域设计的数据集对预先训练的模型进行微调的方法。与迁移学习相比,此方法需要更多的数据和时间,但可以在特定任务上获得更高的性能。

例如,使用该任务的示例数据集进行翻译。有趣的是,使用相对较少的示例可以获得良好的结果。通常,与模型在预训练阶段看到的数十亿条文本相比,只需几百或几千个示例就可以产生良好的性能。但是,对单个任务进行微调存在潜在的缺点。这个过程可能会导致一种称为灾难性遗忘的现象。

灾难性遗忘的发生是因为完整的微调过程修改了原始 LLM 的权重。虽然这会在单个微调任务上带来出色的性能,但可能会降低其他任务的性能。例如,虽然微调可以提高模型执行某些自然语言处理 (NLP) 任务(如情感分析)的能力并导致质量完成,但模型可能会忘记如何执行其他任务。这个模型知道如何在微调正确识别之前进行命名实体识别。

多任务学习:多任务微调是单任务微调的扩展,其中训练数据集由多个任务的示例输入和输出组成。在这里,数据集包含指示模型执行各种任务的示例,包括摘要、评论评级、代码翻译和实体识别。您可以在此混合数据集上训练模型,以便它可以同时提高模型在所有任务上的性能,从而避免灾难性遗忘问题。在许多训练时期中,计算出的样本损失用于更新模型的权重,从而产生一个经过微调的模型,它知道如何同时擅长许多不同的任务。多任务微调模型的一个缺点是它们需要大量数据。您的训练集中可能需要多达 50-100,000 个示例。但是,收集这些数据确实是值得的,并且值得付出努力。生成的模型通常功能非常强大,适合在许多任务中需要良好性能的情况使用。

顺序微调:顺序微调是指在几个相关任务上按顺序调整预训练模型。在初始转移到通用域后,可能会对更具体的子集对 LLM 进行微调。例如,它可以从一般语言微调为医学语言,然后从医学语言微调为儿科心脏病学。

请注意,还有其他微调示例 – adaptive、behavioral 和 instruction,以及大型语言模型的增强微调。这些涵盖了训练语言模型的一些重要特定情况。

微调方法现在也被广泛适用于小型语言模型 (SLM),这已成为 2024 年 GenAI 最大的趋势之一。微调小型语言模型实际上更方便、更容易实现,特别是如果您是小型企业或希望提高模型性能的开发人员。

检索增强生成 (RAG)

检索增强生成 (RAG) 是众所周知的微调替代方案,是自然语言生成和信息检索的组合。RAG 确保语言模型以外部最新知识来源/相关文档为基础,并提供来源。这种技术弥合了通用模型的大量知识与对具有丰富上下文的精确、最新信息的需求之间的差距。因此,RAG 是事实可以随着时间的推移而发展的情况的基本技术。Grok 是 xAI 的最新发明,它使用 RAG 技术来确保其信息是最新的。

RAG 相对于微调的一个优势是信息管理。传统的微调将数据嵌入到模型的架构中,本质上是 “硬写” 知识,这阻止了轻松的修改。另一方面,RAG 允许持续更新训练数据,并允许删除/修订数据,确保模型保持最新和准确。

在语言模型的上下文中,RAG 和微调通常被视为相互竞争的方法。然而,它们的组合使用可以显著提高性能。特别是,微调可以应用于 RAG 系统,以识别和改进其较弱的组件,帮助它们在特定的 LLM 任务中表现出色。

微调最佳实践

明确定义您的任务:

定义任务是微调大型语言模型过程中的基础步骤。明确定义的任务提供重点和方向。它确保模型的巨大功能用于实现特定目标,为性能测量设定明确的基准。

选择并使用正确的预训练模型:

使用预先训练的模型来微调大型语言模型至关重要,因为它利用了从大量数据中获得的知识,确保模型不会从头开始学习。这种方法既高效又省时。此外,预训练可以捕获一般语言理解,允许微调以专注于特定于领域的细微差别,从而在专业任务中提高模型性能。

虽然利用预先训练的模型提供了一个强大的起点,但模型架构的选择(包括专家混合 (MoE) 和代币混合 (MoT) 等高级策略)对于更有效地定制模型至关重要。这些策略可以显著影响模型处理专业任务和处理语言数据的方式。

设置超参数:

超参数是在模型训练过程中起关键作用的可调变量。学习率、批量大小、纪元数、权重衰减和其他参数是需要调整的关键超参数,用于为您的任务找到最佳配置。

评估模型性能:

微调完成后,将在测试集上评估模型的性能。这提供了对模型在看不见的数据上的预期表现的公正评估。如果模型仍有改进的潜力,还可以考虑迭代优化模型。

您的企业为什么或何时需要微调模型?

我们知道 Chat GPT 和其他语言模型可以回答大量问题。但问题是,个人和公司希望为他们的私人和专有数据获得自己的 LLM 接口。这就是科技城的新热点话题——面向企业的大型语言模型。

以下是您可能需要 LLM 微调的几个原因。

1. 特异性和相关性:虽然 LLM 接受过大量数据的训练,但他们可能不熟悉与特定业务或行业相关的特定术语、细微差别或背景。微调可确保模型理解并生成与业务高度相关的内容。

2. 提高准确性:对于关键业务功能,容错的余地很小。微调特定于业务的数据有助于实现更高的准确性水平,确保模型的输出与预期紧密一致。

3. 自定义交互:如果您使用 LLM 进行客户交互,例如聊天机器人,微调有助于定制响应以匹配您品牌的声音、语气和指南。这确保了一致的品牌用户体验。

4. 数据隐私和安全:一般的 LLM 可能会根据公开可用的数据生成输出。微调允许企业控制模型所接触的数据,确保生成的内容不会无意中泄露敏感信息。

5. 解决罕见的情况:每个企业都会遇到特定于其领域的罕见但至关重要的情况。通用的 LLM 可能无法以最佳方式处理此类情况。微调可确保有效地满足这些边缘情况。

虽然 LLM 提供了广泛的功能,但微调可以提高这些功能,以适应业务需求的独特轮廓,从而确保最佳性能和结果。

微调还是不微调?

有时,微调并不是最佳选择。这是一张来自 #OpenAIDevDay 的图片 – 对 140k 内部 Slack 消息进行微调。

用户:“写一篇 500 字的关于提示工程的博文”

助理:“好的,我早上会做这个的。

用户:“Write it now”

助理:“确定”

关键要点

LLM 微调已成为企业 LLM 要求中增强其运营流程不可或缺的工具。虽然 LLM 的基础培训提供了对语言的广泛理解,但正是微调过程将这些模型塑造成能够理解利基主题并提供更精确结果的专用工具。通过针对特定任务、行业或数据集训练 LLM,我们正在突破这些模型可以实现的界限,并确保它们在不断发展的数字环境中保持相关性和价值。展望未来,LLM 的持续探索和创新以及正确的 GenAI 微调工具无疑将为更智能、更高效和上下文感知的 AI 系统铺平道路。

分享你的喜爱

通讯更新

请输入您的电子邮件地址进行订阅

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注