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

管理 Azure OpenAI 服务配额

配额使你可以灵活、主动地管理订阅中不同部署的速率上限的分配。 本文逐步讲解管理 Azure OpenAI 配额的过程。

先决条件

重要

查看配额和部署模型需要“认知服务使用情况读取者”角色。 此角色提供查看 Azure 订阅中的配额使用情况所需的最小访问权限。 若要详细了解此角色以及访问 Azure OpenAI 所需的其他角色,请参阅 Azure 基于角色的访问 (Azure RBAC) 指南

可以在 Azure 门户中的“订阅”>“访问控制(IAM)”>“添加角色分配”>“搜索认知服务使用情况读取者”下找到此角色。此角色必须在订阅级别应用,它在资源级别不存在。

如果不希望使用此角色,可以使用订阅“读取者”角色,该角色会提供等效的访问权限,但也会授予读取访问权限,该读取访问权限超出查看配额和模型部署所需的访问权限的范围。

配额简介

Azure OpenAI 的配额功能允许为部署分配速率上限,最多可达到全局上限,即所谓的“配额”。 配额按区域、模型分配给你的订阅,单位为每分钟标记数 (TPM)。 将订阅加入 Azure OpenAI 时,你将收到大多数可用模型的默认配额。 然后,你在创建每个部署时将 TPM 分配给它们,模型的可用配额将随之减少该数量。 你可以继续创建部署并为其分配 TPM,直到达到配额上限。 一旦达到上限,只能通过减少分配给同一模型的其他部署的 TPM(从而释放可用的 TPM)来创建新部署,或者请求在所需区域中增加模型配额并获得批准。

注意

对于美国东部、配额为 240,000 TPM 的 GPT-35-Turbo,客户可以创建一个 240K TPM 的部署、每个 120K TPM 的两个部署,或者一个或多个 Azure OpenAI 资源中的任意数量的部署,只要它们在该区域中 TPM 总计少于 240K。

创建部署时,分配的 TPM 将直接映射到对其推理请求强制执行的每分钟标记数的速率上限。 还将强制实施每分钟请求数 (RPM) 速率上限,其值使用以下比率按比例设置为 TPM 分配:

每 1000 TPM 为 6 RPM。

在订阅和区域内全局分配 TPM 的灵活性使 Azure OpenAI 服务能够放宽其他限制:

  • 每个区域的最大资源数增加到 30。
  • 移除了在一个资源中只能为同一模型创建一个部署的限制。

分配配额

创建模型部署时,可以选择将每分钟标记数 (TPM) 分配给该部署。 TPM 可以按 1,000 为增量进行修改,它会映射到部署中强制执行的 TPM 和 RPM 速率上限,如上所述。

若要在 Azure AI Studio 中创建新部署,请在“管理”下选择“部署”>“创建新部署”。

设置 TPM 的选项位于“高级选项”下拉列表之下:

Screenshot of the deployment UI of Azure AI Studio

部署后,可以通过选择 Azure AI Studio 中“管理”>“部署”下的“编辑部署”来调整 TPM 分配。 还可以在“管理”>“配额”下的新配额管理体验中修改此选择。

重要

配额和上限可能会更改,为获取最新信息,请参阅配额和上限一文

特定于模型的设置

不同的模型部署(也称为模型类)具有你现在可以控制的唯一最大 TPM 值。 这表示给定区域中可分配给该类型的模型部署的最大 TPM 量。 虽然每个模型类型都有自己的唯一模型类,但目前只有某些模型类的最大 TPM 值是不同的:

  • GPT-4
  • GPT-4-32K
  • Text-Davinci-003

所有其他模型类都有通用的最大 TPM 值。

注意

配额“每分钟标记数 (TPM)”的分配与模型的最大输入标记上限无关。 模型输入标记限制在模型表中定义,不受对 TPM 所做的更改的影响。

查看和请求配额

对于给定区域中跨部署的配额分配的全视图,请选择 Azure AI Studio 中的“管理”>“配额”:

Screenshot of the quota UI of Azure AI Studio

  • 配额名称:每个模型类型在每个区域都有一个配额值。 该配额涵盖该模型的所有版本。 可以在 UI 中扩展配额名称,以显示使用该配额的部署。
  • 部署:按模型类划分的模型部署。
  • 用量/上限:对于配额名称,它显示部署使用的配额量以及此订阅和区域受批准的总配额。 此使用的配额量也显示在条形图中。
  • 请求配额:此字段中的图标会导航到可以提交增加配额请求的表单。

迁移现有部署

在过渡到新的配额系统和基于 TPM 的分配方式的过程中,所有现有的 Azure OpenAI 模型部署都已自动迁移为使用配额。 如果由于以前的自定义速率上限增加,现有 TPM/RPM 分配超出了默认值,则会将等效的 TPM 分配给受影响的部署。

了解速率上限

将 TPM 分配给部署后,将为部署设置每分钟标记数 (TPM) 和每分钟请求数 (RPM) 的速率上限,如上所述。 TPM 速率上限基于在收到请求时,请求估计可处理的最大标记数。 它与用于计费的标记数不同,后者是在完成所有处理后计算的。

收到每个请求时,Azure OpenAI 会计算估计的最大标记处理数,其中包括:

  • 提示文本和计数
  • max_tokens 参数设置
  • best_of 参数设置

当请求进入部署终结点时,估计的最大标记处理数将添加到每分钟重置的所有请求的运行标记数。 如果在该分钟内的任何时间点达到了 TPM 速率上限值,则后续的请求将收到 429 响应代码,直到计数器重置。

RPM 速率上限基于一段时间内收到的请求数。 速率上限要求请求在一分钟的时间内均匀分布。 如果无法维持此平均流量,那么即使在一分钟的时间内没有达到上限,请求也可能会收到 429 响应。 为了实现此行为,Azure OpenAI 服务会在一小段时间内(通常为 1 或 10 秒)评估传入请求的速率。 如果在此期间收到的请求数超出了设置的 RPM 上限的预期,则新请求将收到 429 响应代码,直到下一个评估期。 例如,如果 Azure OpenAI 按 1 秒的间隔监视请求速率,则在 600 RPM 的部署中,如果在每 1 秒期间收到 10 个以上的请求,则会达到速率上限(每分钟 600 个请求 = 每秒 10 个请求)。

速率上限最佳做法

若要最大程度地减少与速率上限相关的问题,可以遵循以下方法:

  • 将 max_tokens 和 best_of 设置为满足方案需求的最小值。 例如,如果预计你的响应较小,请勿设置较大的 max-tokens 值。
  • 通过配额管理来增加高流量部署的 TPM,并减少需求有限的部署的 TPM。
  • 在应用程序中实现重试逻辑
  • 避免工作负载的急剧变化。 逐步增大工作负载。
  • 测试不同负载增加模式。

自动进行部署

本部分包含简短的示例模板,可帮助你开始以编程方式创建那些使用配额设置 TPM 速率限制的部署。 引入配额后,必须使用 API 版本 2023-05-01 进行与资源管理相关的活动。 此 API 版本仅用于管理资源,不会影响用于补全、聊天补全、嵌入、图像生成等推理调用的 API 版本。

部署

PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{accountName}/deployments/{deploymentName}?api-version=2023-05-01

路径参数

参数 类型 必需? 说明
accountName 字符串 必需 Azure OpenAI 资源的名称。
deploymentName 字符串 必需 你在部署现有模型时选择的部署名称,或者你希望新模型部署具有的名称。
resourceGroupName 字符串 必需 此模型部署的关联资源组的名称。
subscriptionId 字符串 必需 关联订阅的订阅 ID。
api-version 字符串 必需 要用于此操作的 API 版本。 它遵循 YYYY-MM-DD 格式。

支持的版本

请求正文

这只是可用的请求正文参数的一个子集。 如需参数的完整列表,可以参考 REST API 参考文档

参数 类型 描述
sku Sku 表示 SKU 的资源模型定义。
容量 整型 这表示你要分配给此部署的配额量。 值为 1 相当于每分钟 1000 个标记 (TPM)。 值为 10 相当于每分钟 10000 个标记 (TPM)。

示例请求

curl -X PUT https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/resource-group-temp/providers/Microsoft.CognitiveServices/accounts/docs-openai-test-001/deployments/gpt-35-turbo-test-deployment?api-version=2023-05-01 \
  -H "Content-Type: application/json" \
  -H 'Authorization: Bearer YOUR_AUTH_TOKEN' \
  -d '{"sku":{"name":"Standard","capacity":10},"properties": {"model": {"format": "OpenAI","name": "gpt-35-turbo","version": "0613"}}}'

注意

可通过多种方式生成授权令牌。 初始测试的最简单方法是从 Azure 门户启动 Cloud Shell。 然后运行 az account get-access-token。 可以将此令牌用作 API 测试的临时授权令牌。

有关详细信息,请参阅 REST API 参考文档,了解使用情况部署

使用情况

查询特定订阅在给定区域中的配额使用情况

GET https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.CognitiveServices/locations/{location}/usages?api-version=2023-05-01

路径参数

参数 类型 必需? 说明
subscriptionId 字符串 必需 关联订阅的订阅 ID。
location 字符串 必须 可查看使用情况的位置,例如 eastus
api-version string 必需 要用于此操作的 API 版本。 它遵循 YYYY-MM-DD 格式。

支持的版本

示例请求

curl -X GET https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.CognitiveServices/locations/eastus/usages?api-version=2023-05-01 \
  -H "Content-Type: application/json" \
  -H 'Authorization: Bearer YOUR_AUTH_TOKEN' 

资源的删除

尝试从 Azure 门户删除 Azure OpenAI 资源时,如果仍然存在部署,则系统会阻止该删除,直到你删除关联的部署为止。 先删除部署可以正确释放配额分配,以便将其用于新的部署。

但是,如果使用 REST API 或其他编程方法来删除资源,则无需先删除部署。 发生这种情况时,关联的配额分配将在 48 小时内无法分配给新部署,直到资源被清除为止。 若要为已删除的资源触发即时清除以释放配额,请按照有关如何清除已删除资源的说明进行操作。

后续步骤

  • 若要查看 Azure OpenAI 的配额默认值,请参阅配额和上限一文