適用対象: Azure CLI ml 拡張機能 v2 (現行)
Azure Machine Learning CLI を使用すると、コマンド ライン インターフェイスから直感的な YAML 構文とコマンドを使用して、Synapse Spark プールをアタッチして管理できます。
YAML 構文を使用してアタッチされた Synapse Spark プールを定義するには、YAML ファイルで次のプロパティをカバーする必要があります。
name
- アタッチされた Synapse Spark プールの名前。
type
- このプロパティを synapsespark
に設定します。
resource_id
- このプロパティでは、Azure Synapse Analytics ワークスペースで作成された Synapse Spark プールのリソース ID 値を指定する必要があります。 Azure リソース ID には、次のものが含まれます
Azure サブスクリプション ID、
リソース グループ名、
Azure Synapse Analytics ワークスペース名、
Synapse Spark プールの名前。
name: <ATTACHED_SPARK_POOL_NAME>
type: synapsespark
resource_id: /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Synapse/workspaces/<SYNAPSE_WORKSPACE_NAME>/bigDataPools/<SPARK_POOL_NAME>
identity
– このプロパティは、アタッチされた Synapse Spark プールに割り当てる ID の種類を定義します。 次のいずれかの値にすることができます。
identity
の種類が user_assigned
の場合、user_assigned_identities
値のリストも提供する必要があります。 各ユーザー割り当て ID は、ユーザー割り当て ID の resource_id
値を使用して、リストの要素として宣言する必要があります。 リスト内の最初のユーザー割り当て ID は、既定でジョブを送信するために使用されます。
name: <ATTACHED_SPARK_POOL_NAME>
type: synapsespark
resource_id: /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Synapse/workspaces/<SYNAPSE_WORKSPACE_NAME>/bigDataPools/<SPARK_POOL_NAME>
identity:
type: user_assigned
user_assigned_identities:
- resource_id: /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<AML_USER_MANAGED_ID>
上記の YAML ファイルは、--file
パラメーターとして az ml compute attach
コマンドで使用できます。 Synapse Spark プールは、次に示すように az ml compute attach
コマンドを使用して、サブスクリプションの指定されたリソース グループ内の Azure Machine Learning ワークスペースにアタッチできます。
az ml compute attach --file <YAML_SPECIFICATION_FILE_NAME>.yaml --subscription <SUBSCRIPTION_ID> --resource-group <RESOURCE_GROUP> --workspace-name <AML_WORKSPACE_NAME>
このサンプルは、上記のコマンドの予想される出力を示しています。
Class SynapseSparkCompute: This is an experimental class, and may change at any time. Please visit https://aka.ms/azuremlexperimental for more information.
{
"auto_pause_settings": {
"auto_pause_enabled": true,
"delay_in_minutes": 15
},
"created_on": "2022-09-13 19:01:05.109840+00:00",
"id": "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.MachineLearningServices/workspaces/<AML_WORKSPACE_NAME>/computes/<ATTACHED_SPARK_POOL_NAME>",
"location": "eastus2",
"name": "<ATTACHED_SPARK_POOL_NAME>",
"node_count": 5,
"node_family": "MemoryOptimized",
"node_size": "Small",
"provisioning_state": "Succeeded",
"resourceGroup": "<RESOURCE_GROUP>",
"resource_id": "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Synapse/workspaces/<SYNAPSE_WORKSPACE_NAME>/bigDataPools/<SPARK_POOL_NAME>",
"scale_settings": {
"auto_scale_enabled": false,
"max_node_count": 0,
"min_node_count": 0
},
"spark_version": "3.2",
"type": "synapsespark"
}
YAML 仕様ファイルで指定された名前を持つアタッチされた Synapse Spark プールがワークスペースに既に存在する場合、az ml compute attach
コマンドを実行すると、YAML 仕様ファイルで提供された情報で既存のプールが更新されます。 次のものを更新できます。
YAML 仕様ファイルを使用した値
アタッチされた Synapse Spark プールの詳細を表示するには、az ml compute show
コマンドを実行します。 次に示すように、--name
パラメーターを使用して、アタッチされた Synapse Spark プールの名前を渡します。
az ml compute show --name <ATTACHED_SPARK_POOL_NAME> --subscription <SUBSCRIPTION_ID> --resource-group <RESOURCE_GROUP> --workspace-name <AML_WORKSPACE_NAME>
このサンプルは、上記のコマンドの予想される出力を示しています。
<ATTACHED_SPARK_POOL_NAME>
{
"auto_pause_settings": {
"auto_pause_enabled": true,
"delay_in_minutes": 15
},
"created_on": "2022-09-13 19:01:05.109840+00:00",
"id": "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.MachineLearningServices/workspaces/<AML_WORKSPACE_NAME>/computes/<ATTACHED_SPARK_POOL_NAME>",
"location": "eastus2",
"name": "<ATTACHED_SPARK_POOL_NAME>",
"node_count": 5,
"node_family": "MemoryOptimized",
"node_size": "Small",
"provisioning_state": "Succeeded",
"resourceGroup": "<RESOURCE_GROUP>",
"resource_id": "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Synapse/workspaces/<SYNAPSE_WORKSPACE_NAME>/bigDataPools/<SPARK_POOL_NAME>",
"scale_settings": {
"auto_scale_enabled": false,
"max_node_count": 0,
"min_node_count": 0
},
"spark_version": "3.2",
"type": "synapsespark"
}
ワークスペース内のアタッチされた Synapse Spark プールを含むすべてのコンピューティングのリストを表示するには、az ml compute list
コマンドを使用します。 次に示すように、name パラメーターを使用してワークスペースの名前を渡します。
az ml compute list --subscription <SUBSCRIPTION_ID> --resource-group <RESOURCE_GROUP> --workspace-name <AML_WORKSPACE_NAME>
このサンプルは、上記のコマンドの予想される出力を示しています。
[
{
"auto_pause_settings": {
"auto_pause_enabled": true,
"delay_in_minutes": 15
},
"created_on": "2022-09-09 21:28:54.871251+00:00",
"id": "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.MachineLearningServices/workspaces/<AML_WORKSPACE_NAME>/computes/<ATTACHED_SPARK_POOL_NAME>",
"identity": {
"principal_id": "<PRINCIPAL_ID>",
"tenant_id": "<TENANT_ID>",
"type": "system_assigned"
},
"location": "eastus2",
"name": "<ATTACHED_SPARK_POOL_NAME>",
"node_count": 5,
"node_family": "MemoryOptimized",
"node_size": "Small",
"provisioning_state": "Succeeded",
"resourceGroup": "<RESOURCE_GROUP>",
"resource_id": "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Synapse/workspaces/<SYNAPSE_WORKSPACE_NAME>/bigDataPools/<SPARK_POOL_NAME>",
"scale_settings": {
"auto_scale_enabled": false,
"max_node_count": 0,
"min_node_count": 0
},
"spark_version": "3.2",
"type": "synapsespark"
},
...
]
適用対象: Python SDK azure-ai-ml v2 (現行)
Azure Machine Learning Python SDK には、Azure Machine Learning Notebooks の Python コードを使用して Synapse Spark プールをアタッチおよび管理するための便利な機能が用意されています。
Python SDK を使用して Synapse Compute をアタッチするには、まず azure.ai.ml.MLClient クラスのインスタンスを作成します。 これにより、Azure Machine Learning サービスと対話するための便利な機能が提供されます。 次のコード サンプルでは、azure.identity.DefaultAzureCredential
を使用して、指定した Azure サブスクリプションのリソース グループ内のワークスペースに接続します。 次のコード サンプルでは、次のパラメーターを使用して SynapseSparkCompute
を定義します。
name
- 新しくアタッチされた Synapse Spark プールのユーザー定義名。
resource_id
- Azure Synapse Analytics ワークスペースで前に作成した Synapse Spark プールのリソース ID
azure.ai.ml.MLClient.begin_create_or_update() 関数呼び出しにより、定義済みの Synapse Spark プールが Azure Machine Learning ワークスペースにアタッチされます。
from azure.ai.ml import MLClient
from azure.ai.ml.entities import SynapseSparkCompute
from azure.identity import DefaultAzureCredential
subscription_id = "<SUBSCRIPTION_ID>"
resource_group = "<RESOURCE_GROUP>"
workspace_name = "<AML_WORKSPACE_NAME>"
ml_client = MLClient(
DefaultAzureCredential(), subscription_id, resource_group, workspace_name
)
synapse_name = "<ATTACHED_SPARK_POOL_NAME>"
synapse_resource = "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Synapse/workspaces/<SYNAPSE_WORKSPACE_NAME>/bigDataPools/<SPARK_POOL_NAME>"
synapse_comp = SynapseSparkCompute(name=synapse_name, resource_id=synapse_resource)
ml_client.begin_create_or_update(synapse_comp)
システム割り当て ID を使用する Synapse Spark プールをアタッチするには、IdentityConfiguration を、型を SystemAssigned
に設定して、SynapseSparkCompute
クラスの identity
パラメーターとして渡します。 このコード スニペットは、システム割り当て ID を使用する Synapse Spark プールをアタッチします。
# import required libraries
from azure.ai.ml import MLClient
from azure.ai.ml.entities import SynapseSparkCompute, IdentityConfiguration
from azure.identity import DefaultAzureCredential
subscription_id = "<SUBSCRIPTION_ID>"
resource_group = "<RESOURCE_GROUP>"
workspace_name = "<AML_WORKSPACE_NAME>"
ml_client = MLClient(
DefaultAzureCredential(), subscription_id, resource_group, workspace_name
)
synapse_name = "<ATTACHED_SPARK_POOL_NAME>"
synapse_resource = "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Synapse/workspaces/<SYNAPSE_WORKSPACE_NAME>/bigDataPools/<SPARK_POOL_NAME>"
synapse_identity = IdentityConfiguration(type="SystemAssigned")
synapse_comp = SynapseSparkCompute(
name=synapse_name, resource_id=synapse_resource, identity=synapse_identity
)
ml_client.begin_create_or_update(synapse_comp)
Synapse Spark プールでは、ユーザー割り当て ID を使用することもできます。 ユーザー割り当て ID の場合、IdentityConfiguration クラスを使用して、マネージド ID 定義を SynapseSparkCompute
クラスの identity
パラメーターとして渡すことができます。 この方法で使用されるマネージド ID 定義の場合は、type
を UserAssigned
に設定します。 さらに、user_assigned_identities
パラメーターを渡します。 パラメーター user_assigned_identities
は、UserAssignedIdentity クラスのオブジェクトのリストです。 ユーザー割り当て ID の resource_id
が、各 UserAssignedIdentity
クラス オブジェクトに入力されます。 このコード スニペットは、ユーザー割り当て ID を使用する Synapse Spark プールをアタッチします。
# import required libraries
from azure.ai.ml import MLClient
from azure.ai.ml.entities import (
SynapseSparkCompute,
IdentityConfiguration,
UserAssignedIdentity,
)
from azure.identity import DefaultAzureCredential
subscription_id = "<SUBSCRIPTION_ID>"
resource_group = "<RESOURCE_GROUP>"
workspace_name = "<AML_WORKSPACE_NAME>"
ml_client = MLClient(
DefaultAzureCredential(), subscription_id, resource_group, workspace_name
)
synapse_name = "<ATTACHED_SPARK_POOL_NAME>"
synapse_resource = "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Synapse/workspaces/<SYNAPSE_WORKSPACE_NAME>/bigDataPools/<SPARK_POOL_NAME>"
synapse_identity = IdentityConfiguration(
type="UserAssigned",
user_assigned_identities=[
UserAssignedIdentity(
resource_id="/subscriptions/<SUBSCRIPTION_ID/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<AML_USER_MANAGED_ID>"
)
],
)
synapse_comp = SynapseSparkCompute(
name=synapse_name, resource_id=synapse_resource, identity=synapse_identity
)
ml_client.begin_create_or_update(synapse_comp)
Note
指定した名前のプールがまだワークスペースに存在しない場合、azure.ai.ml.MLClient.begin_create_or_update()
関数は新しい Synapse Spark プールをアタッチします。 ただし、指定した名前の Synapse Spark プールが既にワークスペースにアタッチされている場合、azure.ai.ml.MLClient.begin_create_or_update()
関数を呼び出すと、既存のアタッチされたプールが新しい ID で更新されます。