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

在 Azure OpenAI 服务上使用预配部署入门

以下指南讲解使用 Azure OpenAI 服务资源创建预配部署的关键步骤。 有关此处讨论的概念的更多详细信息,请参阅:

先决条件

  • Azure 订阅 - 免费创建订阅
  • Azure 参与者或认知服务参与者角色
  • 访问 Azure OpenAI Studio

获取/验证 PTU 配额可用性。

预配的吞吐量部署的大小以“预配吞吐量单位”(PTU) 为单位。 PTU 配额在区域基础上授予订阅,并限制可在该区域的所有模型和版本中部署的 PTU 总数。

创建新部署需要可用(未使用的)配额才能满足所需的部署大小。 例如:如果某个订阅在美国中南部具有以下配置:

  • PTU 总配额 = 500 个 PTU
  • 部署:
    • 100 个 PTU:GPT-4o、2024-05-13
    • 100 个 PTU:GPT-4、0613

那么,会认为配额中的 200 个 PTU 已使用,有 300 个 PTU 可用于创建新部署。

默认的预配配额和全局预配配额量会分配给多个区域中的所有订阅。 可以通过访问 Azure OpenAI Studio 中的“配额”边栏选项卡并选择所需的订阅和区域,查看区域中可用的配额。 例如,下面的屏幕截图显示了所选订阅在美国西部的配额限制为 500 个 PTU。 请注意,你可能会看到较小的可用默认配额的值。

Azure OpenAI Studio 中可用配额的屏幕截图。

可以通过单击“使用情况/限值”列右侧的“请求配额”链接来请求其他配额。 (以上屏幕截图中未截取到该项)。

创建 Azure OpenAI 资源

预配部署和全局预配部署是通过 Azure 中的 Azure OpenAI 资源对象创建的。 要创建部署的每个区域中都必需有一个 Azure OpenAI 资源。 如果需要,请使用 Azure 门户在拥有可用配额的区域中创建资源

注意

Azure OpenAI 资源可以同时支持多种类型的 Azure OpenAI 部署。 不需要为预配部署或全局预配部署使用专用的新资源。

创建预配部署或全局预配部署 - 容量可用

验证配额后,可以创建部署。 若要创建预配的部署,可以按照以下步骤操作:描述的选项反映了屏幕截图中显示的条目。

预配部署的 Azure OpenAI Studio 部署页的屏幕截图。

  1. 登录到 Azure OpenAI Studio

  2. 选择为预配部署和全局预配部署启用的订阅,并在具有配额的区域中选择所需的资源。

  3. 在左侧导航中的管理下,选择部署

  4. 选择“创建新部署”并配置以下字段。 展开“高级选项”下拉列表菜单

  5. 在每个字段中填入值。 下面是一个示例:

字段 说明 示例
选择模型 选择要部署的特定模型。 GPT-4
型号版本 选择要部署的模型的版本。 0613
部署名称 部署名称在代码中使用,通过使用客户端库和 REST API 调用模型。 gpt-4
内容筛选器 指定要应用于部署的筛选策略。 详细了解我们的内容筛选操作方法。 默认值
部署类型 这会影响吞吐量和性能。 为部署选择“预配托管”或“全局预配托管” 预配托管
预配吞吐量单位 选择要包含在部署中的吞吐量。 100

需要注意的几个要点:

  • 部署对话框包含一个提醒,告知你可以为 Azure OpenAI Provisioned 购买 Azure OpenAI 预留,以获取长期使用承诺的大幅折扣。

输入部署设置后,单击“确认定价”继续。 如果选择按小时付费,则会显示部署的定价确认对话框,无需 Azure 预留即可提供期限折扣。

如果不确定成本,请取消部署,并在了解预配部署的付款模型和基础成本后继续。 此步骤可避免付款发票上出现意外的高费用。 自我教育的资源包括:

下图显示了你将看到的定价确认。 显示的价格只是一个示例。

显示定价确认屏幕的屏幕截图。

如果要以编程方式创建部署,可以使用以下 Azure CLI 命令执行此操作。 若要指定部署类型,请基于预期的部署类型将 sku-name 修改为 ProvisionedManagedGlobalProvisionedManaged。 使用所需的预配吞吐量单位数更新 sku-capacity

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

REST、ARM 模板、Bicep 和 Terraform 也可用于创建部署。 请参阅管理配额操作指南中的自动化部署部分,并将 sku.name 替换为“预配托管”或“全局预配托管”而不是“标准”。

创建预配部署或全局预配部署 - 容量不可用

由于容量可用性的动态特性,所选资源的区域可能没有服务容量来创建指定模型、版本和 PTU 数量的部署。

在这种情况下,Azure OpenAI Studio 会将你定向到具有可用配额和容量的其他区域,以创建所需模型的部署。 如果发生这种情况,部署对话框将如下所示:

预配部署的 Azure OpenAI Studio 部署页的屏幕截图,其中没有可用容量。

需要注意的事项:

  • 此时会显示一条消息,提示你在可用配额中有多少 PTU,以及当前可以部署多少 PTU。
  • 如果选择了多个 PTU 且其大小超出了服务容量,将显示一条消息,其中提供了获取更多容量的选项,以及一个用于选择备用区域的按钮。 单击“查看其他区域”按钮将显示一个对话框,其中显示了可创建部署的 Azure OpenAI 资源列表,以及可以根据每个区域中的可用配额和服务容量创建的最大部署大小。

用于选择其他资源和区域的 Azure OpenAI Studio 部署页的屏幕截图。

选择资源并单击“切换资源”将使部署对话框使用所选资源重新显示。 然后,可以继续在新区域中创建部署。

(可选)购买预留项

创建部署后,你可能希望通过 Azure 预留购买限期折扣。 对于在使用几天后打算继续使用部署的用户,Azure 预留可以提供按小时计费的大幅折扣。

有关购买模型和预留的详细信息,请参阅:

重要

模型部署的容量可用性是动态的,并且会在区域和模型间频繁变化。 若要防止购买比可以使用的 PTU 更多的预留,请先创建部署,然后购买 Azure 预留,以覆盖你已部署的 PTU。 此最佳做法将确保你可以充分利用预留折扣,并防止购买你无法使用的期限套餐。

进行首次推理调用

预配部署的推理代码与标准部署类型相同。 以下代码片段显示了对 GPT-4 模型的聊天完成调用。 首次以编程方式使用这些模型时,建议从快速入门指南开始。 建议使用版本 1.0 或更高版本的 OpenAI 库,因为这些库中包含重试逻辑。

    #Note: The openai-python library support for Azure OpenAI is in preview. 
    import os
    from openai import AzureOpenAI

    client = AzureOpenAI(
        azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"), 
        api_key=os.getenv("AZURE_OPENAI_API_KEY"),  
        api_version="2024-02-01"
    )

    response = client.chat.completions.create(
        model="gpt-4", # model = "deployment_name".
        messages=[
            {"role": "system", "content": "You are a helpful assistant."},
            {"role": "user", "content": "Does Azure OpenAI support customer managed keys?"},
            {"role": "assistant", "content": "Yes, customer managed keys are supported by Azure OpenAI."},
            {"role": "user", "content": "Do other Azure AI services support this too?"}
        ]
    )

    print(response.choices[0].message.content)

重要

对于生产来说,请使用安全的方式存储和访问凭据,例如 Azure Key Vault。 有关凭据安全性的详细信息,请参阅 Azure AI 服务安全性一文。

了解预期的吞吐量

可以在终结点上实现的吞吐量是部署的 PTU 数、输入大小、输出大小和调用速率的一个因素。 所处理的并发调用数和标记总数可能因这些值而异。 建议的部署吞吐量确定方式如下:

  1. 使用容量计算器进行大小调整估算。 可以在“配额”页和“预配”选项卡下的 Azure OpenAI Studio 中找到容量计算器。
  2. 使用实际流量工作负载对负载进行基准测试。 有关基准测试的详细信息,请参阅基准测试部分。

测量部署利用率

部署指定数量的预配吞吐量单位 (PTU) 时,该终结点可以使用一组推理吞吐量。 此吞吐量的利用率是基于模型、模型版本调用速率、提示大小、生成大小的复杂公式。 为了简化此计算,我们在 Azure Monitor 中提供了利用率指标。 在利用率超过 100% 后,部署会在任何新调用中返回 429。 预配利用率的定义如下:

PTU 部署利用率 = (在时间段内消耗的 PTU) / (在时间段内部署的 PTU)

可以在资源的 Azure-Monitor 部分找到利用率度量值。 若要访问监视仪表板,请登录 https://portal.azure.com,然后转到 Azure OpenAI 资源,并从左侧导航栏中选择“指标”页。 在指标页上,选择“Provisioned-managed utilization V2”指标。 如果资源中有多个部署,则还应通过单击“应用拆分”按钮按每个部署拆分值。

Azure 门户中资源指标边栏选项卡上预配的托管利用率的屏幕截图。

有关监视部署的详细信息,请参阅监视 Azure OpenAI 服务页。

处理高利用率

预配的部署提供分配的计算容量,用于运行给定的模型。 ‘Azure Monitor 中的预配托管利用率’指标以一分钟增量度量部署的利用率。 预配托管部署也进行了优化,以便接受的调用以一致的每调用最大延迟进行处理。 当工作负荷超出其分配的容量时,服务将返回 429 HTTP 状态代码,直到利用率下降到 100% 以下。 重试前的时间在 retry-afterretry-after-ms 响应标头中提供,这些标头分别提供以秒和毫秒为单位的时间。 此方法维护按调用延迟目标,同时让开发人员控制如何处理高负载情况,例如重试或转移到另一个体验/终结点。

收到 429 响应时该怎么办?

429 响应指示在调用时已分配的 PTU 已完全消耗。 响应包括 retry-after-msretry-after 标头,这些标头指示下一次调用接受前等待的时间。 选择如何处理 429 响应取决于应用程序要求。 下面是一些注意事项:

  • 如果可以接受更长的每次调用延迟时间,请实现客户端重试逻辑,以等待 retry-after-ms 时间和重试。 此方法使你能够最大程度地提高部署的吞吐量。 Microsoft 提供的客户端 SDK 已使用合理的默认值处理它。 你仍可能需要根据用例进行进一步优化。
  • 请考虑将流量重定向到其他模型、部署或体验。 此方法是最低延迟的解决方案,因为只要收到 429 信号,就可以立即执行此操作。 推送到高利用率时,429 信号不是意外的错误响应,而是用于管理预配部署的队列和高负载的设计的一部分。

修改客户端库中的重试逻辑

默认情况下,Azure OpenAI SDK 会重试 429 响应,并在客户端的后台重试(直至达到最多重试次数)。 库会遵循 retry-after 时间。 还可以修改重试行为,以更好地适应你的体验。 下面是 Python 库的示例。

可以使用 max_retries 选项来配置或禁用重试设置:

from openai import AzureOpenAI

# Configure the default for all requests:
client = AzureOpenAI(
    azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT"),
    api_key=os.getenv("AZURE_OPENAI_API_KEY"),
    api_version="2024-02-01",
    max_retries=5,# default is 2
)

# Or, configure per-request:
client.with_options(max_retries=5).chat.completions.create(
    model="gpt-4", # model = "deployment_name".
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Does Azure OpenAI support customer managed keys?"},
        {"role": "assistant", "content": "Yes, customer managed keys are supported by Azure OpenAI."},
        {"role": "user", "content": "Do other Azure AI services support this too?"}
    ]
)

运行基准

实例的确切性能和吞吐量功能取决于发出的请求类型以及确切的工作负荷。 确定工作负荷的吞吐量的最佳方法是对自己的数据运行基准。

为了帮助你完成这项工作,基准测试工具提供了一种在部署中轻松运行基准的方法。 该工具附带了多个可能的预配置工作负荷形状,并输出关键性能指标。 详细了解 GitHub 存储库中的工具和配置设置:https://aka.ms/aoai/benchmarking

建议使用以下工作流:

  1. 使用容量计算器估算吞吐量 PTU。
  2. 运行具有此流量形状的基准测试(超过 10 分钟)以在稳定状态下观察结果。
  3. 观察基准工具和 Azure Monitor 中的利用率、令牌处理和调用速率值。
  4. 使用客户端实现,通过自己的流量形状和工作负载运行基准。 请务必使用 Azure OpenAI 客户端库或自定义逻辑实现重试逻辑。

后续步骤