共用方式為

通过 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 配额和区域可用性的信息,请参阅 Quotas 和 Azure Container Instances 区域可用性一文。

重要

在部署到 Web 服务之前在本地调试。 有关详细信息,请参阅 “本地调试”。

还可以参考 Azure Machine Learning - 部署到本地笔记本

先决条件

限制

注意

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

部署到 ACI

若要将模型部署到 Azure Container Instances,请创建一个 部署配置,用于描述所需的计算资源,例如核心数和内存数。 此外,还需要一个推理配置,描述托管模型和 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 实体 方法参数 说明
computeType 不可用 计算目标。 对于 ACI,此值必须为 ACI
containerResourceRequirements 不可用 CPU 和内存实体的容器。
  cpu cpu_cores 要分配的 CPU 核心数。 默认值为 0.1
  memoryInGB memory_gb 为此 Web 服务分配的内存量 (GB)。 默认值为 0.5
location location Azure 区域,用于部署此 Web 服务。 如果未指定此值,则使用工作区位置。 有关可用区域的更多详细信息,请参阅 ACI 区域
authEnabled auth_enabled 是否为此 Web 服务启用身份验证。 默认设置为 False
sslEnabled ssl_enabled 是否为此 Web 服务启用 TLS。 默认为 False。
appInsightsEnabled enable_app_insights 是否为此 Web 服务启用 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 Machine Learning服务名称与客户提供service_name相同。 用户看到的Azure Machine Learning SDK API 不需要任何更改。 该解决方案不对它创建的基础资源的名称提供任何保证。

后续步骤