你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
在 Azure AI Studio 中微调模型
重要
本文介绍的某些功能可能仅在预览版中提供。 此预览版未提供服务级别协议,不建议将其用于生产工作负载。 某些功能可能不受支持或者受限。 有关详细信息,请参阅 Microsoft Azure 预览版补充使用条款。
微调使用示例数据重新训练现有的大型语言模型 (LLM)。 结果是针对提供的示例进行优化的新自定义 LLM。
本文可帮助你确定微调是否是适合你用例的解决方案。 本文还将介绍 Azure AI Studio 如何支持微调需求。
在本文中,微调是指监督式微调,而不是持续预先训练或通过人类反馈的强化学习 (RLHF)。 监督式微调是基于特定数据集重新训练已预先训练的模型的过程。 其目的通常是为了根据特定的任务提高模型性能,或者引入最初训练基础模型时无法很好表达的信息。
微调入门
在确定微调是否是适合你用例的解决方案时,熟悉以下关键术语会很有帮助:
- 提示工程是一项涉及为自然语言处理模型设计提示的技术。 此过程可提高响应的准确度和相关性,从而优化模型的性能。
- 检索增强生成 (RAG) 通过检索外部源中的数据并将其整合为提示,来提升 LLM 的性能。 RAG 可帮助企业实现自定义解决方案,同时保持数据相关性并优化成本。
微调是一项先进的技术,需要专业知识才能使用得当。 以下问题可帮助你评估自己是否准备好进行微调,以及你对整个过程的思考周全程度。 可以使用这些问题来引导后续步骤或发现可能更适合采用的其他方法。
为什么要对模型进行微调?
如果满足以下条件,则你可能已做好微调的准备:
你可以清楚地表述出微调的具体用例,并确定希望进行微调的模型。
微调的典型用例包括引导模型输出特定的自定义风格、语调或格式的内容。 此外还包括引导模型所需的信息过长或过于复杂,以致提示窗口容纳不下的情况。
有明确的示例来说明自己在使用替代方法时解决了哪些挑战,以及已经测试过哪些可能的解决方案来提升性能。
已确定使用基础模型时的不足之处,例如在处理边缘案例时性能不稳定,无法在上下文窗口中放入足够多的样本提示以指导模型,或延迟过高。
如果有以下情况,则你可能尚未准备好进行微调:
- 对模型或数据源的知识储备不足。
- 无法找到为模型提供服务的正确数据。
- 没有明确的微调用例,或者除了“我想要优化模型”之外,讲不出更明确的理由。
如果发现你的主要动因是代价,则请三思而后行。 微调可能通过缩短提示或让你使用更小的模型来降低某些用例的成本。 但是,前期训练成本更高,并且你必须为托管自己的自定义模型付费。 有关 Azure OpenAI 服务中的微调成本的详细信息,请参阅定价页。
如果你要向模型添加领域外知识,应该先使用 Azure OpenAI 的基于数据或嵌入等功能尝试 RAG。 通常,根据用例和数据,使用 RAG 是成本更低、适应能力更强且可能更有效的做法。
替代方法有哪些不足之处?
了解提示工程有的不足之处应该可为微调工作提供指导。 基础模型是否无法处理边缘案例或出现异常? 基础模型是否无法始终在正确格式提供输出,并且你无法在上下文窗口中放入足够的示例来修复此问题?
基础模型和提示工程的失败示例将会帮助你发现它们需要收集进行微调的数据,以及你应当如何评估经过微调的模型。
这里有一个示例:某个客户想要使用 GPT-3.5-Turbo 将自然语言问题转换成使用特定的非标准查询语言表示的查询。 该客户在提示中提供指导(“始终返回 GQL”)并使用 RAG 检索数据库架构。 但是,语法有时会出现错误,并且在处理边缘案例时经常失败。 该客户收集了数千个自然语言问题和数据库的等效查询示例,包括之前模型失败的案例。 然后,该客户使用该数据来微调模型。 将经过微调的新模型与经过工程提示和检索的模型结合,让模型输出的准确度提升到了可接受的使用标准。
你目前尝试过哪些方法?
微调是一项高级功能,并不是生成式 AI 之旅的起点。 你应该已熟悉有关使用 LLM 的基础知识。 你应该首先利用提示工程和/或 RAG 评估基础模型的性能,以获得性能基线。
获得在没有微调的情况下的性能基线是了解微调是否能够带来更强的模型性能的关键。 使用错误数据进行微调会让基础模型变得更差,但如果没有基准则很难检测到回归。
如果满足以下条件,则你可能已做好微调的准备:
- 你可以拿出证据并了解提示工程和基于 RAG 的方法。
- 除了微调以外,你还可以分享为用例尝试过的其他技术手段的具体经验和挑战。
- 你尽可能地对基线性能进行了定量评估。
如果有以下情况,则你可能尚未准备好进行微调:
- 你尚未测试任何其他技术。
- 你对于如何将微调具体运用于 LLM 的知识或理解不够。
- 你没有用于评估微调的基准度量值。
要使用哪些数据来进行微调?
即使拥有好的用例,微调的质量仅与能够提供的数据质量一样好。 你需要愿意投入时间和精力才能做好微调。 不同的模型需要不同的数据卷,但通常需要能够提供相当大量的高质量特选数据。
另一个重点是,如果数据不是微调所需的格式,则需要投入工程资源才能设置格式,即使是高质量的数据也是如此。 有关如何为微调准备数据的详细信息,请参阅微调文档。
如果满足以下条件,则你可能已做好微调的准备:
- 你已确定用于微调的数据集。
- 数据集采用适当的格式进行训练。
- 你已采用某种级别的策展来确保数据集质量。
如果有以下情况,则你可能尚未准备好进行微调:
- 你尚未确定数据集。
- 数据集格式与要微调的模型不匹配。
如何衡量经过微调的模型质量如何?
这个问题没有统一的正确答案,不过你应该对成功的微调制定清晰的目标。 理想情况下,这不应该只是一项质化工作。 它还应该包括衡量成功与否的量化度量值,例如利用维持数据集进行验证,以及比照基础模型对经过微调的模型进行用户验收测试或 A/B 测试。
Azure AI Studio 中支持微调的模型
现在,你已了解何时为用例使用微调,接下来可以前往 Azure AI Studio 查找可用于微调的模型。 以下部分介绍了可用模型。
Azure OpenAI 模型
Azure AI Studio 中的以下 Azure OpenAI 模型支持微调:
模型 ID | 微调区域 | 最大请求(令牌) | 训练数据(上限) |
---|---|---|---|
babbage-002 |
美国中北部 瑞典中部 瑞士西部 |
16,384 | 2021 年 9 月 |
davinci-002 |
美国中北部 瑞典中部 瑞士西部 |
16,384 | 2021 年 9 月 |
gpt-35-turbo (0613) |
美国东部 2 美国中北部 瑞典中部 瑞士西部 |
4,096 | 2021 年 9 月 |
gpt-35-turbo (1106) |
美国东部 2 美国中北部 瑞典中部 瑞士西部 |
输入:16,385 输出:4,096 |
2021 年 9 月 |
gpt-35-turbo (0125) |
美国东部 2 美国中北部 瑞典中部 瑞士西部 |
16,385 | 2021 年 9 月 |
gpt-4 (0613) 1 |
美国中北部 瑞典中部 |
8192 | 2021 年 9 月 |
1 GPT-4 微调目前以公共预览版提供。 有关详细信息,请参阅 GPT-4 微调安全评估指南。
若要微调 Azure OpenAI 模型,必须向项目添加一个具有支持区域的 Azure OpenAI 资源的连接。
Phi-3 系列模型
Azure AI Studio 支持对以下 Phi-3 系列模型进行微调:
Phi-3-mini-4k-instruct
Phi-3-mini-128k-instruct
Phi-3-medium-4k-instruct
Phi-3-medium-128k-instruct
位于美国东部 2 的项目当前支持对 Phi-3 模型进行微调。
Meta Llama 2 系列模型
Azure AI Studio 支持以下 Llama 2 系列模型进行微调:
Meta-Llama-2-70b
Meta-Llama-2-7b
Meta-Llama-2-13b
位于美国西部 3 的项目当前支持对 Llama 2 模型进行微调。
Meta Llama 3.1 系列模型
Azure AI Studio 支持对以下 Llama 3.1 系列模型进行微调:
Meta-Llama-3.1-70b-Instruct
Meta-Llama-3.1-8b-Instruct
位于美国西部 3 的项目当前支持对 Llama 3.1 模型进行微调。