AKS または Arc Kubernetes クラスターでトレーニング ジョブまたは推論ワークロードを実行できるようにするには、まず AKS または Arc Kubernetes クラスターに Azure Machine Learning 拡張機能をデプロイする必要があります。 Azure Machine Learning 拡張機能は AKS 用のクラスター拡張機能および Arc Kubernetes 用のクラスター拡張機能に基づいて構築されており、そのライフサイクルは Azure CLI k8s-extension を使用して簡単に管理できます。
この記事では、次の内容について説明します。
- 前提条件
- 制限事項
- Azure Machine Learning 拡張機能の構成設定を確認する
- Azure Machine Learning 拡張機能のデプロイ シナリオ
- Azure Machine Learning 拡張機能のデプロイを確認する
- Azure Machine Learning 拡張機能のコンポーネントを確認する
- Azure Machine Learning 拡張機能を管理する
前提条件
- AKS クラスターが Azure で実行されている。 クラスター拡張機能を以前に使っていない場合は、KubernetesConfiguration サービス プロバイダーを登録する必要があります。
- または Arc Kubernetes クラスターが稼働している。 「既存の Kubernetes クラスターを Azure Arc に接続する」にある手順に従います。
- クラスターが Azure RedHat OpenShift (ARO) Service クラスターまたは OpenShift Container Platform (OCP) クラスターの場合は、「Kubernetes クラスターの構成に関するリファレンス」の記事に記載されている他の前提条件の手順を満たす必要があります。
- 運用環境では、Kubernetes クラスターには少なくとも 4 つの vCPU コアと 14 GB のメモリが必要です。 リソースの詳細とクラスター サイズの推奨事項の詳細は、「推奨されるリソース計画」を参照してください。
- アウトバウンド プロキシ サーバーまたはファイアウォールの内側で実行するクラスターには、追加のネットワーク構成が必要です。
- バージョン 2.24.0 以降の Azure CLI をインストールするか、これにアップグレードします。
- バージョン 1.2.3 以降の Azure CLI 拡張機能
k8s-extension
をインストールするか、これにアップグレードします。
制限事項
- AKS でのサービス プリンシパルの使用は、Azure Machine Learning ではサポートされていません。 AKS クラスターでは、代わりにマネージド ID を使う必要があります。 システム割り当てマネージド ID とユーザー割り当てマネージド ID の両方がサポートされています。 詳細については、「Azure Kubernetes Service でマネージド ID を使用する」を参照してください。
- AKS クラスターで使用されるサービス プリンシパルをマネージド ID を使用するように変換してから拡張機能をインストールする場合、すべてのノード プールは、直接更新するのではなく、削除して再作成する必要があります。
- AKS のローカル アカウントを無効にすることは、Azure Machine Learning ではサポートされていません。 AKS クラスターをデプロイすると、既定でローカル アカウントが有効になります。
- AKS クラスターに API サーバーへのアクセスが有効な承認済みの IP 範囲がある場合は、AKS クラスターに対して Azure Machine Learning コントロール プレーンの IP 範囲を有効にします。 Azure Machine Learning コントロール プレーンは、ペアになっているリージョンにまたがってデプロイされます。 API サーバーにアクセスできないと、機械学習ポッドをデプロイできません。 AKS クラスターで IP 範囲を有効にする場合、ペアになっているリージョンの両方に対して IP 範囲を使用します。
- Azure Machine Learning では、AKS クラスターのサブスクリプション間のアタッチはサポートされていません。 AKS クラスターが別のサブスクリプションにある場合は、最初に Azure-Arc に接続し、Azure Machine Learning ワークスペースと同じサブスクリプションで指定する必要があります。
- Azure Machine Learning では、AKS のすべてのプレビュー ステージ機能のサポートが保証されていません。 たとえば、Microsoft Entra ポッド ID はサポートされていません。
- Azure Machine Learning AKS v1 ドキュメントの手順に従って AKS を推論クラスターとして作成またはアタッチした場合は、次の手順に進む前に、以下のリンクを使って、レガシ azureml-fe 関連リソースをクリーンアップしてください。
Azure Machine Learning 拡張機能の構成設定を確認する
Azure Machine Learning CLI コマンド k8s-extension create
を使用して、Azure Machine Learning 拡張機能をデプロイできます。 CLI k8s-extension create
によって、key=value
または --config
パラメーターを使用して、一連の構成設定を --config-protected
形式で指定できます。 Azure Machine Learning 拡張機能のデプロイ中に指定される使用可能な構成設定の一覧を次に示します。
構成設定のキー名 | 説明 | トレーニング | 推論 | トレーニングと推論 |
---|---|---|---|---|
enableTraining |
True または False 、既定値 False . Machine Learning モデルのトレーニングとバッチ スコアリングのサポートを含む Azure Machine Learning 拡張機能のデプロイの場合は、 に設定するTrue 。 |
✓ | 該当なし | ✓ |
enableInference |
True または False 、既定値 False . Machine Learning 推論サポートを含む Azure Machine Learning 拡張機能のデプロイの場合は、 に設定するTrue 。 |
該当なし | ✓ | ✓ |
allowInsecureConnections |
True または False 、既定値 False . 開発またはテストの目的で推論 HTTP エンドポイントを使用するには、 に設定することがTrue 。 |
該当なし | 省略可能 | 省略可能 |
inferenceRouterServiceType |
loadBalancer 、nodePort または clusterIP 。 の場合はenableInference=True 。 |
該当なし | ✓ | ✓ |
internalLoadBalancerProvider |
現在、この構成は Azure Kubernetes Service (AKS) クラスターにのみ適用されます。 推論ルーターで内部ロード バランサーを使用できるようにするには、azure に設定します。 |
該当なし | 省略可能 | 省略可能 |
sslSecret |
azureml 名前空間内の Kubernetes シークレットの名前。 この構成を使用して格納する cert.pem (PEM でエンコードされた TLS/SSL 証明書) と key.pem (PEM でエンコードされた TLS/SSL キー) は、allowInsecureConnections が False に設定されているときの推論 HTTPS エンドポイントのサポートに必要です。 sslSecret のサンプル YAML 定義については、sslSecret の構成に関するページを参照してください。 この構成または sslCertPemFile と sslKeyPemFile の保護された構成設定の組み合わせを使用します。 |
該当なし | 省略可能 | 省略可能 |
sslCname |
TLS/SSL CNAME は推論 HTTPS エンドポイントによって使われます。 の場合はallowInsecureConnections=False |
該当なし | 省略可能 | 省略可能 |
inferenceRouterHA |
True または False 、既定値 True . 既定では、Azure Machine Learning 拡張機能は高可用性を実現するために 3 つの推論ルーター レプリカをデプロイします。これには、クラスター内に少なくとも 3 つのワーカー ノードが必要です。 クラスターのワーカー ノード数が 3 未満の場合は、False に設定されます。この場合、1 つの推論ルーター サービスのみがデプロイされます。 |
該当なし | 省略可能 | 省略可能 |
nodeSelector |
既定では、デプロイされる Kubernetes リソースと機械学習ワークロードはクラスターの 1 つ以上のノードにランダムにデプロイされ、DaemonSet リソースは "すべての" ノードにデプロイされます。 拡張機能のデプロイとトレーニング/推論ワークロードを、ラベル key1=value1 と key2=value2 が付いた特定のノードに制限する場合は、それぞれ nodeSelector.key1=value1 、nodeSelector.key2=value2 を使用します。 |
省略可能 | 省略可能 | 省略可能 |
installNvidiaDevicePlugin |
True または False 、既定値 False . NVIDIA GPU ハードウェアの ML ワークロードには、NVIDIA デバイス プラグインが必要です。 既定では、Kubernetes クラスターに GPU ハードウェアがあるかどうかに関係なく、Azure Machine Learning 拡張機能のデプロイで NVIDIA デバイス プラグインがインストールされません。 ユーザーは、これをインストールするためにこの設定を True に指定できますが、前提条件を満たしていることを確認してください。 |
省略可能 | 省略可能 | 省略可能 |
installPromOp |
True または False 、既定値 True . Azure Machine Learning 拡張機能では、Prometheus を管理するために Prometheus 演算子が必要です。 既存の Prometheus 演算子を再利用するには、False にセットします。 既存の prometheus 演算子の再利用の詳細については、prometheus 演算子の再利用に関する記事を参照してください |
省略可能 | 省略可能 | 省略可能 |
installVolcano |
True または False 、既定値 True . ジョブをスケジュールするには、Azure Machine Learning 拡張機能に volcano スケジューラが必要です。 既存の volcano スケジューラを再利用する場合は False に設定します。 既存の volcano スケジューラの再利用の詳細については、volcano スケジューラの再利用に関する記事を参照してください |
省略可能 | 該当なし | 省略可能 |
installDcgmExporter |
True または False 、既定値 False . Dcgm-exporter では、Azure portal で監視できる Azure Machine Learning ワークロードの GPU メトリックを公開できます。 dcgm-exporter をインストールするには、installDcgmExporter を True に設定します。 ただし、独自の dcgm-exporter を利用する場合は、「DCGM エクスポーター」を参照してください |
省略可能 | 省略可能 | 省略可能 |
構成の保護された設定キー名 | 説明 | トレーニング | 推論 | トレーニングと推論 |
---|---|---|---|---|
sslCertPemFile 、sslKeyPemFile |
allowInsecureConnections が False に設定されている場合に、推論 HTTPS エンドポイントのサポートを含む Azure Machine Learning 拡張機能のデプロイに必要な、(PEM でエンコードされた) TLS/SSL 証明書とキー ファイルへのパス。 注 パス フレーズが保護された PEM ファイルはサポートされていません |
該当なし | 省略可能 | 省略可能 |
構成設定表からわかるように、さまざまな構成設定の組み合わせにより、さまざまな ML ワークロード シナリオに対して Azure Machine Learning 拡張機能をデプロイできます。
- トレーニング ジョブとバッチ推論ワークロードの場合は、
enableTraining=True
を指定します - 推論ワークロードのみの場合は、
enableInference=True
を指定します - すべての種類の ML ワークロードに対して、
enableTraining=True
とenableInference=True
の両方を指定します
リアルタイム推論ワークロード用に Azure Machine Learning 拡張機能をデプロイする予定で、enableInference=True
を指定する必要がある場合は、リアルタイム推論ワークロードに関連する次の構成設定に注意してください。
- リアルタイム推論のサポート用に
azureml-fe
ルーター サービスが必要であり、inferenceRouterServiceType
に対してazureml-fe
の構成設定を指定する必要があります。 次に示すazureml-fe
のいずれかを使ってinferenceRouterServiceType
はデプロイできます。- 「
LoadBalancer
. クラウド プロバイダーのロード バランサーを使ってazureml-fe
を外部に公開します。 この値を指定するには、クラスターがロード バランサーのプロビジョニングをサポートしていることを確認します。 ほとんどのオンプレミス Kubernetes クラスターは、外部ロード バランサーをサポートできないことに注意してください。 - 「
NodePort
. 各ノードの IP 上の静的ポートでazureml-fe
を公開します。 クラスターの外部からazureml-fe
を要求することで、<NodeIP>:<NodePort>
に接続できるようになります。NodePort
を使って、azureml-fe
に対して独自の負荷分散ソリューションと TLS/SSL 終了を設定することもできます。 独自のイングレスを設定する方法の詳細については、「 HTTP または HTTPS 経由で他のイングレス コントローラーと Azure Machine Learning 拡張機能を統合する」を参照してください。 - 「
ClusterIP
. クラスター内部 IP でazureml-fe
を公開し、クラスター内部からのみazureml-fe
に到達できるようにします。 クラスター外部から送信される推論要求をazureml-fe
で処理できるようにするには、独自の負荷分散ソリューションとazureml-fe
の TLS/SSL 終了を設定する必要があります。 独自のイングレスを設定する方法の詳細については、「 HTTP または HTTPS 経由で他のイングレス コントローラーと Azure Machine Learning 拡張機能を統合する」を参照してください。
- 「
azureml-fe
ルーティング サービスの高可用性を確保するために、Azure Machine Learning 拡張機能のデプロイによって、3 ノード以上のクラスターに対してazureml-fe
のレプリカが既定で 3 つ作成されます。 クラスターが 3 ノード未満の場合は、inferenceRouterHA=False
を設定します。- HTTPS を使ってモデル エンドポイントへのアクセスを制限し、クライアントが送信するデータをセキュリティで保護することも検討する必要があります。 この目的のために、
sslSecret
構成設定、またはsslKeyPemFile
とsslCertPemFile
構成保護設定の組み合わせのいずれかを指定する必要があります。 - 既定では、Azure Machine Learning 拡張機能のデプロイで、HTTPS サポート用の構成設定が必要です。 開発またはテスト目的の場合、HTTP のサポートは、便宜的に構成設定
allowInsecureConnections=True
を使って提供されます。
Azure Machine Learning 拡張機能のデプロイ - CLI の例と Azure portal
CLI を使用して Azure Machine Learning 拡張機能をデプロイするには、必須パラメーターの値を渡す az k8s-extension create
コマンドを使用します。
参照用に、4 つの一般的な拡張機能のデプロイ シナリオを示します。 運用環境での使用に合わせて拡張機能をデプロイするには、構成設定の完全な一覧をよくお読みください。
Azure 内の AKS クラスターを使用して、すべての種類の ML ワークロードを実行するための簡単に概念実証を行う、つまり、トレーニング ジョブを実行するか、モデルをオンラインまたはバッチ エンドポイントとしてデプロイする
Azure Machine Learning 拡張機能を AKS クラスターにデプロイする場合は、
managedClusters
パラメーターに--cluster-type
の値を必ず指定してください。 次の Azure CLI コマンドを実行して、Azure Machine Learning 拡張機能をデプロイします。az k8s-extension create --name <extension-name> --extension-type Microsoft.AzureML.Kubernetes --config enableTraining=True enableInference=True inferenceRouterServiceType=LoadBalancer allowInsecureConnections=True InferenceRouterHA=False --cluster-type managedClusters --cluster-name <your-AKS-cluster-name> --resource-group <your-RG-name> --scope cluster
Azure 外部の Arc Kubernetes クラスターを使用して、簡単に概念実証を行い、トレーニング ジョブのみを実行する
Azure Machine Learning 拡張機能を Arc Kubernetes クラスターにデプロイする場合は、
connectedClusters
パラメーターに--cluster-type
の値を指定する必要があります。 次の Azure CLI コマンドを実行して、Azure Machine Learning 拡張機能をデプロイします。az k8s-extension create --name <extension-name> --extension-type Microsoft.AzureML.Kubernetes --config enableTraining=True --cluster-type connectedClusters --cluster-name <your-connected-cluster-name> --resource-group <your-RG-name> --scope cluster
運用のトレーニングと推論ワークロードのために Azure で AKS クラスターを有効にする Azure Machine Learning 拡張機能を AKS にデプロイする場合は、
managedClusters
パラメーターに--cluster-type
の値を必ず指定してください。 クラスターに 3 つを超えるノードがあり、推論ワークロードのサポートに Azure パブリック ロード バランサーと HTTPS を使っているとします。 次の Azure CLI コマンドを実行して、Azure Machine Learning 拡張機能をデプロイします。az k8s-extension create --name <extension-name> --extension-type Microsoft.AzureML.Kubernetes --config enableTraining=True enableInference=True inferenceRouterServiceType=LoadBalancer sslCname=<ssl cname> --config-protected sslCertPemFile=<file-path-to-cert-PEM> sslKeyPemFile=<file-path-to-cert-KEY> --cluster-type managedClusters --cluster-name <your-AKS-cluster-name> --resource-group <your-RG-name> --scope cluster
NVIDIA GPU を使用して、運用のトレーニングと推論ワークロードのために任意の場所で Arc Kubernetes クラスターを有効にする
Azure Machine Learning 拡張機能を Arc Kubernetes クラスターにデプロイする場合は、
connectedClusters
パラメーターに--cluster-type
の値を必ず指定してください。 クラスターに 3 つを超えるノードがあり、推論ワークロードのサポートに NodePort サービスの種類と HTTPS を使っている場合、次の Azure CLI コマンドを実行して Azure Machine Learning 拡張機能をデプロイします。az k8s-extension create --name <extension-name> --extension-type Microsoft.AzureML.Kubernetes --config enableTraining=True enableInference=True inferenceRouterServiceType=NodePort sslCname=<ssl cname> installNvidiaDevicePlugin=True installDcgmExporter=True --config-protected sslCertPemFile=<file-path-to-cert-PEM> sslKeyPemFile=<file-path-to-cert-KEY> --cluster-type connectedClusters --cluster-name <your-connected-cluster-name> --resource-group <your-RG-name> --scope cluster
Azure Machine Learning 拡張機能のデプロイを確認する
次の CLI コマンドを実行して、Azure Machine Learning 拡張機能の詳細を確認します。
az k8s-extension show --name <extension-name> --cluster-type connectedClusters --cluster-name <your-connected-cluster-name> --resource-group <resource-group>
応答で、"name" と "provisioningState": "Succeeded" を探します。 最初の数分間は "provisioningState": "Pending" が表示されることがあることに注意してください。
provisioningState が Succeeded と表示されたら、kubeconfig ファイルが目的のクラスターを指している状態で、お使いのマシン上で次のコマンドを実行して、"azureml" 名前空間の下のすべてのポッドの状態が 'Running' になっていることを確認します。
kubectl get pods -n azureml
Azure Machine Learning 拡張機能のコンポーネントを確認する
Azure Machine Learning 拡張機能のデプロイが完了したら、kubectl get deployments -n azureml
を使用して、クラスターで作成されたリソースの一覧を表示できます。 これは通常、指定された構成設定に従って、次のリソースのサブセットで構成されます。
リソース名 | リソースの種類 | トレーニング | 推論 | トレーニングと推論 | 説明 | クラウドとの通信 |
---|---|---|---|---|---|---|
relayserver | Kubernetes のデプロイ | ✓ | ✓ | ✓ | リレー サーバーは、Arc Kubernetes クラスターに対してのみ作成され、AKS クラスターでは作成されません。 リレー サーバーは、Azure Relay と連携してクラウド サービスと通信します。 | クラウド サービスからジョブ作成、モデル デプロイの要求を受け取り、ジョブの状態をクラウド サービスと同期します。 |
ゲートウェイ | Kubernetes のデプロイ | ✓ | ✓ | ✓ | ゲートウェイは、データの通信と送受信を行うために使用されます。 | ノードとクラスターのリソース情報をクラウド サービスに送信します。 |
aml-operator | Kubernetes のデプロイ | ✓ | 該当なし | ✓ | トレーニングジョブのライフサイクルを管理します。 | Azure Container Registry の認証と認可のために、クラウド トークン サービスとトークン交換を行います。 |
metrics-controller-manager | Kubernetes のデプロイ | ✓ | ✓ | ✓ | Prometheus の構成を管理する | 該当なし |
{EXTENSION-NAME}-kube-state-metrics | Kubernetes のデプロイ | ✓ | ✓ | ✓ | クラスター関連のメトリックを Prometheus にエクスポートします。 | 該当なし |
{EXTENSION-NAME}-prometheus-operator | Kubernetes のデプロイ | 省略可能 | 省略可能 | 省略可能 | Prometheus および関連する監視コンポーネントの Kubernetes ネイティブデプロイと管理を提供します。 | 該当なし |
amlarc-identity-controller | Kubernetes のデプロイ | 該当なし | ✓ | ✓ | マネージド ID を介して、Azure BLOB または Azure Container Registry トークンの要求と更新を行います。 | 推論またはモデル デプロイに使う Azure Container Registry および Azure BLOB の認証と認可のために、クラウド トークン サービスとトークン交換を行います。 |
アムラーク-アイデンティティ-プロキシ | Kubernetes のデプロイ | 該当なし | ✓ | ✓ | マネージド ID を介して、Azure BLOB または Azure Container Registry トークンの要求と更新を行います。 | 推論またはモデル デプロイに使う Azure Container Registry および Azure BLOB の認証と認可のために、クラウド トークン サービスとトークン交換を行います。 |
azureml-fe-v2 | Kubernetes のデプロイ | 該当なし | ✓ | ✓ | 受信した推論要求を、デプロイされたサービスにルーティングするフロントエンドコンポーネント。 | サービス ログを Azure BLOB に送信します。 |
inference-operator-controller-manager | Kubernetes のデプロイ | 該当なし | ✓ | ✓ | 推論エンドポイントのライフサイクルを管理します。 | 該当なし |
火山の入場 | Kubernetes のデプロイ | 省略可能 | 該当なし | 省略可能 | Volcano admission Webhook。 | 該当なし |
火山コントローラ | Kubernetes のデプロイ | 省略可能 | 該当なし | 省略可能 | Azure Machine Learning トレーニング ジョブ ポッドのライフサイクルを管理します。 | 該当なし |
volcano-scheduler | Kubernetes のデプロイ | 省略可能 | 該当なし | 省略可能 | クラスター内ジョブのスケジュール設定を行うために使用されます。 | 該当なし |
fluent-bit | Kubernetes デーモンセット | ✓ | ✓ | ✓ | コンポーネントのシステム ログを収集します。 | コンポーネントのシステム ログをクラウドにアップロードします。 |
{EXTENSION-NAME}-dcgm-exporter | Kubernetes daemonset | 省略可能 | 省略可能 | 省略可能 | dcgm-exporter は Prometheus の GPU メトリックを公開します。 | 該当なし |
nvidia-device-plugin-daemonset(NVIDIAデバイスプラグインデーモンセット) | Kubernetes デーモンセット | 省略可能 | 省略可能 | 省略可能 | nvidia-device-plugin-daemonset は、クラスターの各ノードで GPU を公開します | 該当なし |
prometheus-prom-prometheus | Kubernetes statefulset | ✓ | ✓ | ✓ | ジョブ メトリックを収集してクラウドに送信します。 | CPU、GPU、メモリ使用率などのジョブ メトリックをクラウドに送信します。 |
重要
注意
- {EXTENSION-NAME}:
az k8s-extension create --name
CLI コマンドで指定する拡張機能名です。
Azure Machine Learning 拡張機能を管理する
Azure Machine Learning 拡張機能を更新、一覧表示、表示、削除します。
- Azure Arc が接続されていない AKS クラスターについては、「クラスター拡張機能のデプロイと管理」を参照してください。
- Azure Arc 対応 Kubernetes については、「Azure Arc 対応 Kubernetes クラスター拡張機能をデプロイして管理する」を参照してください。