你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
注释
Foundry 中的托管计算资源当前处于预览阶段。 此预览版未提供服务级别协议,不建议将其用于生产工作负载。 某些功能可能不受支持,或者可能具有受限功能。 有关详细信息,请参阅 Microsoft Azure 预览版补充使用条款。
Microsoft Foundry 中的托管计算部署(预览版)在专用 GPU 容量上托管开源模型。 Microsoft拥有 GPU 拓扑、运行时、容器映像和安全修补。 可以选择适合工作负荷的模型、部署模板、加速器系列和缩放行为。 本文逐步讲解在 Microsoft Foundry 中将开源模型部署到托管计算的端到端工作流。
在这篇文章中,你将学会如何:
- 在模型目录中选择模型
- 选择部署模板
- 使用 Foundry 门户或 Python SDK 部署模型
- 使用 OpenAI SDK 执行推理
- 缩放和监视部署
- 请求更多配额
有关 Foundry 中托管计算部署的概述,包括模型实例、部署模板、运行时、加速器系列、计费和现有限制,请参阅 Microsoft Foundry 中的托管计算(预览版)。
先决条件
一个有效的 “Azure” 订阅。 若要创建帐户,请参阅 创建Azure免费帐户。
该订阅中你有权创建资源的资源组。
Microsoft Foundry 帐户(
AIServices类型的认知服务帐户)和 Foundry 项目。 若要创建 一个,请参阅“创建 Foundry 项目”。以下是在 Foundry 帐户范围内的 Azure 角色分配:
- 认知服务参与者(或 Foundry 所有者 / Foundry 帐户所有者)——创建、更新和删除托管计算部署所需的角色。 请参阅 Microsoft Foundry 的基于角色的访问控制 — 托管计算控制平面操作。
- Foundry 用户 — 通过操场、SDK 或 REST 使用 Microsoft Entra ID 调用部署时需要。
在目标区域内,计划部署的加速器系列(A100、H100 或 MI300X)所对应的已获批准的托管计算配额。 托管计算配额独立于Azure VM 配额。 请参阅本文末尾的 “请求更多配额 ”。
SDK 和 CLI 示例的本地工具:
pip install "azure-mgmt-cognitiveservices==15.0.0b2" azure-identity openai requests az loginAzure CLI 2.60 或更高版本。
Important
Foundry 中的托管计算目前处于公开预览阶段。 在正式发布之前,API、SKU 名称和支持的区域可能会更改。 内置内容筛选不是公共预览版中托管计算数据路径的一部分。 如果需要请求级或响应级筛选,请直接从应用程序调用 Azure AI 内容安全 API。
在目录中选择模型
托管计算资源会部署 Foundry 模型目录中 Hugging Face 集合里的模型,这些模型由 azure-huggingface 注册表提供。
- 登录到 Microsoft Foundry。 确保 New Foundry 开关处于打开状态。 这些步骤适用于 Foundry(新版)。
- 选择您的订阅和 Foundry 资源。
- 选择右上方导航中的 “生成 ”,然后选择左窗格中的“ 模型 ”。
- 按 集合筛选目录。 选择 Hugging Face。 还可以使用任何其他筛选器来缩小要部署的模型范围(例如,选取 Qwen 等模型系列)或按形式或任务。 还可以按模型名称进行搜索。
- 选择一个模型卡(例如,
nvidia-nemotron-3-nano-30b-a3b-fp8)以打开其详细信息。
模型卡显示为模型发布的上游许可证、形式、支持的任务和部署模板。 如果计划通过 Python SDK 或 REST 而不是使用门户向导进行部署,则需要三个值作为部署调用的输入。 可以在 Foundry 门户中找到这些值,如下所示:
模型 ID:模型的完全限定注册表资产 ID。 在目录中的 模型卡 上可用(从模型详细信息窗格复制)。 Example:
azureml://registries/azure-huggingface/models/nvidia--nvidia-nemotron-3-nano-30b-a3b-fp8/versions/2部署模板 ID:标识模型的运行时、加速器系列和计数以及上下文长度。 在模型卡上选择“部署”时打开的部署向导中可用。 选择模板并从向导复制部署模板 ID。 Example:
azureml://registries/azure-huggingface/deploymenttemplates/nvidia--nvidia-nemotron-3-nano-30b-a3b-fp8--nvidia-h100/labels/latest注释
模型 ID 和部署模板 ID 必须兼容;每个模板都会列出它支持的模型版本。 门户向导仅显示所选模型的兼容模板。 如果通过代码进行部署,请验证这两个引用是否都解析到
azure-huggingface注册表中的有效资产。若要了解有关部署模板的详细信息,请参阅托管计算概述文章中的 部署模板 。
加速器类型:例如
H100_80GB,A100_80GB或MI_300_192GB。 显示在部署向导中的每个模板旁边。
部署模型
在模型卡上选择 “部署 ”以打开部署向导。
指定 部署名称。 部署名称是应用程序在推理时在
model字段中传递的内容 — 选择一个稳定的应用程序友好名称(例如)。nemotron-3-nano-30b部署向导中预先选择了部署类型(全局托管计算)。
选择与工作负荷匹配的 部署模板 。 例如,对于中等上下文长度且成本最低的场景,可选择 H100 单加速器模板;如果你的提示词超过单加速器的上下文限制,则可选择双加速器模板。
选择 加速器类型,例如
H100_80GB。将 模型实例 设置为
1(如果您已对工作负载进行过测量,也可以设置为更高值)。 模型实例决定托管计算的规模,并且是部署 SKU 上的capacity值。 每个实例都会占用模板中定义的加速器数量;例如,如果某个模板指定每个实例使用一个 H100,且容量为 2,则总共会使用两个 H100 加速器。Tip
先以
capacity: 1进行初始部署,然后在评估工作负载后通过增加容量进行横向扩展。 有关如何增加容量 ,请参阅“管理和缩放部署 ”。选中复选框以确认部署的成本。
选择“ 部署”。 预配通常需要 10 到 15 分钟。
验证部署
当模型通过 Foundry 终结点上线后,部署详细信息页面会从 Creating 更新为 Succeeded。 可以查看有关部署的详细信息,包括创建部署时所做的预配状态、部署类型和其他选择。
发送测试请求
部署准备就绪后,在 Foundry Playground 中以交互方式对其进行测试。
- 选择 “操场 ”选项卡,从“部署 详细信息 ”页切换到该选项卡。
- 发送提示词以测试部署。
监视部署
托管计算部署与其他 Foundry 部署一样,都在同一个 Azure Monitor 平台上发出指标。 在 Foundry 门户的部署详细信息页面上,监控选项卡显示:
- 请求计数按 HTTP 状态代码分组。
- 响应时间百分位数 (p50, p90, p99)。
- 对于聊天补全模型:输入和输出词元计数、首次词元时间 (TTFT) 百分位,以及词元间解码时间百分位。
若要进行更深入的分析或警报,请在
删除部署
删除部署会释放其分配的加速器资源,并立即停止计费。 若要删除部署,请执行以下操作:
- 转到 Foundry 门户中的部署列表。
- 选择部署名称旁边的单选按钮。
- 在右窗格中,选择“删除”。
请求更多配额
托管计算配额是通过 Foundry 配额过程为每个区域的加速器系列授予的,并且从 Azure VM 配额分离。 现有Azure VM 配额不能应用于托管计算部署。
请求更多配额:
- 选择右上角导航栏中的操作,然后在左侧窗格中选择配额。
- 选择 “托管计算 ”选项卡。下表列出了按加速器系列和区域分组的当前分配。
- 选择右上角的请求配额。
- 在请求表单中,选择加速器系列(A100、H100 或 MI300X)、目标区域和请求的配额。 提交请求。
已批准的配额更改最多可能需要 15 分钟才能生效。 刷新 “配额 ”页以验证更新的分配。 有关配额概念的详细信息,请参阅 管理和增加资源的配额。
使用以下Python脚本部署模型。 将占位符替换为自己的订阅 ID、资源组、Foundry 帐户名称和部署名称。
Tip
先以 capacity: 1 进行初始部署,然后在评估工作负载后通过增加容量进行横向扩展。 有关如何增加容量 ,请参阅“管理和缩放部署 ”。
from azure.identity import DefaultAzureCredential
from azure.mgmt.cognitiveservices import CognitiveServicesManagementClient
SUBSCRIPTION_ID = "<your-subscription-id>"
RESOURCE_GROUP = "<your-resource-group>"
ACCOUNT_NAME = "<your-foundry-account>"
DEPLOYMENT_NAME = "nemotron-3-nano-30b"
MODEL = "azureml://registries/azure-huggingface/models/nvidia--nvidia-nemotron-3-nano-30b-a3b-fp8/versions/2"
TEMPLATE = "azureml://registries/azure-huggingface/deploymenttemplates/nvidia--nvidia-nemotron-3-nano-30b-a3b-fp8--nvidia-h100/labels/latest"
client = CognitiveServicesManagementClient(
DefaultAzureCredential(), SUBSCRIPTION_ID
)
deployment = client.managed_compute_deployments.begin_create_or_update(
resource_group_name=RESOURCE_GROUP,
account_name=ACCOUNT_NAME,
deployment_name=DEPLOYMENT_NAME,
resource={
"sku": {"name": "GlobalManagedCompute", "capacity": 1},
"properties": {
"model": MODEL,
"deploymentTemplate": TEMPLATE,
"acceleratorType": "H100_80GB",
"versionUpgradeOption": "OnceNewDefaultVersionAvailable",
},
},
).result() # blocks until terminal state (~10–15 min)
print(f"State: {deployment.properties.provisioning_state}")
print(f"ID: {deployment.id}")
验证部署
部署创建完成后,在发送流量之前,先确认其状态正常。
d = client.managed_compute_deployments.get(
resource_group_name=RESOURCE_GROUP,
account_name=ACCOUNT_NAME,
deployment_name=DEPLOYMENT_NAME,
)
print(f"State: {d.properties.provisioning_state}") # expect: Succeeded
print(f"Model: {d.properties.model}")
print(f"Template: {d.properties.deployment_template}")
print(f"Accelerator: {d.properties.accelerator_type}")
print(f"Capacity: {d.sku.capacity}")
查找:
-
provisioningState: Succeeded表示部署已上线。 -
acceleratorType匹配所请求的值。 -
sku.capacity匹配所请求的实例数。
provisioningState如果是Failed,请参阅故障排除。
发送测试请求
可通过统一的 Foundry 端点访问托管计算部署:
https://<account>.services.ai.azure.com/openai/v1/
请求 model 正文中的字段采用指定的 部署名称 ,而不是模型 ID。
from azure.identity import DefaultAzureCredential, get_bearer_token_provider
from openai import OpenAI
ACCOUNT_NAME = "<your-foundry-account>"
DEPLOYMENT_NAME = "nemotron-3-nano-30b"
token_provider = get_bearer_token_provider(
DefaultAzureCredential(),
"https://cognitiveservices.azure.com/.default",
)
client = OpenAI(
base_url=f"https://{ACCOUNT_NAME}.services.ai.azure.com/openai/v1",
api_key="placeholder", # required by OpenAI SDK; overridden by Authorization header
default_headers={"Authorization": f"Bearer {token_provider()}"},
)
resp = client.chat.completions.create(
model=DEPLOYMENT_NAME,
messages=[{"role": "user", "content": "What is the capital of France?"}],
)
print(resp.choices[0].message.content)
使用 Microsoft Entra ID 调用该部署要求在 Foundry 帐户中具有 Azure AI 用户角色。
管理和扩展部署
由于托管计算部署以模型为中心,因此可以通过更改模型实例数而不是调整节点大小来缩放部署。
更改容量
d = client.managed_compute_deployments.get(
RESOURCE_GROUP, ACCOUNT_NAME, DEPLOYMENT_NAME
)
d.sku.capacity = 3
client.managed_compute_deployments.begin_create_or_update(
resource_group_name=RESOURCE_GROUP,
account_name=ACCOUNT_NAME,
deployment_name=DEPLOYMENT_NAME,
resource=d,
).result()
获取运行时和模型更新
在部署中将 versionUpgradeOption 设置为 OnceNewDefaultVersionAvailable 后,当 Microsoft 发布新的默认模型版本和运行时版本时,该部署将自动采用这些版本。 运行时补丁和 CVE 修复会自动应用到正在运行的客户部署中;你无需重新部署模型即可获得这些修复。
监视部署
托管计算部署与其他 Foundry 部署一样,都在同一个 Azure Monitor 平台上发出指标。 若要进行更深入的分析或警报,请在
- 请求计数按 HTTP 状态代码分组。
- 响应时间百分位数 (p50, p90, p99)。
- 对于聊天补全模型:输入和输出词元计数、首次词元时间 (TTFT) 百分位,以及词元间解码时间百分位。
还可以按部署和配置警报进行分组。 系统会自动生成部署级计费标签。 按部署标记筛选成本管理,以将支出归因于特定的托管计算部署。 有关详细信息,请参阅规划和管理 Microsoft Foundry 的成本。
删除部署
删除部署会释放其分配的加速器资源,并立即停止计费。 若要删除部署,请执行以下操作:
client.managed_compute_deployments.begin_delete(
resource_group_name=RESOURCE_GROUP,
account_name=ACCOUNT_NAME,
deployment_name=DEPLOYMENT_NAME,
).result()
访问控制摘要
| Action | 最低角色 |
|---|---|
| 创建、更新或删除托管计算部署 | Foundry 帐户上的认知服务参与者(或 Foundry 所有者/Foundry 帐户所有者) |
| 读取部署或列出部署 | 认知服务用户、Foundry 用户、Foundry 项目经理,或以上任一角色 |
| 使用 Microsoft Entra ID 调用部署 | Foundry 帐户中的 Foundry 用户 |
| 使用 API 密钥调用该部署 | 帐户密钥(调用本身不需要 Azure 角色;检索密钥需要读取访问权限) |
有关完整的 Azure 资源提供程序操作列表、角色与权限对应矩阵以及与标准部署的比较,请参阅Microsoft Foundry 的基于角色的访问控制 — 托管计算控制平面操作。
Troubleshooting
provisioningState: Failed
确认请求的加速器系列已在目标区域中批准配额,并且所选部署模板列出了该加速器系列。 不匹配的模型和部署模板(例如,为不同模型版本发布的模板)是一个常见原因。 验证这两个引用都解析到 azure-huggingface 注册表中的有效注册表资产。
创建时提示“配额已超出”
Foundry 帐户在区域中没有足够的托管计算配额来容纳请求的加速器系列。 请求更多配额。 Azure VM 配额不适用于托管计算。
区域中的“容量不足”
该区域未返回所请求的加速器系列的可用容量。 尝试不同的系列(例如,部署在 MI300X 而不是 H100 上),选择每个实例配备更少加速器的模板,或选择其他区域。 大型内存系列(如 MI300X)通常具有不适合 A100 的模型容量。
来自 /openai/v1/ 路由的 404 错误
如果向 https://<account>.services.ai.azure.com/openai/v1/chat/completions 发出的聊天补全请求返回 404,请确认:
- 请求正文中的部署名称与创建的部署匹配。
- 部署的
provisioningState是Succeeded。 - 模型的运行时公开聊天补全。 某些运行时(例如,用于嵌入的 TEI)不会公开聊天完成路由;请改用模型卡上记录的路由。
部署停滞在 Creating 超过 20 分钟
一些较大的模型完成启动所需的时间可能会超过通常的 10–15 分钟。 如果 20 分钟后 provisioningState 仍为 Creating,请检查 Foundry 门户中的部署详细信息页面,查看操作状态消息,并确认底层区域未出现服务降级。 如果部署在 Creating 状态下持续超过 30 分钟且没有操作消息,请将其删除后重试。 预配在部署名称上是幂等的。