通过 CLI (v1) 将模型部署到 Azure 容器实例
重要
本文介绍如何使用 CLI 和 SDK v1 部署模型。 有关 v2 的建议方法,请参阅 使用联机终结点部署机器学习模型并对其进行评分。
了解如何使用 Azure 机器学习将模型部署为 Azure 容器实例 (ACI) 上的 Web 服务。 如果你符合以下情况,可使用 Azure 容器实例:
- 不愿意管理自己的 Kubernetes 群集
- 可以接受只拥有服务的单个副本,这可能会影响运行时间
有关 ACI 的配额和区域可用性的信息,请参阅 Azure 容器实例的配额和区域可用性文章。
先决条件
Azure 机器学习工作区。 有关详细信息,请参阅创建 Azure 机器学习工作区。
工作区中注册的机器学习模型。 如果尚未注册模型,请参阅部署模型的方式和位置。
机器学习服务的 Azure CLI 扩展 (v1)、Azure 机器学习 Python SDK 或 Azure 机器学习 Visual Studio Code 扩展。
重要
本文中的一些 Azure CLI 命令使用适用于 Azure 机器学习的
azure-cli-ml
或 v1 扩展。 对 v1 扩展的支持将于 2025 年 9 月 30 日结束。 在该日期之前,你将能够安装和使用 v1 扩展。建议在 2025 年 9 月 30 日之前转换为
ml
或 v2 扩展。 有关 v2 扩展的详细信息,请参阅 Azure ML CLI 扩展和 Python SDK v2。本文中的 Python 代码片段假设设置了以下变量:
ws
- 设置为工作区。model
- 设置为注册的模型。inference_config
- 设置为模型的推理配置。
有关如何设置这些变量的详细信息,请参阅部署模型的方式和位置。
本文中的 CLI 片段假设已创建
inferenceconfig.json
文档。 有关如何创建此文档的详细信息,请参阅部署模型的方式和位置。
限制
使用专用终结点配置 Azure 机器学习工作区时,不支持部署到虚拟网络中的 Azure 容器实例。 相反,请考虑使用具有网络隔离的托管联机终结点。
部署到 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
要使用 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 启用 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
重要
无需事先创建 ACI 容器即可进行测试。 将据需要创建 ACI 容器。
重要
我们会将经哈希处理的工作区 ID 追加到所有已创建的基础 ACI 资源。同一工作区中的所有 ACI 名称将具有相同的后缀。 Azure 机器学习服务名称仍然是客户提供的同一“service_name”,所有面向 Azure 机器学习 SDK API 的用户都不需要任何更改。 我们不会对所创建的基础资源的名称提供任何保证。