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 计算目标,并用于训练或部署模型。
本文介绍:
- 工作原理
- 使用方案
- 建议的最佳做法
- KubernetesCompute 和旧版 AksCompute
工作原理
Azure 机器学习 Kubernetes 计算支持两种类型的 Kubernetes 群集:
- Azure 中的 AKS 群集。 在 Azure 中有了你的自托管 AKS 群集,可以获得用于满足合规性要求的安全性和控制,以及在管理团队 ML 工作负载方面的灵活性。
通过直接在 AKS 上部署群集扩展,Azure 机器学习无缝支持 Kubernetes 群集运行训练或推理工作负载。 通过以下简单步骤,可以轻松地为 Azure 机器学习工作负载启用和使用现有的 Kubernetes 群集:
- 准备 Azure Kubernetes 服务群集。
- 部署 Azure 机器学习扩展。
- 将 Kubernetes 群集附加到 Azure 机器学习工作区。
- 使用 CLI v2、SDK v2 和 Studio UI 中的 Kubernetes 计算目标。
IT 运营团队。 IT 运营团队负责前 3 个步骤:准备 AKS,部署 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。
建议的最佳做法
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 计算目标,即可完成。
- 使用 CLI v2 探索训练作业示例 - https://github.com/Azure/azureml-examples/tree/main/cli/jobs
- 使用 CLI v2 通过联机终结点示例探索模型部署 - https://github.com/Azure/azureml-examples/tree/main/cli/endpoints/online/kubernetes
- 使用 CLI v2 探索批处理终结点示例 - https://github.com/Azure/azureml-examples/tree/main/cli/endpoints/batch
- 使用 SDK v2 探索训练作业示例 - https://github.com/Azure/azureml-examples/tree/main/sdk/python/jobs
- 使用 SDK v2 通过联机终结点示例探索模型部署 - https://github.com/Azure/azureml-examples/tree/main/sdk/python/endpoints/online/kubernetes