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