你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

何时使用 Azure OpenAI 微调

在确定微调对于某个用例来说是否是合适的解决方案时,熟悉一些关键术语有助于更好地做出判断:

  • 提示工程是一项涉及为自然语言处理模型设计提示的技术。 此过程提高了响应的准确性和相关性,从而优化了模型的性能。
  • 检索增强生成 (RAG) 可通过检索外部源中的数据并将其整合为提示,来提升大型语言模型 (LLM) 的性能。 利用 RAG,企业可以实现自定义解决方案,同时保持数据相关性并优化成本。
  • 微调是指使用示例数据重新训练现有的大型语言模型,从而生成使用提供的示例经过优化的新的“自定义”大型语言模型。

什么是对 Azure OpenAI 进行微调?

当我们讨论微调时,其真正含义是监督微调不是持续预训练或基于人类反馈的强化学习 (RLHF)。 监督微调是指基于特定数据集对预先经过训练的模型进行再训练的过程,通常是为了模型执行特定任务时的性能,或是引入基础模型在最初接受训练时表达不充分的信息。

微调是一项先进的技术,需要专业知识才能使用得当。 以下问题将帮助你评估自己是否准备好进行微调,以及你对整个过程的思考周全程度。 可以使用这些来指导后续步骤或发现可能更适合采用的其他方法。

为什么要对模型进行微调?

  • 你应该要能够清楚地表述出微调的具体用例,并确定希望进行微调的模型
  • 好的微调用例包括引导模型输出特定的自定义样式、语气或格式的内容,或者需要引导模型输出的信息过长或过于复杂,提示窗口无法容纳得下的情况。

你可能尚未准备好进行微调的常见迹象:

  • 没有明确的微调用例,或者除了“我想要优化模型”,讲不出更明确的理由。
  • 如果发现你的主要动因是代价,则请三思而后行。 虽然微调可能通过缩短提示或让你使用更小的模型来降低某些用例的成本,但它的前期训练成本更高,并且必须为托管自己的自定义模型付费。 请参阅定价页,详细了解 Azure OpenAI 微调成本。
  • 如果要向模型添加域知识,应该先使用 Azure OpenAI 的基于数据嵌入等功能,先进行检索增强生成 (RAG)。 通常,根据用例和数据,这是成本更低、适应能力更强且可能更有效的做法。

你目前尝试过哪些方法?

微调是一项高级功能,并不是生成式 AI 之旅的起点。 你应该始终熟悉如何使用大型语言模型 (LLM) 的基础知识。 应该首先利用提示工程和/或检索增强生成 (RAG) 评估基础模型的性能,获得性能基准。

获得在没有微调的情况下的性能基准是了解微调是否能够带来更强的模型性能的关键。 使用错误数据进行微调会让基础模型变得更差,但如果没有基准则很难检测到回归。

如果已准备好进行微调:

  • 应该能够拿出证据并了解提示工程和基于 RAG 的方法。
  • 能够分享除了微调以外,已经为用例尝试过的其他技术手段的具体经验和挑战。
  • 需要尽可能对基准性能进行定量评估。

你可能尚未准备好进行微调的常见迹象:

  • 在还没有测试过任何其他技术手段的情况下,就开始进行微调。
  • 对于如何将微调具体运用于大型语言模型 (LLM) 的了解或理解不够。
  • 没有用于评估微调的基准度量值。

替代方法有哪些不足之处?

了解提示工程有的不足之处应该可为微调工作提供指导。 基础模型是否无法处理边缘案例或出现异常? 基础模型是否无法始终在正确格式提供输出,并且你无法在上下文窗口中放入足够的示例来修复此问题?

基础模型和提示工程的失败示例将会帮助你发现它们需要收集进行微调的数据,以及你应当如何评估经过微调的模型。

这里有一个示例:某个客户想要使用 GPT-3.5-Turbo 将自然语言问题转换成使用特定的非标准查询语言表示的查询。 此类查询在提示中提供指导(“始终返回 GQL”)并使用了 RAG 检索数据库架构。 但是,语法有时会出现错误,并且在处理边缘案例时经常失败。 它们收集了数千个自然语言问题和数据库的等效查询示例,包括之前模型失败的案例,并使用这些数据对模型进行微调。 将经过微调的新模型与经过工程提示和检索的模型结合,让模型输出的准确度提升到了可接受的使用标准。

如果已准备好进行微调:

  • 有明确的示例来说明自己在使用替代方法时遇到了哪些挑战,以及已经测试过哪些可能的解决方案来提升性能。
  • 已确定使用基础模型时的不足之处,例如在处理边缘案例时性能不稳定,无法在上下文窗口中放入足够多提示以指导模型,延迟过高等。

你可能尚未准备好进行微调的常见迹象:

  • 对模型或数据源的知识储备不足。
  • 无法找到为模型提供服务的正确数据。

要使用哪些数据来进行微调?

即使拥有好的用例,微调的质量仅与能够提供的数据质量一样好。 你需要愿意投入时间和精力才能做好微调。 不同的模型需要不同的数据卷,但通常需要能够提供相当大量的高质量精选数据。

另一个重点是,如果数据不是微调所需的格式,则需要投入工程资源,才能正确设置数据的格式,即使是高质量的数据也是如此。

数据 Babbage-002 和 Davinci-002 GPT-3.5-Turbo
音量 数千个示例 数千个示例
格式 提示/完成 对话式聊天

如果已准备好进行微调:

  • 已确定用于进行微调的数据集。
  • 数据集采用适当的格式进行训练。
  • 已采用某种级别的策展来确保数据集质量。

你可能尚未准备好进行微调的常见迹象:

  • 尚未确定数据集。
  • 数据集格式与要微调的模型不匹配。

如何衡量经过微调的模型质量如何?

这个问题没有统一的正确答案,不过你应该对成功的微调制定清晰的目标。 理想情况下,不应该只是定性,还应该包含衡量成功与否的定量指标,例如利用维持数据集进行验证,以及进行用户验收测试或 A/B 测试,比照基础模型来测试经过微调的模型表现如何。

后续步骤