你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
使用 Azure AI Foundry 微调模型
重要
本文中标记了“(预览版)”的项目目前为公共预览版。 此预览版未提供服务级别协议,不建议将其用于生产工作负载。 某些功能可能不受支持或者受限。 有关详细信息,请参阅 Microsoft Azure 预览版补充使用条款。
微调是指通过在特定任务或新数据集上进行额外训练来自定义预训练的生成式 AI 模型,以提高性能、获得新技能或提高准确性。 结果是一个新的、自定义的 GenAI 模型,它根据所提供的示例进行优化。
考虑对 GenAI 模型进行微调以:
- 缩放并适应特定的企业需求
- 减少误报,因为自定义的模型不太可能产生不准确或不相关的响应
- 提高模型针对特定领域任务的准确性
- 通过更快、更精确的结果节省时间和资源
- 由于模型针对特定用例进行了微调,可获得更相关且具有上下文感知的结果
Azure AI Foundry 提供了来自多个模型提供商的若干模型,使你能够获取市场上更新、更强大的模型。 你可以通过使用“微调任务”筛选器并选择模型卡片来了解每个模型的详细信息,从而在我们的模型目录中发现支持微调的模型。 特定模型可能受到区域限制,查看此列表以了解更多详细信息。
本文将带你了解微调的用例,以及这如何在你的 GenAI 之旅中对你有所帮助。
微调入门
在开启生成式 AI 之旅时,我们建议你从提示工程和 RAG 入手,以便熟悉基础模型及其功能。
- 提示工程是一种涉及使用语气和风格详细信息、示例响应以及意图映射来为自然语言处理模型设计提示的技术。 此过程可提高响应的准确度和相关性,从而优化模型的性能。
- 检索增强生成 (RAG) 通过检索外部源中的数据并将其整合为提示,来提升 LLM 的性能。 RAG 可帮助企业实现自定义解决方案,同时保持数据相关性并优化成本。
当你逐渐上手并开始构建解决方案时,了解提示工程的不足之处很重要,这将有助于你确定是否应该尝试微调。
- 基础模型是否无法处理边缘案例或出现异常?
- 基础模型是否未能始终如一地以正确格式提供输出?
- 是否很难在上下文窗口中放入足够多的示例来引导模型?
- 是否存在高延迟?
基础模型和提示工程失败的示例可以帮助你确定为微调而收集的数据,并建立一个性能基线,以便你能够对照该基线评估和比较微调后的模型。 获得在没有微调的情况下的性能基线是了解微调是否能够带来更强的模型性能的关键。
下面是一个示例:
某个客户想要使用 GPT-3.5-Turbo 将自然语言问题转换成使用特定的非标准查询语言表示的查询。 该客户在提示中提供指导(“始终返回 GQL”)并使用 RAG 检索数据库架构。 但是,语法有时会出现错误,并且在处理边缘案例时经常失败。 该客户收集了数千个自然语言问题和数据库的等效查询示例,包括之前模型失败的案例。 然后,该客户使用该数据来微调模型。 将经过微调的新模型与经过工程提示和检索的模型结合,让模型输出的准确度提升到了可接受的使用标准。
用例
基础模型已对大量数据进行了预先训练,大多数时候,你将向提示添加说明和示例以获取要查找的高质量响应 - 此过程称为“少样本学习”。 微调支持使用更多示例来训练模型,这些示例可根据你的特定用例进行自定义,从而对少样本学习进行改进。 这可以减少提示中的令牌数,从而节省成本并降低请求延迟。
将自然语言转换为查询语言只是一个用例,在这个用例中,你可以展示而非告知模型该如何运行。 下面是一些其他用例:
- 提高模型对检索到的数据的处理能力
- 引导模型以特定的风格、语气或格式输出内容
- 提高查找信息时的准确性
- 缩短提示的长度
- 教授新技能(即自然语言到代码的转换)
如果发现你的主要动因是代价,则请三思而后行。 微调可能通过缩短提示或让你使用更小的模型来降低某些用例的成本。 但是,前期训练成本可能较高,并且你必须为托管自己的自定义模型付费。
微调模型的步骤
下面是微调模型的一般步骤:
- 根据用例,选择支持你的任务的模型
- 准备并上传训练数据
- (可选)准备和上传验证数据
- (可选)配置任务参数
- 训练模型。
- 完成后,查看指标并评估模型。 如果结果不符合基准,请返回到步骤 2。
- 使用你微调过的模型
需要特别指出的是,微调在很大程度上取决于你所能提供的数据质量。 最佳做法是提供数百甚至数千个训练示例以获得成功并得到期望的结果。
支持微调的模型
现在,你已了解何时为用例使用微调,接下来可以前往 Azure AI Foundry 查找可用于微调的模型。 对于模型目录中的某些模型,可以使用无服务器 API 或托管计算(预览版)或两者进行微调。
对于通过无服务器 API 部署的某些模型,微调功能在特定的 Azure 区域中可用。 要对这类模型进行微调,用户必须在模型可供微调的区域拥有一个中心/项目。 有关详细信息,请参阅无服务器 API 终结点中模型的区域可用性。
有关使用托管计算进行微调的详细信息(预览版),请参阅使用托管计算(预览版)微调模型。
有关可用于微调的 Azure OpenAI 模型的详细信息,请参阅本指南后面的 Azure OpenAI 服务模型文档或 Azure OpenAI 模型表。
对于可进行微调的 Azure OpenAI 服务模型,支持微调的区域包括美国中北部、瑞典中部等等。
微调 Azure OpenAI 模型
注意
gpt-35-turbo
- 此模型的微调仅限于一小部分区域,并且基础模型在可用的每个区域中都不可用。
如果在 Azure AI Foundry 项目内部(而不是在某个项目外部)使用 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 月 |
gpt-4o-mini (2024-07-18) |
美国中北部 瑞典中部 |
输入:128,000 输出:16,384 训练示例上下文长度:64,536 |
2023 年 10 月 |
gpt-4o (2024-08-06) |
美国东部 2 美国中北部 瑞典中部 |
输入:128,000 输出:16,384 训练示例上下文长度:64,536 |
2023 年 10 月 |
1 GPT-4 目前为公共预览版。