你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure 机器学习中的 Kubernetes 计算目标简介

适用范围:Azure CLI ml 扩展 v2(最新版)Python SDK azure-ai-ml v2(最新版)

Azure 机器学习 CLI 和 Python SDK v2 为 Kubernetes 计算目标提供支持。 可以启用现有的 Azure Kubernetes 服务 (AKS) 群集或启用了 Azure Arc 的 Kubernetes (Arc Kubernetes) 群集,将其设为 Kubernetes 计算目标。 使用机器学习中的计算来训练或部署模型。

说明 Azure 机器学习如何连接到 Kubernetes 的示意图。

本文介绍如何在机器学习中使用 Kubernetes 计算目标,包括使用场景、推荐的最佳实践以及 KubernetesCompute 与旧版 AksCompute 目标的对比情况。

Kubernetes 计算目标的工作原理

Azure 机器学习 Kubernetes 计算支持两种类型的 Kubernetes 群集。

计算 位置 说明
AKS 群集 在 Azure 内 通过使用 Azure 中的自托管 AKS 群集,可以获得用于满足合规性要求的安全性和控制,并灵活地管理团队的机器学习工作负载。
Arc Kubernetes 群集 Azure 外部 借助 Arc Kubernetes 群集,可以在任何本地或多云基础设施或边缘中训练或部署模型。

通过直接在 AKS 或 Arc Kubernetes 群集上部署群集扩展,机器学习无缝支持 Kubernetes 群集运行训练或推理工作负载。 通过以下流程,可以轻松启用和使用现有的 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 使用方案

借助 Arc Kubernetes 群集,你可以使用 Kubernetes 在任何本地和多云基础架构中构建、训练和部署模型。 此策略可开启一些以前在云设置环境中不可能实现的全新使用模式。 下表是使用 Azure 机器学习 Kubernetes 计算时启用的新使用模式的摘要:

使用模式 数据位置 目标和要求 方案配置
在云中训练模型,在本地部署模型 使用云计算来支持弹性计算需求或特殊硬件(如 GPU)

为满足安全、合规性或延迟要求,模型部署必须在本地
- 云中的 Azure 托管计算
- 本地的客户托管 Kubernetes
- 混合模式下的全自动机器学习操作,包括在云端和本地之间无缝转换的训练和模型部署步骤
- 可重复,正确追踪所有资产,根据需要重新训练模型,并在重新训练后自动更新部署
在本地和云中训练模型,同时部署到云和本地 将本地投资与云可伸缩性相结合

将云和本地计算集成到单个控制面板下

访问云中数据的单一事实来源,并在本地复制(延迟使用或主动复制)

云计算主要用于本地资源不可用(正在使用或维护)或不满足特定硬件要求 (GPU) 的情况
- 云中的 Azure 托管计算。
本地的客户托管 Kubernetes
- 混合模式下的全自动机器学习操作,包括在云端和本地之间无缝转换的训练和模型部署步骤
- 可重复,正确追踪所有资产,根据需要重新训练模型,并在重新训练后自动更新部署
在本地训练模型,在云中部署模型 本地 在本地存储数据以满足数据驻留要求

在云中部署模型,以实现全球服务访问或实现规模和吞吐量方面的计算弹性
- 云中的 Azure 托管计算
- 本地的客户托管 Kubernetes
- 混合模式下的全自动机器学习操作,包括在云端和本地之间无缝转换的训练和模型部署步骤
- 可重复,正确追踪所有资产,根据需要重新训练模型,并在重新训练后自动更新部署
在 Azure 中自带 AKS 获取更多的安全性和控制

建立所有专用 IP 机器学习,以防数据外泄
- Azure 虚拟网络支持的 AKS 群集
- Azure 机器学习工作区和相关资源的同一虚拟网络中的专用终结点
完全自动化的机器学习运营
本地完整机器学习生命周期 本地 保护敏感数据或专有 IP,例如机器学习模型、代码和脚本 - 本地出站代理服务器连接
- 指向 Azure 资源的 Azure ExpressRoute 和 Azure Arc 专用链接
- 本地的客户托管 Kubernetes
- 完全自动化的机器学习运营

Kubernetes 计算目标的限制

Azure 机器学习工作负载中的 KubernetesCompute 目标(训练和模型推理)具有以下限制:

  • 无法保证 Azure 机器学习中预览功能的可用性
  • Kubernetes 联机终结点不支持模型目录和注册表中的模型(包括基础模型)

本部分提供了使用 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 上部署模型。 KubernetesComputeAksCompute 目标都支持 AKS 集成,但支持方法不同。 下表对主要差异进行了汇总:

功能 AksCompute(旧版) KubernetesCompute
使用 CLI/SDK v1
使用 CLI/SDK v2
设置训练
应用实时推理
应用批量推理
访问实时推理的新功能 未开发新功能 可用的活动路线图

考虑到这些差异,以及使用 CLI/SDK v2 的总体机器学习演变,建议的方法是使用 Kubernetes 计算目标 (KubernetesCompute) 开展 AKS 模型部署。

有关详细信息,请阅读以下文章:

机器学习示例

机器学习示例位于 GitHub 上的 Azure 机器学习 (azureml-examples) 存储库中。 在任意示例中,将计算目标名称替换为 Kubernetes 计算目标,然后运行示例。

部分选项如下: