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

通过 CLI (v1) 将模型部署到 Azure 容器实例

重要说明

本文中的一些 Azure CLI 命令使用适用于 Azure 机器学习的 azure-cli-ml 或 v1 扩展。 对 CLI v1 的支持于 2025 年 9 月 30 日结束。 Microsoft将不再为此服务提供技术支持或更新。 使用 CLI v1 的现有工作流将继续在支持终止日期后运行。 但是,当产品发生体系结构更改时,它们可能会面临安全风险或中断性变更。

建议尽快过渡到 mlv2 扩展。 有关 v2 扩展的详细信息,请参阅 Azure 机器学习 CLI 扩展和 Python SDK v2

重要说明

本文提供有关使用 Azure 机器学习 SDK v1 的信息。 SDK v1 自 2025 年 3 月 31 日起弃用。 对它的支持将于 2026 年 6 月 30 日结束。 可以在该日期之前安装和使用 SDK v1。 使用 SDK v1 的现有工作流将在支持结束日期后继续运行。 但是,当产品发生体系结构更改时,它们可能会面临安全风险或中断性变更。

建议在 2026 年 6 月 30 日之前过渡到 SDK v2。 有关 SDK v2 的详细信息,请参阅 什么是 Azure 机器学习 CLI 和 Python SDK v2? 以及 SDK v2 参考

重要说明

本文介绍如何使用 CLI 和 SDK v1 来部署模型。 有关 v2 的建议方法,请参阅 使用联机终结点部署机器学习模型并对其进行评分

了解如何使用 Azure 机器学习将模型部署为 Azure 容器实例 (ACI) 中的 Web 服务。 如果你符合以下情况,可使用 Azure 容器实例:

  • 不愿意管理自己的 Kubernetes 群集
  • 可以接受只拥有服务的单个副本,这可能会影响运行时间

有关 ACI 的配额和区域可用性的信息,请参阅 Azure 容器实例的配额和区域可用性文章。

重要说明

强烈建议在部署到 Web 服务之前先进行本地调试。有关详细信息,请参阅本地调试

还可参阅 Azure 机器学习 - 部署到本地笔记本

Prerequisites

限制

注意

  • 不支持在虚拟网络中部署 Azure 容器实例。 为了实现网络隔离,请考虑使用托管的在线终结点
  • 为确保获得有效的支持,必须为 ACI 容器提供必要的日志。 如果没有这些日志,则无法保证技术支持。 建议在部署配置中指定 enable_app_insights=True,以使用日志分析工具来高效管理和分析 ACI 容器日志。

部署到 ACI

若要将模型部署到 Azure 容器实例,请创建一个描述所需计算资源的部署配置。 例如,核心数和内存。 此外,还需要推理配置,以描述托管模型和 Web 服务所需的环境。 有关如何创建推理配置的详细信息,请参阅部署模型的方式和位置

注意

  • ACI 仅适用于大小不到 1 GB 的小模型。
  • 建议对较大的模型使用单节点 AKS 进行开发测试。
  • 待部署模型的数量限制为每个部署(每个容器)1,000 个模型。

使用 SDK

适用于:适用于 Python 的 Azure 机器学习 SDK v1

from azureml.core.webservice import AciWebservice, Webservice
from azureml.core.model import Model

deployment_config = AciWebservice.deploy_configuration(cpu_cores = 1, memory_gb = 1)
service = Model.deploy(ws, "aciservice", [model], inference_config, deployment_config)
service.wait_for_deployment(show_output = True)
print(service.state)

有关此示例中使用的类、方法和参数的详细信息,请参阅以下参考文档:

使用 Azure CLI

适用于:Azure CLI ml 扩展 v1

要使用 CLI 进行部署,请使用以下命令。 将 mymodel:1 替换为注册的模型的名称和版本。 将 myservice 替换为要赋予此服务的名称:

az ml model deploy -n myservice -m mymodel:1 --ic inferenceconfig.json --dc deploymentconfig.json

deploymentconfig.json 文档中的条目映射到 AciWebservice.deploy_configuration 的参数。 下表描述了 JSON 文档中的实体与方法参数之间的映射:

JSON 实体 Method 参数 说明
computeType NA 计算目标。 对于 ACI,此值必须为 ACI
containerResourceRequirements NA CPU 和内存实体的容器。
  cpu cpu_cores 要分配的 CPU 核心数。 默认值 0.1
  memoryInGB memory_gb 为此 Web 服务分配的内存量 (GB)。 默认值为 0.5
location location 要将此 Webservice 部署到的 Azure 区域。 如果未指定,将使用工作区位置。 如需可用区域的详细信息,可查看 ACI 区域
authEnabled auth_enabled 是否为此 Webservice 启用身份验证。 默认为 False
sslEnabled ssl_enabled 是否为此 Webservice 启用 TLS。 默认为 False。
appInsightsEnabled enable_app_insights 是否为此 Webservice 启用 AppInsights。 默认为 False
sslCertificate ssl_cert_pem_file 如果启用了 TLS,则需要证书文件
sslKey ssl_key_pem_file 如果启用了 TLS,则需要密钥文件
cname ssl_cname 启用 TLS 时的 CNAME
dnsNameLabel dns_name_label 评分终结点的 DNS 名称标签。 如果未指定,则将为评分终结点生成唯一的 DNS 名称标签。

以下 JSON 是用于 CLI 的部署配置示例:

{
    "computeType": "aci",
    "containerResourceRequirements":
    {
        "cpu": 0.5,
        "memoryInGB": 1.0
    },
    "authEnabled": true,
    "sslEnabled": false,
    "appInsightsEnabled": false
}

有关详细信息,请参阅 az ml model deploy 参考文档。

使用 VS Code

请参阅如何在 VS Code 中管理资源

重要说明

无需事先创建 ACI 容器即可进行测试。 根据需要创建 ACI 容器。

重要说明

我们会将经哈希处理的工作区 ID 追加到所有已创建的基础 ACI 资源,同一工作区中的所有 ACI 名称将具有相同的后缀。 Azure 机器学习服务名称将仍然是客户提供的同一 "service_name",所有面向 Azure 机器学习 SDK API 的用户都不需要任何更改。 我们不会对所创建的基础资源的名称提供任何保证。

后续步骤