你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
以下指南指导你完成使用 Azure AI Foundry 资源创建预配部署的关键步骤。 有关此处讨论的概念的更多详细信息,请参阅:
先决条件
- Azure 订阅 - 免费创建订阅
- Azure 参与者或认知服务参与者角色
获取/验证 PTU 配额可用性。
预配的吞吐量部署的大小以“预配吞吐量单位”(PTU) 为单位。 每个已预配部署类型的 PTU 配额在区域基础上授予订阅,并限制可在该区域的所有模型和版本中部署的 PTU 总数。
创建新部署需要可用(未使用的)配额才能满足所需的部署大小。 例如:如果某个订阅在美国中南部具有以下配置:
- PTU 总配额 = 500 个 PTU
- 部署:
- 100 个 PTU:GPT-4o、2024-05-13
- 100 个 PTU:DeepSeek-R1,1 个
那么,会认为配额中的 200 个 PTU 已使用,有 300 个 PTU 可用于创建新部署。
默认数量的全局、数据区域和区域预配配额会分配给多个区域中符合条件的订阅。 可以通过访问 Azure AI Foundry 门户中 的“配额”窗格并选择所需的订阅和区域,查看区域中可用的配额。 例如,下面的屏幕截图显示了所选订阅在美国西部的 300 个全球预配吞吐量 PTU 的配额限制。 此全局 PTU 的总使用量为 50 个,然后有 250 个 PTU 单元可用于部署全局预配吞吐量部署类型。
可以通过单击“请求配额”按钮来请求其他配额。
创建 Azure AI Foundry 资源
预配部署是通过 Azure 中的 Azure AI Foundry 资源对象创建的。 必须在要在其中创建部署的每个区域中都有一个 Azure AI Foundry 资源。 如果需要,请使用 Azure 门户在拥有可用配额的区域中创建资源。
注意
Azure AI Foundry 资源可以同时支持多种类型的 Azure AI Foundry 部署。 不需要为预配的部署使用专用的新资源。
发现具有配置部署选项的模型
验证配额后,可以创建部署。 导航到 Azure AI Foundry 模型目录,发现具有预配部署选项的模型。
- 登录 Azure AI Foundry 门户。
- 选择为预配部署启用的订阅,并在具有配额的区域中选择所需的资源。
- 可以通过在模型集合筛选器中筛选“直接来自 Microsoft”来选择模型。 这些模型由 Azure 直接保存并提供服务,并支持预配的吞吐量部署选项。
- 选择要部署的模型,并检查模型卡中的模型详细信息。
创建预配的部署 - 容量可用
若要创建预配的部署,可以按照以下步骤操作:描述的选项反映了屏幕截图中显示的条目。
单击“ 使用此模型 ”并配置以下字段。
在预配部署的“部署类型”下拉列表中,根据需要选择“全局预配吞吐量”、“数据专区预配吞吐量”或“区域预配吞吐量”。
展开“高级选项”下拉列表菜单。
在每个字段中填入值。 下面是一个示例:
字段 | 说明 | 示例 |
---|---|---|
选择模型 | 选择要部署的特定模型。 | GPT-4 |
型号版本 | 选择要部署的模型的版本。 | 0613 |
部署名称 | 部署名称在代码中使用,通过使用客户端库和 REST API 调用模型。 | gpt-4 |
内容筛选器 | 指定要应用于部署的筛选策略。 详细了解我们的内容筛选操作方法。 | 默认值 |
部署类型 | 这会影响吞吐量和性能。 从“部署”对话框的下拉列表中选择“全局预配吞吐量”、“数据区域预配吞吐量”或“区域预配吞吐量”以进行部署。 | 全局预配吞吐量 |
预配吞吐量单位 | 选择要包含在部署中的吞吐量。 | 100 |
注意
部署对话框包含一个提醒,告知你可以为 Azure AI Foundry 预配吞吐量购买 Azure OpenAI 预留,以获取长期使用承诺的大幅折扣。
输入部署设置后,单击“确认定价”继续。 如果选择按小时付费,则会显示部署的定价确认对话框,无需 Azure 预留即可提供期限折扣。
如果不确定成本,请取消部署,并在了解预配部署的付款模型和基础成本后继续。 此步骤可避免付款发票上出现意外的高费用。 自我教育的资源包括:
下图显示了你将看到的定价确认。 显示的价格只是一个示例。
如果要以编程方式创建部署,可以使用以下 Azure CLI 命令执行此操作。 若要指定部署类型,请基于预期的部署类型将 sku-name
修改为 GlobalProvisionedManaged
、DataZoneProvisionedManaged
或 ProvisionedManaged
。 使用所需的预配吞吐量单位数更新 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
替换为 GlobalProvisionedManaged
、DataZoneProvisionedManaged
或 ProvisionedManaged
而不是 Standard
。
创建预配部署 - 容量不可用
由于容量可用性的动态特性,所选资源的区域可能没有服务容量来创建指定模型、版本和 PTU 数量的部署。
在这种情况下, Azure AI Foundry 门户中 的向导会将你定向到具有可用配额和容量的其他区域,以创建所需模型的部署。 如果发生这种情况,部署对话框将如下所示:
需要注意的事项:
- 此时会显示一条消息,提示你在可用配额中有多少 PTU,以及当前可以部署多少 PTU。
- 如果选择了多个 PTU 且其大小超出了服务容量,将显示一条消息,其中提供了获取更多容量的选项,以及一个用于选择备用区域的按钮。 单击“查看其他区域”按钮将显示一个对话框,其中显示了 Azure AI Foundry 资源的列表,可在其中创建部署,以及可以根据每个区域中的可用配额和服务容量创建的最大大小部署。
选择资源并单击“切换资源”将使部署对话框使用所选资源重新显示。 然后,可以继续在新区域中创建部署。
使用配额创建新的部署或交换模型
如果在订阅和区域下仍有可用配额,则可以为微软直接托管和销售的其他模型创建新的预置部署。
这些步骤与上面的示例相同。 创建新部署时,你将看到可在部署窗口中使用的总可用配额。 在下面的屏幕截图中,可用配额为 250 个单位。
部署新模型后,可以在 AI Foundry 门户中检查配额使用情况。 可以通过请求新配额或删除现有部署来管理配额,以释放新预配部署的 PTU 配额。
(可选)购买预留项
创建部署后,你可能希望通过 Azure 预留购买限期折扣。 对于在使用几天后打算继续使用部署的用户,Azure 预留可以提供按小时计费的大幅折扣。
有关购买模型和预留的详细信息,请参阅:
重要
模型部署的容量可用性是动态的,并且会在区域和模型间频繁变化。 若要防止购买比可以使用的 PTU 更多的预留,请先创建部署,然后购买 Azure 预留,以覆盖你已部署的 PTU。 此最佳做法将确保你可以充分利用预留折扣,并防止购买你无法使用的期限套餐。
进行首次推理调用
预配部署的推理代码与标准部署类型相同。 以下代码片段显示了对 GPT-4 模型的聊天完成调用。 首次以编程方式使用这些模型时,建议从快速入门指南开始。 建议使用版本 1.0 或更高版本的 OpenAI 库,因为这些库中包含重试逻辑。
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-10-21"
)
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 services support this too?"}
]
)
print(response.choices[0].message.content)
重要
对于生产来说,请使用安全的方式存储和访问凭据,例如 Azure Key Vault。 有关凭据安全性的详细信息,请参阅此 安全 文章。
了解预期的吞吐量
可以在终结点上实现的吞吐量是部署的 PTU 数、输入大小、输出大小和调用速率的一个因素。 所处理的并发调用数和标记总数可能因这些值而异。 建议的部署吞吐量确定方式如下:
- 使用容量计算器进行大小调整估算。 可以在 Azure AI Foundry 门户中 的“配额”页和“预配”选项卡下找到容量计算器。
- 使用实际流量工作负载对负载进行基准测试。 有关基准测试的详细信息,请参阅基准测试部分。
测量部署利用率
部署指定数量的预配吞吐量单位 (PTU) 时,该终结点可以使用一组推理吞吐量。 此吞吐量的利用率是基于模型、模型版本调用速率、提示大小、生成大小的复杂公式。 为了简化此计算,我们在 Azure Monitor 中提供了利用率指标。 在利用率超过 100% 后,部署会在任何新调用中返回 429。 预配利用率的定义如下:
PTU 部署利用率 = (在时间段内消耗的 PTU) / (在时间段内部署的 PTU)
可以在资源的 Azure-Monitor 部分找到利用率度量值。 若要访问监视仪表板,请登录 https://portal.azure.com,然后转到 Azure OpenAI 资源,并从左侧导航栏中选择“指标”页。 在指标页上,选择“Provisioned-managed utilization V2”指标。 如果资源中有多个部署,则还应通过单击“应用拆分”按钮按每个部署拆分值。
有关监视部署的详细信息,请参阅 “监视 Azure OpenAI ”页。
处理高利用率
预配的部署提供分配的计算容量,用于运行给定的模型。 Azure Monitor 中的“Provisioned-Managed 利用率 V2”指标以每一分钟为间隔来度量部署的利用率。 预配托管部署也进行了优化,以便接受的调用以一致的每调用最大延迟进行处理。 当工作负荷超出其分配的容量时,服务将返回 429 HTTP 状态代码,直到利用率下降到 100% 以下。 重试前的时间在 retry-after
和 retry-after-ms
响应标头中提供,这些标头分别提供以秒和毫秒为单位的时间。 此方法维护按调用延迟目标,同时让开发人员控制如何处理高负载情况,例如重试或转移到另一个体验/终结点。
收到 429 响应时该怎么办?
429 响应指示在调用时已分配的 PTU 已完全消耗。 响应包括 retry-after-ms
和 retry-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-10-21",
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 services support this too?"}
]
)
运行基准
实例的确切性能和吞吐量功能取决于发出的请求类型以及确切的工作负荷。 确定工作负荷的吞吐量的最佳方法是对自己的数据运行基准。
为了帮助你完成这项工作,基准测试工具提供了一种在部署中轻松运行基准的方法。 该工具附带了多个可能的预配置工作负荷形状,并输出关键性能指标。 详细了解 GitHub 存储库中的工具和配置设置:https://github.com/Azure/azure-openai-benchmark。
建议使用以下工作流:
- 使用容量计算器估算吞吐量 PTU。
- 运行具有此流量形状的基准测试(超过 10 分钟)以在稳定状态下观察结果。
- 观察基准工具和 Azure Monitor 中的利用率、令牌处理和调用速率值。
- 使用客户端实现,通过自己的流量形状和工作负载运行基准。 请务必使用 Azure OpenAI 客户端库或自定义逻辑实现重试逻辑。
后续步骤
- 有关云应用程序最佳做法的详细信息,请查看云应用程序中的最佳做法
- 有关预配部署的详细信息,请查看什么是预配吞吐量?
- 有关每个 SDK 中的重试逻辑的详细信息,请查看: