65.9K
CodeProject 正在变化。 阅读更多。
Home

Azure Arc 机器学习(第一部分):为什么选择 Azure Arc 进行机器学习?

starIconstarIconstarIconstarIconstarIcon

5.00/5 (3投票s)

2022 年 2 月 2 日

CPOL

7分钟阅读

viewsIcon

5654

downloadIcon

66

在本文中,我们将本地 Kubernetes 集群连接到 Azure Arc。

在过去的几年里,数字化的普及曲线在所有行业中都在加速。组织正在开发云原生模式,以增强数字能力,缩短价值实现时间,降低成本,并提高敏捷性。然而,实施机器学习运维 (MLOps) 模型仍然具有挑战性,因为现有工具不支持新的云原生模式。

为了将云原生开发和基础设施的灵活性带入机器学习 (ML) 应用,Kubernetes 正在成为大多数企业的热门选择。它有助于高效地运行、编排和扩展模型,使其独立于其依赖项。Kubernetes 使您能够在任何硬件上运行机器学习服务,而不会出现兼容性问题,也不会每次都更新或替换依赖项。

虽然有很多用于 Kubernetes 的开源 ML 工具,但设置基础设施和部署数据科学生产力工具和框架需要大量的时间和精力。此外,在数据中心、边缘和多云环境中预配、管理和维护这些 Kubernetes 集群会带来新的兼容性、网络和其他挑战。

为了应对这些挑战,微软提供了 Azure Arc 启用的机器学习。这种方法通过 Kubernetes 将 Azure 机器学习 (AML) 服务的开放式架构带到任何基础设施。Azure Arc 启用的机器学习允许我们将 AML 部署能力扩展到我们选择的硬件上的 Kubernetes 集群。这种灵活性有助于我们在混合云环境和本地环境中部署和提供模型。

AML 使我们能够在靠近管理数据的地方训练机器学习模型,同时确保云和边缘之间的一致性。其设计有助于 IT 运维人员利用原生的 Kubernetes 概念来操作、使用和优化 ML 设置。由于 IT 运维人员负责设置,ML 工程师和数据科学家可以与 ML 工具协同工作,专注于训练模型。

本文是三部分系列的第一部分,它提供了动手教程,教您如何使用 Arc 启用的 Kubernetes 集群来运行和管理 Azure ML 工作负载。

本文解释了为什么 ML 和 MLOps 从业者希望将 Azure Arc 用于机器学习。它探讨了关键场景,包括那些喜欢 AML 提供的简化工作流但又希望运行本地 GPU 启用机器集群来训练 ML 模型的公司。其他公司可能更喜欢在云中工作,但合规性要求他们将训练数据和模型保留在本地。

最后,本文演示了如何部署 AML Arc Kubernetes 扩展并从 Azure ML 门户连接到集群。

探索用例

在实际的机器学习工作负载中,各种场景对于训练和部署 ML 解决方案具有不同的基础设施要求。金融行业等受监管的行业必须遵守安全标准,并将训练数据和模型保留在其本地。银行经常运行欺诈交易和信用风险的风险建模预测,并严重依赖机器学习模型。

医疗保健组织的情况也一样,它们依赖机器学习来处理医疗影像分析和诊断等重要操作。合规性要求这些组织将训练数据和模型保留在本地。然而,这些解决方案通常容量有限,需要在云上运行更强大的硬件。

在另一个例子中,物联网 (IoT) 传感器生成需要实时分析的 PB 级数据。将这些数据上传到云端进行分析会引入不必要的开销,而我们可以通过使用本地基础设施来避免这种情况。

在这些场景中,公司可能希望利用基于云的 ML 服务(如 AML),因为它简化并加速了数据分析以及构建和管理 ML 项目生命周期的过程。然后,公司可以同时运行本地 GPU 启用机器集群来训练 ML 模型。在这种场景下有效部署 ML 解决方案需要混合解决方案,以确保云和本地基础设施之间的一致性和兼容性。

使用 Arc 启用的 ML 最显著的优点之一是,组织不再需要在 AML 和本地之间进行选择。相反,它鼓励组织利用现有的本地基础设施在本地训练模型,然后无缝地在本地、云或边缘运行推理。它促进了现场数据训练,没有移动限制,并且随着数据和条件的变化,模型可以自行重新训练,以达到并保持所需的准确性。

现在我们已经了解了 Arc 启用的 ML 及其用例,让我们亲手尝试一下,体验微软如何简化机器学习的 Kubernetes 环境的管理和使用。

设置环境

要运行 Azure Arc 启用的 ML,我们首先必须在本地配置 Azure Arc 启用的 Kubernetes。

注意: Kubernetes 集群应运行在具有四个 CPU 和 8 GB RAM 的机器上,才能运行 Arc 启用的 ML。本文我使用了一台拥有六个核心和 16 GB 内存的 MacBook Pro。对于任何其他机器,设置 Arc 启用的 Kubernetes 集群的过程都应该类似。此外,还需要 Docker

首先,我们必须拥有一个有效的 Azure 帐户。我们将使用 Docker 运行一个本地单节点 Kubernetes 集群,并将其连接到 Azure Arc。

使用 KIND 创建本地 Kubernetes 集群

要在 Docker 中运行 Kubernetes 集群,我们首先必须安装 KIND (Kubernetes in Docker)

在 macOS 上

$ brew install kind

在 Linux 上

$ curl –Lo ./kind https://kind.kubernetes.ac.cn/dl/v0.11.1/kind-linux-amd64
$ chmod +x ./kind

使用 brew 安装 KIND 会自动将其添加到系统的 PATH 环境变量中。但是,如果我们使用 Linux 或使用二进制文件安装 KIND,我们必须确保将其添加到 PATH 变量。

安装成功后,我们按如下方式创建一个集群。

$ kind create cluster

安装 Helm

接下来,我们安装 Helm,以帮助我们有效地管理 Kubernetes 应用程序。

在 macOS 上

$ brew install helm

在 Linux 上

$ curl https://baltocdn.com/helm/signing.asc | sudo apt-key add -$ sudo apt-get install apt-transport-https --yes$ echo "deb https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list$ sudo apt-get update$ sudo apt-get install helm

安装 Helm 后,我们可以将本地集群注册为 Azure Arc 启用的 Kubernetes 资源。

使用 Azure Arc 连接 Kubernetes 集群

要将我们的 Kubernetes 集群连接到 Azure Arc,我们首先必须在我们的系统上安装 Azure CLI

在 macOS 上

$ brew install azure-cli

在 Linux 上

$ curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash

安装 CLI 后,我们在 CLI 中安装 connectedk8s 扩展。

$ az extension add --name connectedk8s

在我们继续之前,让我们按如下方式登录到我们的 Azure 帐户。

$ az login

执行此命令会在浏览器中打开 Azure 门户以继续登录。登录后,它会在终端上显示我们的帐户详细信息,包括订阅 ID。

我们在以下命令中使用订阅 ID 来设置我们的 Azure 订阅。

$ az account set --subscription {SubscriptionID}

下一步是为 Azure Arc 启用的 Kubernetes 注册提供程序。我们执行以下命令。

$ az provider register --namespace Microsoft.Kubernetes
$ az provider register --namespace Microsoft.KubernetesConfiguration
$ az provider register --namespace Microsoft.ExtendedLocation

注册可能需要几分钟时间,具体取决于网络。我们可以使用以下命令监视注册过程。

$ az provider show -n Microsoft.Kubernetes -o table 
$ az provider show -n Microsoft.KubernetesConfiguration -o table 
$ az provider show -n Microsoft.ExtendedLocation -o table

注册完成后,这些命名空间中 RegistrationState 变量的值将更改为 Registered。完成后,我们创建一个资源组。

$ az group create --name AzureArcML --location EastUS

最后但同样重要的是,我们通过执行以下命令将之前创建的 Kubernetes 集群连接到 Azure 资源。

$ sudo az connectedk8s connect --name ArcML --resource-group AzureArcML

上面的命令完成后,Azure Arc 组件将在我们的集群中作为 Pod 运行。我们可以按如下方式查看这些 Pod。

$ sudo kubectl get pod --namespace azure-arc

在集群中安装 Arc 启用的 ML 扩展

现在 Azure Arc 组件已成功运行在我们的集群中,我们可以将 Arc 启用的 ML 扩展 Microsoft.AzureML.Kubernetes 安装到我们的集群中。但首先,让我们按如下方式安装 Kubernetes 扩展。

$ az extension add --name k8s-extension

完成后,我们像这样安装 Arc 启用的 ML 扩展。

$ az k8s-extension create --name arcml-extension \
  --extension-type Microsoft.AzureML.Kubernetes \
  --cluster-type connectedClusters \
  --cluster-name ArcML \
  --config enableTraining=True \
  --resource-group AzureArcML \
  --scope cluster

此命令还会创建 Azure 服务总线命名空间和 Relay 资源,它们有助于 AML 工作区与我们的本地集群之间的通信。安装完成后,我们将在本地集群中看到以下 Pod 正在运行。

$ sudo kubectl get pod --namespace azureml

此时,我们所有的 Pod 都应该处于运行状态。当我们转到 Azure 门户时,可以看到我们资源组中的所有资源。

单击 ArcML 以查看 Kubernetes 集群。

请注意,它显示 已连接 状态,表明我们的本地集群已成功连接。

后续步骤

本文讨论了 Azure Arc 启用的 ML 及其在各种场景中的优势。首先,我们创建了一个本地 Kubernetes 集群,并通过 Azure Arc 连接了该集群。接下来,我们将学习在 AML 中使用 TensorFlow 训练 ML 图像分类模型。请继续阅读本系列的第二篇文章,了解 如何在本地训练 ML 模型

要了解有关如何配置 Azure Kubernetes Service (AKS) 和 Azure Arc 启用的 Kubernetes 集群以进行机器学习工作负载的训练和推理的更多信息,请查看 配置用于机器学习的 Kubernetes 集群

© . All rights reserved.