Kubernetes クラスターを Azure Machine Learning ワークスペースにアタッチする

適用対象:Azure CLI ml extension v2 (現行)Python SDK azure-ai-ml v2 (現行)

Azure Machine Learning 拡張機能を AKS または Arc Kubernetes クラスターにデプロイしたら、Kubernetes クラスターを Azure Machine Learning ワークスペースにアタッチし、ML プロフェッショナルが使用するためのコンピューティング ターゲットを作成できます。

前提条件

Kubernetes クラスターを Azure Machine Learning ワークスペースにアタッチすると、さまざまなシナリオを柔軟にサポートできます。 たとえば、複数の添付ファイルを含む共有シナリオ、Azure リソースにアクセスするモデル トレーニング スクリプト、ワークスペースの認証構成などです。

マルチアタッチとワークロードの分離

1 つのクラスターから 1 つのワークスペースに対して、複数のコンピューティング ターゲットを作成する

  • 同じ Kubernetes クラスターの場合、これを同じワークスペースに複数回アタッチし、異なるプロジェクト、チーム、ワークロードに対して複数のコンピューティング先を作成できます。

1 つのクラスターから複数のワークスペース

  • 同じ Kubernetes クラスターに対して、複数のワークスペースにアタッチすることもできます。また、複数のワークスペースで同じ Kubernetes クラスターを共有することもできます。

プロジェクトやチームごとに異なるコンピューティング先を使用する場合は、クラスター内の既存の Kubernetes 名前空間をコンピューティング先に指定して、異なるチームやプロジェクト間でワークロードを分離できます。

重要

クラスターを Azure Machine Learning ワークスペースにアタッチするときに指定する名前空間は、クラスターに事前に作成済みである必要があります。

トレーニング スクリプトから Azure リソースに安全にアクセスする

トレーニング スクリプトから Azure リソースに安全にアクセスする必要がある場合は、アタッチ操作中に Kubernetes コンピューティング先のマネージド ID を指定できます。

ユーザー割り当てのマネージド ID を使用してワークスペースにアタッチする

Azure Machine Learning ワークスペースには、Azure Machine Learning リソースにアクセスするシステム割り当てマネージド ID があります。 この手順は、システム割り当ての既定の設定がオンの場合に完了します。

それ以外の場合、Azure Machine Learning ワークスペースの作成でユーザー割り当てマネージド ID が指定されている場合は、コンピューティングをアタッチする前に、次のロールの割り当てをマネージド ID に手動で付与する必要があります。

Azure リソース名 割り当てられるロール 説明
Azure Relay Azure Relay 所有者 Arc 対応 Kubernetes クラスターにのみ適用されます。 Azure Relay は、Arc が接続されていない AKS クラスター用には作成されません。
Kubernetes - Azure Arc または Azure Kubernetes Service Reader
Kubernetes 拡張機能共同作成者
Azure Kubernetes Service クラスター管理者
Arc 対応 Kubernetes クラスターと AKS クラスターの両方に適用されます。

ヒント

Azure Relay リソースは、Arc 対応 Kubernetes クラスターと同じリソース グループの拡張機能のデプロイ中に作成されます。

Note

  • "Kubernetes 拡張機能共同作成者" ロールのアクセス許可を使用できない場合、クラスターのアタッチは "拡張機能がインストールされていません" というエラーで失敗します。
  • "Azure Kubernetes Service クラスター 管理者" ロールのアクセス許可を使用できない場合、クラスターのアタッチは "内部サーバー" エラーで失敗します。

Kubernetes クラスターを Azure Machine Learning ワークスペースにアタッチする方法

Kubernetes クラスターを Azure Machine Learning ワークスペースにアタッチする 2 つの方法として、Azure CLI またはスタジオ UI の使用がサポートされています。

次の CLI v2 コマンドは、AKS および Azure Arc 対応 Kubernetes クラスターをアタッチし、それをコンピューティング先として、マネージド ID を有効にして使用する方法を示しています。

AKS クラスター

az ml compute attach --resource-group <resource-group-name> --workspace-name <workspace-name> --type Kubernetes --name k8s-compute --resource-id "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.ContainerService/managedclusters/<cluster-name>" --identity-type SystemAssigned --namespace <Kubernetes namespace to run Azure Machine Learning workloads> --no-wait

Arc Kubernetes クラスター

az ml compute attach --resource-group <resource-group-name> --workspace-name <workspace-name> --type Kubernetes --name amlarc-compute --resource-id "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Kubernetes/connectedClusters/<cluster-name>" --user-assigned-identities "subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity-name>" --no-wait

--type 引数を Kubernetes に設定します。 identity_type 引数を使って、SystemAssigned または UserAssigned マネージド ID を有効にします。

重要

--user-assigned-identitiesUserAssigned マネージド ID にのみ必要です。 コンマ区切りのユーザー マネージド ID のリストを指定することもできますが、クラスターを接続するときに使われるのは最初の ID のみです。

コンピューティング接続では、Kubernetes の名前空間を自動的に作成することや、kubernetes の名前空間が存在するかどうかを検証することはありません。 指定された名前空間がクラスターに存在することを確認する必要があり、そうでない場合は、このコンピューティングに送信されたすべての Azure Machine Learning ワークロードは失敗します。

マネージド ID をコンピューティング先に割り当てる

ソリューションの異なるコンポーネント間の通信をセキュリティで保護するために使用されるシークレットと資格情報の管理は、開発者にとって共通の課題です。 マネージド ID により、開発者は資格情報を管理する必要がなくなります。

Docker イメージ用の Azure Container Registry (ACR) とトレーニング データ用のストレージ アカウントにアクセスするには、システム割り当てまたはユーザー割り当てのマネージド ID が有効な Kubernetes コンピューティングをアタッチします。

マネージド ID を割り当てる

  • コンピューティングのアタッチ手順で、マネージド ID をコンピューティングに割り当てることができます。

  • コンピューティングが既にアタッチされている場合は、Azure Machine Learning スタジオでマネージド ID を使用するように設定を更新できます。

    • [Azure Machine Learning Studio] に移動します。 [コンピューティング][アタッチされたコンピューティング] を選択し、アタッチされたコンピューティングを選択します。
    • 鉛筆アイコンを選択してマネージド ID を編集します。

    Screenshot of updating identity of the Kubernetes compute from Azure portal.

    Screenshot of selecting identity of the Kubernetes compute from Azure portal.

Azure ロールをマネージド ID に割り当てる

Azure には、マネージド ID にロールを割り当てる方法がいくつか用意されています。

Azure portal を使用してロールを割り当て、システム割り当てマネージド IDユーザーの選択グループ プリンシパル、またはサービス プリンシパルがある場合は、[メンバーの選択] を選択して ID 名を検索できます。 ID 名の形式は、<workspace name>/computes/<compute target name> のように設定する必要があります。

ユーザー割り当てマネージド ID がある場合は、[マネージド ID] を選択してターゲット ID を見つけます。

マネージド ID を使用して Azure Container Registry からイメージをプルできます。 AcrPull ロールをコンピューティングのマネージド ID に付与します。 詳細については、「Azure Container Registry のロールとアクセス許可」をご覧ください。

次のように、マネージド ID を使用して、Azure Blob にアクセスできます。

  • 読み取り専用の場合、ストレージ BLOB データ閲覧者ロールをコンピューティングのマネージド ID に付与する必要があります。
  • 読み取りと書き込みの場合、ストレージ BLOB データ共同作成者ロールをコンピューティングのマネージド ID に付与する必要があります。

次のステップ