重要
本文中的一些 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 区域可用性一文。
先决条件
Azure 机器学习工作区。 有关详细信息,请参阅创建 Azure 机器学习工作区。
工作区中注册的机器学习模型。 如果尚未注册模型,请参阅部署模型的方式和位置。
机器学习服务的 Azure CLI 扩展 (v1)、Azure 机器学习 Python SDK 或 Azure 机器学习 Visual Studio Code 扩展。
本文中的 Python 代码片段假设设置了以下变量:
-
ws- 设置为工作区。 -
model- 设置为注册的模型。 -
inference_config- 设置为模型的推理配置。
有关如何设置这些变量的详细信息,请参阅部署模型的方式和位置。
-
本文中的 CLI 代码片段假定你创建了一个
inferenceconfig.json文件。 有关创建此文件的详细信息,请参阅 部署模型的方式和位置。
限制
注意
- 不支持在虚拟网络中部署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
若要使用 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
重要
无需事先创建 ACI 容器即可进行测试。 解决方案会根据需要创建 ACI 容器。
重要
解决方案将哈希工作区 ID 追加到它创建的所有基础 ACI 资源。 同一工作区中的所有 ACI 名称都具有相同的后缀。 Azure Machine Learning服务名称与客户提供service_name相同。 用户看到的Azure Machine Learning SDK API 不需要任何更改。 该解决方案不对它创建的基础资源的名称提供任何保证。