Azure Machine Learning での Kubernetes コンピューティング先の概要
適用対象:Azure CLI ml extension v2 (現行)
Python SDK azure-ai-ml v2 (現行)
Azure Machine Learning CLI/Python SDK v2 では、Azure Machine Learning によって新しいコンピューティング先である Kubernetes コンピューティング先が導入されました。 簡単に既存の Azure Kubernetes Service (AKS) クラスターまたは Azure Arc 対応 Kubernetes (Arc Kubernetes) クラスターを Azure Machine Learning の Kubernetes コンピューティング先にし、それを使用してモデルのトレーニングやデプロイを行うことができます。
この記事では、次の内容について説明します。
- しくみ
- 使用シナリオ
- 推奨されるベスト プラクティス
- KubernetesCompute とレガシ AksCompute
しくみ
2 種類の Kubernetes クラスターが、Azure Machine Learning Kubernetes コンピューティングでサポートされています。
- Azure のAKS クラスター。 Azure で自己管理型 AKS クラスターを使用すると、コンプライアンス要件を満たすためのセキュリティおよび制御を得ることができ、チームの ML ワークロードを柔軟に管理できます。
- Azure の外部にある Arc Kubernetes クラスター。 Arc Kubernetes クラスターを使用すると、オンプレミス、マルチクラウド全体、またはエッジの任意のインフラストラクチャでモデルをトレーニングまたはデプロイできます。
AKS または Arc Kubernetes クラスターに簡単なクラスター拡張機能をデプロイすれば、Kubernetes クラスターはトレーニングや推論ワークロードを実行するために Azure Machine Learning でシームレスにサポートされます。 次の簡単な手順で、Azure Machine Learning ワークロード用に既存の Kubernetes クラスターを簡単に有効にして使用できます。
- Azure Kubernetes Service クラスターまたは Arc Kubernetes クラスターを準備します。
- Azure Machine Learning 拡張機能をデプロイします。
- Kubernetes クラスターを Azure Machine Learning ワークスペースにアタッチします。
- CLI v2、SDK v2、Studio UI から Kubernetes コンピューティング先を使用します。
IT 運用チーム. IT 運用チームは、最初の 3 つの手順 (AKS または Arc Kubernetes クラスターの準備、Azure Machine Learning クラスター拡張機能のデプロイ、Kubernetes クラスターの Azure Machine Learning ワークスペースへのアタッチ) を担当します。 これらの重要なコンピューティング設定手順に加えて、IT 運用チームは、Azure CLI や kubectl などの使い慣れたツールを使用して、データ サイエンス チーム用に次のタスクも処理します。
- 送信プロキシ サーバー接続や Azure ファイアウォール構成、推論ルーター (azureml-fe) の設定、SSL/TLS 終端、仮想ネットワーク構成などのネットワークとセキュリティの構成。
- さまざまな ML ワークロード シナリオのインスタンスの種類の作成および管理、効率的なコンピューティング リソース使用率の実現。
- Kubernetes クラスターに関連するワークロードの問題のトラブルシューティング。
データ サイエンス チーム. IT 運用チームがコンピューティングの設定とコンピューティング先の作成を完了すると、データ サイエンス チームは Azure Machine Learning ワークスペースで使用可能なコンピューティング先とインスタンスの種類の一覧を検出できます。 これらのコンピューティング リソースは、トレーニングや推論ワークロードに使用できます。 データ サイエンスは、推奨されるツールまたは API を使ってコンピューティング ターゲット名とインスタンスの種類名を指定します。 たとえば、Azure Machine Learning CLI v2、Python SDK v2、Studio UI などの名前です。
Kubernetes の使用シナリオ
Arc Kubernetes クラスターを使用すると、Kubernetes を使用して、オンプレミスおよびマルチクラウドにおける任意のインフラストラクチャでモデルを構築、トレーニング、デプロイできます。 これにより、クラウド設定環境では以前は不可能だった、いくつかの新しい使用パターンが実現します。 次の表に、Azure Machine Learning Kubernetes コンピューティングで実現する新しい使用パターンの概要を示します。
使用パターン | データの場所 | 目的 | インフラの設定および Azure Machine Learning の実装 |
---|---|---|---|
クラウドでモデルをトレーニングし、オンプレミスでモデルをデプロイする | クラウド | クラウド コンピューティングを利用します。 これは、弾力性の高いコンピューティングのニーズまたは GPU などの特別なハードウェアのために行います。 セキュリティ、コンプライアンス、または待ち時間の要件により、モデルをオンプレミスにデプロイする必要があります |
1. クラウドでの Azure マネージド コンピューティング。 2. オンプレミスのカスタマー マネージド Kubernetes。 3. クラウドからオンプレミスに、またはその逆方向にシームレスに移行するトレーニングとモデル デプロイ手順を含む、ハイブリッド モードでの完全に自動化された MLOps。 4. すべての資産が適切に追跡され、反復可能。 必要に応じてモデルを再トレーニングし、モデル デプロイは再トレーニング後に自動的に更新されます。 |
オンプレミスとクラウドでモデルをトレーニングし、クラウドとオンプレミスの両方にデプロイする | クラウド | オンプレミスへの投資とクラウドのスケーラビリティを組み合わせたい組織。 クラウドとオンプレミスのコンピューティングを 1 つのウィンドウにまとめます。 データの信頼できる唯一の情報源はクラウドにあり、オンプレミスにレプリケートできます (つまり、使用状況に応じて後で、または事前に)。 クラウド コンピューティングが主に使われるのは、オンプレミス リソースが使用できない場合 (使用中、メンテナンス中)、または特定のハードウェア要件 (GPU) がない場合です。 | 1. クラウドでの Azure マネージド コンピューティング。 2. オンプレミスのカスタマー マネージド Kubernetes。 3. クラウドからオンプレミスに、またはその逆方向にシームレスに移行するトレーニングとモデル デプロイ手順を含む、ハイブリッド モードでの完全に自動化された MLOps。 4. すべての資産が適切に追跡され、反復可能。 必要に応じてモデルを再トレーニングし、モデル デプロイは再トレーニング後に自動的に更新されます。 |
オンプレミスでモデルをトレーニングし、クラウドでモデルをデプロイする | オンプレミス | データ所在地の要件により、データはオンプレミスのままである必要があります。 グローバル サービス アクセス用、またはスケールとスループットのためのコンピューティングの弾力性のために、クラウドにモデルをデプロイします。 |
1. クラウドでの Azure マネージド コンピューティング。 2. オンプレミスのカスタマー マネージド Kubernetes。 3. クラウドからオンプレミスに、またはその逆方向にシームレスに移行するトレーニングとモデル デプロイ手順を含む、ハイブリッド モードでの完全に自動化された MLOps。 4. すべての資産が適切に追跡され、反復可能。 必要に応じてモデルを再トレーニングし、モデル デプロイは再トレーニング後に自動的に更新されます。 |
Azure に独自の AKS を持ち込む | クラウド | セキュリティと制御を強化します。 データ流出を防ぐためにすべてプライベート IP で機械学習します。 |
1.Azure 仮想ネットワークの背後にある AKS クラスター。 2.Azure Machine Learning ワークスペースとそれに関連するリソース用に同じ仮想ネットワークにプライベート エンドポイントを作成します。 3. 完全に自動化された MLOps。 |
オンプレミスの完全な ML ライフサイクル | オンプレミス | ML モデルやコード/スクリプトなどの機密データまたは独自の IP をセキュリティで保護します。 | 1. オンプレミスの送信プロキシ サーバー接続。 2. Azure ExpressRoute と Azure Arc の Azure リソースへのプライベート リンク。 3. オンプレミスのカスタマー マネージド Kubernetes。 4. 完全に自動化された MLOps。 |
制限事項
Azure Machine Learning ワークロード (トレーニングとモデル推論) の KubernetesCompute
ターゲットには、次の制限があります:
- Azure Machine Learning でのプレビュー機能の可用性は保証されません。
- 特定された制限: モデル カタログとレジストリのモデル (基本モデルを含む) は、Kubernetes オンライン エンドポイントではサポートされていません。
推奨されるベスト プラクティス
IT 運用チームとデータ サイエンス チーム間で責任を分担する。 前のセクションで説明したように、ML ワークロード用に独自のコンピューティングとインフラストラクチャを管理するのは複雑なタスクです。 データサイエンス チームが組織を効率化する ML モデルに集中できるように、IT 運用チームがこれを担当するのが最善です。
さまざまな ML ワークロード シナリオ用のインスタンスの種類を作成し、管理する。 各 ML ワークロードには、CPU、GPU、メモリなど、さまざまな量のコンピューティング リソースが使用されます。 Azure Machine Learning では、nodeSelector と、リソース要求または制限のプロパティを使用して、Kubernetes カスタム リソース定義 (CRD) としてインスタンスの種類を実装します。 インスタンスの種類の一覧を慎重にキュレーションすることで、IT 運用で特定のノードでの ML ワークロードをターゲットにし、コンピューティング リソースの使用率を効率的に管理できます。
複数の Azure Machine Learning ワークスペースで同じ Kubernetes クラスターを共有する。 Kubernetes クラスターを同じ Azure Machine Learning ワークスペースまたは異なる Azure Machine Learning ワークスペースに複数回アタッチし、1 つのワークスペースまたは複数のワークスペースに複数のコンピューティング ターゲットを作成できます。 多くのお客様が Azure Machine Learning ワークスペースを中心にデータ サイエンス プロジェクトを整理しているため、複数のデータ サイエンス プロジェクトで同じ Kubernetes クラスターを共有できるようになりました。 これにより、ML インフラストラクチャ管理のオーバーヘッドが大幅に減少し、IT コストが削減されます。
Kubernetes 名前空間を使用してチームまたはプロジェクトのワークロードを分離する。 Kubernetes クラスターを Azure Machine Learning ワークスペースにアタッチすると、コンピューティング先用の Kubernetes 名前空間を指定できます。 コンピューティング先によって実行されるすべてのワークロードは、指定された名前空間に配置されます。
KubernetesCompute とレガシ AksCompute
Azure Machine Learning CLI/Python SDK v1 では、AksCompute ターゲットを使用して AKS にモデルをデプロイできます。 KubernetesCompute ターゲットと AksCompute ターゲットはどちらも AKS 統合をサポートしていますが、サポートの形は異なります。 その主な違いを次の表に示します。
機能 | AKS と AksCompute の統合 (レガシ) | AKS と KubernetesCompute の統合 |
---|---|---|
CLI/SDK v1 | はい | いいえ |
CLI/SDK v2 | いいえ | はい |
トレーニング | いいえ | はい |
リアルタイムの推論 | はい | はい |
バッチ推論 | いいえ | はい |
リアルタイム推論の新機能 | 新機能の開発なし | アクティブなロードマップ |
これらの主な違いや、SDK/CLI v2 を使用するように Azure Machine Learning 全体が進化したことによって、モデル デプロイに AKS を使用する場合、Azure Machine Learning では、Kubernetes コンピューティング先を使用してモデルをデプロイすることをお勧めします。
その他のリソース
使用例
すべての Azure Machine Learning の例は https://github.com/Azure/azureml-examples.git にあります。
Azure Machine Learning の例では、コンピューティング先名を 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