你当前正在访问 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 中,Azure 机器学习引入了一个新的计算目标 - Kubernetes 计算目标。 可以轻松启用现有的 Azure Kubernetes 服务 (AKS) 群集或启用了 Azure Arc 的 Kubernetes (Arc Kubernetes) 群集,将其设为 Azure 机器学习中的 Kubenetes 计算目标,并用于训练或部署模型。

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

本文介绍:

  • 工作原理
  • 使用方案
  • 建议的最佳做法
  • KubernetesCompute 和旧版 AksCompute

工作原理

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

  • Azure 中的 AKS 群集。 在 Azure 中有了你的自托管 AKS 群集,可以获得用于满足合规性要求的安全性和控制,以及在管理团队 ML 工作负载方面的灵活性。
  • Azure 外的 Arc Kubernetes 群集。 借助 Arc Kubernetes 群集,可以在任何本地基础结构、跨多云的基础结构或边缘基础结构中训练或部署模型。

通过直接在 AKS 或 Arc Kubernetes 群集上部署群集扩展,Azure 机器学习无缝支持 Kubernetes 群集运行训练或推理工作负载。 通过以下简单步骤,可以轻松地为 Azure 机器学习工作负载启用和使用现有的 Kubernetes 群集:

  1. 准备 Azure Kubernetes 服务群集Arc Kubernetes 群集
  2. 部署 Azure 机器学习扩展
  3. 将 Kubernetes 群集附加到 Azure 机器学习工作区
  4. 使用 CLI v2、SDK v2 和 Studio UI 中的 Kubernetes 计算目标。

IT 运营团队。 IT 运营团队负责前 3 个步骤:准备 AKS 或 Arc Kubernetes 群集,部署 Azure 机器学习群集扩展,以及将 Kubernetes 群集附加到 Azure 机器学习工作区。 除了这些基本的计算设置步骤之外,IT 运营团队还使用 Azure CLI 或 kubectl 等常用工具来为数据科学团队处理以下任务:

  • 网络和安全配置,例如出站代理服务器连接或 Azure 防火墙配置、推理路由器 (azureml-fe) 设置、SSL/TLS 终止和虚拟网络配置。
  • 为各种 ML 工作负载方案创建和管理实例类型,以高效利用计算资源。
  • 解决与 Kubernetes 群集相关的工作负载问题。

数据科学团队。 IT 运营团队完成计算设置和创建计算目标后,数据科学团队可以在 Azure 机器学习工作区中发现可用计算目标和实例类型的列表。 这些计算资源可用于训练或推理工作负载。 数据科学团队使用其首选工具或 API 指定计算目标名称和实例类型名称。 例如,这些名称可以是 Azure 机器学习 CLI v2、Python SDK v2 或 Studio UI。

Kubernetes 使用方案

借助 Arc Kubernetes 群集,可以使用 Kubernetes 在任何本地基础结构和跨多云基础结构中生成、训练和部署模型。 这可开启一些以前在云设置环境中不可能实现的全新使用模式。 下表提供了 Azure 机器学习 Kubernetes 计算启用的全新使用模式的摘要:

使用模式 数据位置 动机 基础结构设置和 Azure 机器学习实现
在云中训练模型,在本地部署模型 使用云计算。 可能由于弹性计算需求,也可能由于 GPU 等特殊硬件。
由于安全性、合规性或延迟要求,模型必须在本地部署
1. 云中的 Azure 托管计算。
2. 本地的客户托管 Kubernetes。
3. 混合模式下的全自动化 MLOps,包括从云无缝转换到本地的训练和模型部署步骤,反之亦然。
4. 可重复,且可正确跟踪所有资产。 必要时重新训练模型,重新训练后自动更新模型部署。
在本地和云中训练模型,同时部署到云和本地 希望将本地投资与云可伸缩性相结合的组织。 将云和本地计算集成到单个控制面板下。 数据的单一真实来源位于云端,可以复制到本地(即延迟使用或主动复制)。 云计算主要用于本地资源不可用(在使用中、维护中)或没有特定硬件要求 (GPU) 的情况。 1. 云中的 Azure 托管计算。
2. 本地的客户托管 Kubernetes。
3. 混合模式下的全自动化 MLOps,包括从云无缝转换到本地的训练和模型部署步骤,反之亦然。
4. 可重复,且可正确跟踪所有资产。 必要时重新训练模型,重新训练后自动更新模型部署。
在本地训练模型,在云中部署模型 本地 由于数据驻留要求,数据必须保留在本地。
在云中部署模型,以实现全球服务访问或实现规模和吞吐量方面的计算弹性。
1. 云中的 Azure 托管计算。
2. 本地的客户托管 Kubernetes。
3. 混合模式下的全自动化 MLOps,包括从云无缝转换到本地的训练和模型部署步骤,反之亦然。
4. 可重复,且可正确跟踪所有资产。 必要时重新训练模型,重新训练后自动更新模型部署。
在 Azure 中自带 AKS 更多的安全性和控制。
所有专用 IP 机器学习,以防数据外泄。
1.Azure 虚拟网络支持的 AKS 群集。
2.在同一虚拟网络中为 Azure 机器学习工作区及其关联资源创建专用终结点。
3. 全自动化 MLOps。
本地完整 ML 生命周期 本地 保护敏感数据或专有 IP,例如 ML 模型和代码/脚本。 1. 本地出站代理服务器连接。
2. 指向 Azure 资源的 Azure ExpressRoute 和 Azure Arc 专用链接。
3. 本地的客户托管 Kubernetes。
4. 全自动化 MLOps。

限制

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

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

IT 运营团队与数据科学团队之间的职责分离。 如上一部分所述,为 ML 工作负载管理自己的计算和基础结构是一项复杂的任务。 最好由 IT 运营团队完成该任务,这样数据科学团队就可以专注于 ML 模型以提高组织效率。

为各种 ML 工作负载方案创建和管理实例类型。 每个 ML 工作负载使用不同的计算资源量,例如 CPU/GPU 和内存。 Azure 机器学习将实例类型实现为具有 nodeSelector 和资源请求/限制属性的 Kubernetes 自定义资源定义 (CRD)。 借助精心策划的实例类型列表,IT 运营可以针对特定节点上 ML 工作负载并高效管理计算资源利用率。

多个 Azure 机器学习工作区共享同一个 Kubernetes 群集。 可以将 Kubernetes 群集多次附加到同一个 Azure 机器学习工作区或不同的 Azure 机器学习工作区,在一个工作区或多个工作区中创建多个计算目标。 由于许多客户围绕 Azure 机器学习工作区来组织数据科学项目,因此多个数据科学项目现在可以共享同一个 Kubernetes 群集。 这大大减少了 ML 基础结构管理开销以及 IT 成本。

使用 Kubernetes 命名空间进行团队/项目工作负载隔离。 将 Kubernetes 群集附加到 Azure 机器学习工作区时,可以为计算目标指定 Kubernetes 命名空间。 计算目标运行的所有工作负载都将放置在指定的命名空间下。

KubernetesCompute 和旧版 AksCompute

借助 Azure 机器学习 CLI/Python SDK v1,可以使用 AksCompute 目标在 AKS 上部署模型。 KubernetesCompute 目标和 AksCompute 目标都支持 AKS 集成,但支持方式不同。 下表显示了两种方法的重要差异:

功能 AKS 与 AksCompute 的集成(旧版) AKS 与 KubernetesCompute 的集成
CLI/SDK v1
CLI/SDK v2
培训
实时推理
批量推理
实时推理新功能 未开发新功能 活动路线图

由于这些重要差异以及整个 Azure 机器学习转变为使用 SDK/CLI v2,如果你决定使用 AKS 部署模型,Azure 机器学习建议使用 Kubernetes 计算目标来进行。

其他资源

示例

所有 Azure 机器学习示例都可以在 https://github.com/Azure/azureml-examples.git 中找到。

对于任何 Azure 机器学习示例,只需将计算目标名称更新为 Kubernetes 计算目标,即可完成。

后续步骤