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

什么是预配的吞吐量?

借助预配的吞吐量功能,可以指定部署中所需的吞吐量。 然后该服务会分配必要的模型处理容量,并确保随时可用。 吞吐量是根据预配的吞吐量单位 (PTU) 定义的,是表示部署吞吐量的规范化方式。 每个模型版本对需要不同的 PTU 量来部署,并提供不同的每 PTU 吞吐量。

预配的部署类型提供哪些内容?

  • 可预测的性能:适用于统一工作负载的稳定最大延迟和吞吐量。
  • 预留处理容量:部署会配置吞吐量。 部署后,无论是否使用,都可以使用吞吐量。
  • 成本节省:与基于令牌的消耗相比,高吞吐量工作负载可能节省成本。

Azure OpenAI 部署是特定 OpenAI 模型的管理单元。 部署会向客户提供模型访问权限以进行推理,并集成内容审查等更多功能(请参阅内容审查文档)。

注意

预配吞吐量单位 (PTU) 配额不同于 Azure OpenAI 中的标准配额,并且默认情况下不可用。 要了解有关此产品/服务的详细信息,请与 Microsoft 帐户团队联系。

结果如何?

主题 已预配
这是什么? 提供增量小于现有预配套餐的保证吞吐量。 对于给定的模型版本,部署具有一致的最大延迟。
适用对象是哪些人? 希望保证吞吐量且延迟差异最小的客户。
配额 给定模型的预配托管吞吐量单位。
延迟 模型的存在限制的最大延迟。 总体延迟是调用形状的一个因素。
利用率 Azure Monitor 中提供的预配托管利用率度量值。
估计大小 工作室和基准测试脚本中提供的计算器。

如何访问预配项?

需要与 Microsoft 销售/帐户团队交谈才能获取预配的吞吐量。 如果目前没有销售/帐户团队,则无法购买预配的吞吐量。

哪些模型和区域可用于预配的吞吐量?

区域 gpt-40613 gpt-41106-Preview gpt-40125-Preview gpt-4-32k0613 gpt-35-turbo1106 gpt-35-turbo0125
australiaeast
巴西南部 - -
canadacentral - - -
canadaeast - - -
eastus
eastus2
francecentral -
germanywestcentral -
日本东部 - - -
koreacentral - - -
northcentralus
norwayeast - - -
波兰中部
southafricanorth - -
southcentralus
southindia
瑞典中部
瑞士北部
switzerlandwest - - - - -
uksouth
westus
westus3

关键概念

预配吞吐量单位

预配吞吐量单位 (PTU) 是可以预留和部署的模型处理容量单位,用于处理提示和生成完成。 与每个单元关联的最小 PTU 部署、增量和处理容量因模型类型和版本而异。

部署类型

在 Azure OpenAI 中部署模型时,需要将 sku-name 设置为“预配托管”。 sku-capacity 指定为部署分配的 PTU 数。

az cognitiveservices account deployment create \
--name <myResourceName> \
--resource-group  <myResourceGroupName> \
--deployment-name MyDeployment \
--model-name gpt-4 \
--model-version 0613  \
--model-format OpenAI \
--sku-capacity 100 \
--sku-name ProvisionedManaged 

配额

预配吞吐量配额表示可以部署的特定总吞吐量。 Azure OpenAI 服务中的配额在订阅级别进行管理。 订阅中的所有 Azure OpenAI 资源共享此配额。

配额在预配的吞吐量单位中指定,特定于(部署类型、模型、区域)三元组。 配额是不可互换的。 这意味着不能使用 GPT-4 配额来部署 GPT-3.5-Turbo。

虽然我们会尽一切努力确保配额可部署,但配额不确保基础容量足量提供。 服务在部署操作期间分配容量,如果容量不可用,则部署会失败并显示容量不足错误。

确定工作负载所需的 PTU 数

PTU 表示模型处理容量。 与计算机或数据库类似,对模型的不同工作负载或请求将消耗不同的基础处理容量。 从调用形状特征(提示大小、生成大小和调用速率)到 PTU 的转换是复杂且非线性的。 若要简化此过程,可以使用 Azure OpenAI 容量计算器来调整特定工作负载形状的大小。

一些笼统的注意事项:

  • 生成比提示需要更多的容量
  • 越大的调用计算起来越昂贵。 例如,100 个具有 1000 标记提示大小的调用所需的容量小于提示中具有 100,000 个标记的 1 个调用。 这也意味着这些调用形状的分布对于整体吞吐量来说很重要。 平均提示和补全标记大小相同的情况下,分布广泛的流量模式(包含一些非常大的调用)可能比分布较窄的模式经历更低的每 PTU 吞吐量。

使用率性能的工作原理

预配的部署提供分配的模型处理容量,用于运行给定的模型。

在预配托管部署中,当超过容量时,API 将立即返回 429 HTTP 状态错误。 这样,用户便能够决定如何管理其流量。 用户可以将请求重定向到单独的部署、标准即用即付实例,或利用重试策略来管理给定的请求。 服务将持续返回 429 HTTP 状态代码,直到使用率下降到 100% 以下。

如何监视容量?

Azure Monitor 中的预配托管使用率 V2 指标以 1 分钟的增量度量给定的部署使用率。 预配托管部署经过优化,可确保使用一致的模型处理时间处理接受的调用(实际的端到端延迟取决于调用的特征)。

收到 429 响应时该怎么办?

429 响应不是错误,而是一个设计,旨在告知用户给定的部署在某个时间点被充分利用。 通过提供快速故障响应,可以控制如何以最符合应用程序要求的方式处理这些情况。

响应中的 retry-after-msretry-after 标头指示下一次调用接受前等待的时间。 选择如何处理此响应取决于应用程序要求。 下面是一些注意事项:

  • 可考虑将流量重定向到其他模型、部署或体验。 此选项是最低延迟的解决方案,因为只要收到 429 信号,就可以立即执行该操作。 有关如何有效实现此模式的想法,请参阅此社区帖子
  • 如果可以接受更长的每次调用延迟,可实现客户端重试逻辑。 此选项提供每个 PTU 的最大吞吐量。 Azure OpenAI 客户端库包含用于处理重试的内置功能。

服务如何决定何时发送 429?

在预配托管产品/服务中,每个请求都根据其提示大小、预期生成大小和模型单独进行评估,以确定其预期使用率。 这与即用即付部署形成鲜明对比,即用即付部署具有基于估计流量负载的自定义速率限制行为。 对于即用即付部署,这可能会导致在超出定义的配额值之前生成 HTTP 429(如果流量分布不均匀)。

对于预配托管,我们通过使用漏桶算法的变体,将使用率保持在 100% 以下,同时允许出现一些流量突发。 宏观层面的逻辑如下:

  1. 每个客户都有可在部署中利用的容量且是固定的

  2. 发出请求时:

    a. 当前利用率超过 100% 时,服务会返回一个 429 代码,其 retry-after-ms 标头设置为 100%,并一直持续到利用率低于 100% 为止

    b. 其他情况下,服务会结合提示令牌和调用中的指定 max_tokens 来估计满足请求所需的利用率的增量更改。 如果未指定 max_tokens 参数,则服务将估计一个值。 当实际生成的令牌数量较少时,此估计可能会导致并发低于预期。 为实现最高的并发,请确保 max_tokens 值尽可能接近实际生成大小。

  3. 请求完成后,我们现在可知调用的实际计算成本。 为了确保计帐准确,我们使用以下逻辑更正利用率:

    a. 如果估计了实际 >,则向部署的利用率 b 添加差值。 如果估计了实际 <,则减去差值。

  4. 总体利用率根据部署的 PTU 数以连续速率递减。

注意

在利用率达到 100% 之前会接受调用。 在短时间内,可能会允许超过 100% 的突发,但随着时间的推移,流量上限为 100%。

示意图显示了如何将后续调用添加到利用率。

在部署中可以进行多少次并发调用?

可以达到的并发调用数量取决于每个调用的形状(提示大小、max_token 参数等)。 服务会持续接受调用,直到利用率达到 100%。 若要确定并发调用的大致数量,可以在容量计算器中为特定调用形状模拟出每分钟的最大请求数。 如果系统生成的令牌数量少于采样令牌数量(例如 max_token),则会接受更多请求。

后续步骤