将模型部署到 Azure 容器实例

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

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

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

重要

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

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

先决条件

限制

  • 在虚拟网络中使用 Azure 容器实例时,虚拟网络必须与 Azure 机器学习工作区位于同一资源组中。
  • 在虚拟网络中使用 Azure 容器实例时,你的工作区的 Azure 容器注册表 (ACR) 不能也在该虚拟网络中。

有关详细信息,请参阅如何通过虚拟网络保护推理

部署到 ACI

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

注意

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

使用 SDK

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 要将此 Webservice 部署到的 Azure 区域。 如果未指定,将使用工作区位置。 如需可用区域的详细信息,可查看 ACI 区域
authEnabled auth_enabled 是否为此 Webservice 启用身份验证。 默认为 False
sslEnabled ssl_enabled 是否为此 Webservice 启用 SSL。 默认为 False。
appInsightsEnabled enable_app_insights 是否为此 Webservice 启用 AppInsights。 默认为 False
sslCertificate ssl_cert_pem_file 如果启用 SSL,则需要证书文件
sslKey ssl_key_pem_file 如果启用 SSL,则需要密钥文件
cname ssl_cname 如果启用 SSL,则需要 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 的用户都不需要任何更改。 我们不会对所创建的基础资源的名称提供任何保证。

后续步骤