适用范围: Azure CLI ml 扩展 v2(最新版)
Azure CLI ml 扩展 v2(最新版) Python SDK azure-ai-ml v2(最新版)
Python SDK azure-ai-ml v2(最新版)
Azure 机器学习 CLI 和 Python SDK v2 为 Kubernetes 计算目标提供支持。 可以启用现有的 Azure Kubernetes 服务 (AKS) 群集或启用了 Azure Arc 的 Kubernetes (Arc Kubernetes) 群集,将其设为 Kubernetes 计算目标。 使用机器学习中的计算来训练或部署模型。
本文介绍如何在机器学习中使用 Kubernetes 计算目标,包括使用场景、推荐的最佳实践以及 KubernetesCompute 与旧版 AksCompute 目标的对比情况。
Kubernetes 计算目标的工作原理
Azure 机器学习 Kubernetes 计算支持两种类型的 Kubernetes 群集。
| 计算 | 位置 | 说明 | 
|---|---|---|
| AKS 群集 | 在 Azure 内 | 通过使用 Azure 中的自托管 AKS 群集,可以获得用于满足合规性要求的安全性和控制,并灵活地管理团队的机器学习工作负载。 | 
| Arc Kubernetes 群集 | Azure 外部 | 借助 Arc Kubernetes 群集,可以在任何本地或多云基础设施或边缘中训练或部署模型。 | 
通过直接在 AKS 或 Arc Kubernetes 群集上部署群集扩展,机器学习无缝支持 Kubernetes 群集运行训练或推理工作负载。 通过以下流程,可以轻松启用和使用现有的 Kubernetes 集群来处理机器学习工作负载:
- 步骤 1:准备 Azure Kubernetes 服务群集或 Arc Kubernetes 群集。 
- 步骤 2:部署 Azure 机器学习群集扩展。 
- 步骤 4:使用 CLI v2、SDK v2 或 Azure 机器学习工作室用户界面中的 Kubernetes 计算目标。 
此过程中的主要职责分配如下:
- IT 运营团队负责步骤 1、2 和 3。 该团队准备 AKS 或 Arc Kubernetes 群集,部署机器学习群集扩展,并将 Kubernetes 群集附加到机器学习工作区。 除了这些必要的计算设置步骤之外,IT 运营团队还使用熟悉的工具(例如 Azure CLI 或 kubectl)为数据科学团队完成以下任务: - 配置网络和安全选项,例如出站代理服务器连接或 Azure 防火墙、推理路由器 (azureml-fe) 设置、SSL/TLS 终止和虚拟网络设置。 
- 为各种机器学习工作负载方案创建和管理实例类型,以高效利用计算资源。 
- 解决与 Kubernetes 群集相关的工作负载问题。 
 
- IT 运营团队完成计算设置和计算目标创建后,数据科学团队开始他们的任务。 该团队会在机器学习工作区中发现可用的计算目标和实例类型的列表。 这些计算资源可用于训练或推理工作负载。 数据科学团队使用其偏好的工具或 API 指定计算目标名称和实例类型名称。 他们可以使用 Azure 机器学习 CLI v2、Python SDK v2 或机器学习工作室用户界面。 
建议的最佳做法
本部分提供了使用 Kubernetes 计算的建议最佳做法的摘要。
IT 运营团队与数据科学团队之间的职责分离。 如前所述,为机器学习工作负载管理自己的计算和基础结构是一项复杂的任务。 最好的方法是让 IT 运营团队处理任务,这样数据科学团队就可以专注于机器学习模型来提高组织效率。
为不同的机器学习工作负载方案创建和管理实例类型。 每个机器学习工作负载使用不同的计算资源(例如 CPU/GPU 和内存)量。 Azure 机器学习将实例类型实现为具有 nodeSelector 和资源 resource request/limit 属性的 Kubernetes 自定义资源定义 (CRD)。 有了精心选择的一组实例类型,IT 运营人员可以将特定节点上的机器学习工作负载作为目标,高效管理计算资源利用率。
多个 Azure 机器学习工作区共享同一个 Kubernetes 群集。 可以将 Kubernetes 群集多次附加到同一机器学习工作区或不同的工作区。 此过程会在单个工作区或多个工作区中创建多个计算目标。 由于许多客户围绕机器学习工作区来组织数据科学项目,因此多个数据科学项目现在可以共享同一个 Kubernetes 群集。 此方法可显著减少机器学习基础结构管理开销,并节省更多 IT 成本。
使用 Kubernetes 命名空间进行团队/项目工作负载隔离。 将 Kubernetes 群集附加到机器学习工作区时,可以为计算目标指定 Kubernetes 命名空间。 计算目标运行的所有工作负载都将放置在指定的命名空间下。
KubernetesCompute 和旧版 AksCompute 目标的对比情况
借助 Azure 机器学习 CLI/Python SDK v1,可以使用旧版 AksCompute 目标在 AKS 上部署模型。 KubernetesCompute 和 AksCompute 目标都支持 AKS 集成,但支持方法不同。 下表对主要差异进行了汇总:
| 功能 | AksCompute(旧版) | KubernetesCompute | 
|---|---|---|
| 使用 CLI/SDK v1 | 是 | 否 | 
| 使用 CLI/SDK v2 | 否 | 是 | 
| 设置训练 | 否 | 是 | 
| 应用实时推理 | 是 | 是 | 
| 应用批量推理 | 否 | 是 | 
| 访问实时推理的新功能 | 未开发新功能 | 可用的活动路线图 | 
考虑到这些差异,以及使用 CLI/SDK v2 的总体机器学习演变,建议的方法是使用 Kubernetes 计算目标 (KubernetesCompute) 开展 AKS 模型部署。
有关详细信息,请阅读以下文章:
机器学习示例
机器学习示例位于 GitHub 上的 Azure 机器学习 (azureml-examples) 存储库中。 在任意示例中,将计算目标名称替换为 Kubernetes 计算目标,然后运行示例。
部分选项如下:
- 使用 CLI v2 训练作业示例
- 使用 SDK v2 训练作业示例
- 使用联机终结点示例和 CLI v2 进行模型部署
- 使用联机终结点示例和 SDK v2 进行模型部署
- 使用 CLI v2 批量处理终结点样本
