ポータルまたは Python SDK (v2) を使用して Azure Machine Learning ワークスペースを管理する

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

この記事では、Azure portal または Python 用 SDK を使用して、Azure Machine Learning 用の Azure Machine Learning ワークスペースを作成、表示、削除します。

ニーズに変化が生じたり自動化の要件が増えたりしたときに、CLIAzure PowerShell、または VS Code 拡張機能を使用して、ワークスペースを管理することができます。

前提条件

  • Azure サブスクリプション。 Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。 無料版または有料版の Azure Machine Learning を今すぐお試しください。
  • Python SDK の使用:
    1. SDK v2 をインストールします

    2. azure-identity をインストールします: pip install azure-identity。 ノートブック セルで %pip install azure-identity を使います。

    3. サブスクリプションの詳細を指定します。

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

      # Enter details of your subscription
      subscription_id = "<SUBSCRIPTION_ID>"
      resource_group = "<RESOURCE_GROUP>"
    4. サブスクリプションへのハンドルを取得します。 この記事のすべての Python コードで ml_client が使用されています。

      # get a handle to the subscription
      
      from azure.ai.ml import MLClient
      from azure.identity import DefaultAzureCredential
      
      ml_client = MLClient(DefaultAzureCredential(), subscription_id, resource_group)
      • (省略可能) 複数のアカウントがある場合は、使う Microsoft Entra ID のテナント ID を DefaultAzureCredential に追加します。 Azure portal で、[Microsoft Entra ID] の [外部 ID] からテナント ID を見つけます。

        DefaultAzureCredential(interactive_browser_tenant_id="<TENANT_ID>")
        
      • (省略可能) ソブリン クラウドで作業している場合は、認証を行うためにクラウドを指定する必要があります。 DefaultAzureCredential でこの手順を実行します。

        from azure.identity import AzureAuthorityHosts
        DefaultAzureCredential(authority=AzureAuthorityHosts.AZURE_GOVERNMENT))
        

制限事項

  • 新しいワークスペースを作成する場合は、ワークスペースに必要なサービスを自動的に作成するか、既存のサービスを使用することができます。 ワークスペースとは異なる Azure サブスクリプション の既存のサービスを使用する場合は、それらのサービスを含むサブスクリプションに Azure Machine Learning 名前空間を登録する必要があります。 たとえば、サブスクリプション B のストレージ アカウントを使用するサブスクリプション A でワークスペースを作成する場合、ワークスペースでストレージ アカウントを使用するには、Azure Machine Learning 名前空間がサブスクリプション B に登録されている必要があります。

    Azure Machine Learning のリソース プロバイダーは、Microsoft.MachineLearningServices です。 登録されているかどうかを確認する方法や、登録方法については、記事「Azure リソース プロバイダーと種類」を参照してください。

    重要

    これは、ワークスペースの作成時に提供されるリソースである、Azure Storage アカウント、Azure Container Register、Azure Key Vault、Application Insights にのみ適用されます。

  • オンライン エンドポイントを使用したネットワーク分離の場合、ワークスペースとは異なるリソース グループからワークスペースに関連付けられたリソース (Azure Container Registry (ACR)、ストレージ アカウント、Key Vault、Application Insights) を使用できます。 ただし、これらのリソースはワークスペースと同じサブスクリプションとテナントに属している必要があります。 ワークスペースのマネージド仮想ネットワークを使用したマネージド オンライン エンドポイントのセキュリティ保護に適用される制限の詳細については、「マネージド オンライン エンドポイントを使用したネットワークの分離」を参照してください。

  • 既定では、ワークスペースを作成すると Azure Container Registry (ACR) も作成されます。 現在、ACR ではリソース グループ名での Unicode 文字がサポートされていないため、これらの文字を回避するリソース グループを使用します。

  • Azure Machine Learning では、ワークスペースの既定のストレージ アカウントの階層型名前空間 (Azure Data Lake Storage Gen2 機能) はサポートされていません。

ヒント

Azure Application Insights インスタンスは、ワークスペースの作成時に作成されます。 必要に応じて、クラスターの作成後に Application Insights インスタンスを削除できます。 それを削除すると、ワークスペースから収集される情報が限定され、問題のトラブルシューティングが困難になる可能性があります。 ワークスペースによって作成された Application Insights インスタンスを削除した場合、ワークスペースを削除して再作成することなく、それを再作成することはできません。

この Application Insights インスタンスの使用方法の詳細については、「Machine Learning Web サービス エンドポイントからのデータの監視と収集」を参照してください。

ワークスペースの作成

ワークスペースは、Azure Machine Learning スタジオで直接作成できますが、使用できるオプションは制限されています。 オプションをより細かく制御するために次のいずれかの方法も使用できます。

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

  • 既定の仕様。 既定では、依存するリソースとリソース グループが自動的に作成されます。 このコードでは、myworkspace という名前のワークスペースと myresourcegroup という名前のリソース グループが eastus2 に作成されます。

    # Creating a unique workspace name with current datetime to avoid conflicts
    from azure.ai.ml.entities import Workspace
    import datetime
    
    basic_workspace_name = "mlw-basic-prod-" + datetime.datetime.now().strftime(
        "%Y%m%d%H%M"
    )
    
    ws_basic = Workspace(
        name=basic_workspace_name,
        location="eastus",
        display_name="Basic workspace-example",
        description="This example shows how to create a basic workspace",
        hbi_workspace=False,
        tags=dict(purpose="demo"),
    )
    
    ws_basic = ml_client.workspaces.begin_create(ws_basic).result()
    print(ws_basic)
  • 既存の Azure リソースを使用する。 既存の Azure リソースを Azure リソース ID 形式で使用するワークスペースを作成することもできます。 Azure portal または SDK を使用して、特定の Azure リソース ID を見つけます。 この例では、リソース グループ、ストレージ アカウント、キー コンテナー、App Insights、コンテナー レジストリが既に存在していることを前提としています。

    # Creating a unique workspace name with current datetime to avoid conflicts
    import datetime
    from azure.ai.ml.entities import Workspace
    
    basic_ex_workspace_name = "mlw-basicex-prod-" + datetime.datetime.now().strftime(
        "%Y%m%d%H%M"
    )
    
    # Change the following variables to resource ids of your existing storage account, key vault, application insights
    # and container registry. Here we reuse the ones we just created for the basic workspace
    existing_storage_account = (
        # e.g. "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE_ACCOUNT>"
        ws_basic.storage_account
    )
    existing_container_registry = (
        # e.g. "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.ContainerRegistry/registries/<CONTAINER_REGISTRY>"
        ws_basic.container_registry
    )
    existing_key_vault = (
        # e.g. "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.KeyVault/vaults/<KEY_VAULT>"
        ws_basic.key_vault
    )
    existing_application_insights = (
        # e.g. "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.insights/components/<APP_INSIGHTS>"
        ws_basic.application_insights
    )
    
    ws_with_existing_resources = Workspace(
        name=basic_ex_workspace_name,
        location="eastus",
        display_name="Bring your own dependent resources-example",
        description="This sample specifies a workspace configuration with existing dependent resources",
        storage_account=existing_storage_account,
        container_registry=existing_container_registry,
        key_vault=existing_key_vault,
        application_insights=existing_application_insights,
        tags=dict(purpose="demonstration"),
    )
    
    ws_with_existing_resources = ml_client.begin_create_or_update(
        ws_with_existing_resources
    ).result()
    
    print(ws_with_existing_resources)

詳細については、ワークスペース SDK リファレンスを参照してください。

サブスクリプションへのアクセスで問題が発生した場合は、Azure Machine Learning のリソースとワークフローのための認証の設定に関する記事と「Azure Machine Learning での認証」ノートブックを参照してください。

ネットワーク

重要

お使いのワークスペースでのプライベート エンドポイントと仮想ネットワークの使用に関する詳細については、ネットワークの分離とプライバシーに関する記事を参照してください。

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

# Creating a unique workspace name with current datetime to avoid conflicts
import datetime
from azure.ai.ml.entities import Workspace

basic_private_link_workspace_name = (
    "mlw-privatelink-prod-" + datetime.datetime.now().strftime("%Y%m%d%H%M")
)

ws_private = Workspace(
    name=basic_private_link_workspace_name,
    location="eastus",
    display_name="Private Link endpoint workspace-example",
    description="When using private link, you must set the image_build_compute property to a cluster name to use for Docker image environment building. You can also specify whether the workspace should be accessible over the internet.",
    image_build_compute="cpu-compute",
    public_network_access="Disabled",
    tags=dict(purpose="demonstration"),
)

ml_client.workspaces.begin_create(ws_private).result()

このクラスには、既存の仮想ネットワークが必要です。

暗号化

既定では、Azure Cosmos DB インスタンスにはワークスペースのメタデータが格納されます。 Microsoft では、この Cosmos DB インスタンスを保持しています。 Microsoft のマネージド キーでは、このデータが暗号化されます。

独自のデータ暗号化キーを使用する

データ暗号化用の独自のキーを用意できます。 これにより、自分の Azure サブスクリプションにメタデータを格納する Azure Cosmos DB インスタンスが作成されます。 詳細については、カスタマー マネージド キーに関するセクションを参照してください。

独自のキーを用意するには、次の手順を実行します。

重要

これらの手順を実行する前に、まず次のアクションを実行する必要があります。

カスタマー マネージド キーの構成に関する記事の手順に従って以下を行います。

  • Azure Cosmos DB プロバイダーを登録する
  • Azure Key Vault を作成して構成する
  • キーを生成する

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


from azure.ai.ml.entities import Workspace, CustomerManagedKey

# specify the workspace details
ws = Workspace(
    name="my_workspace",
    location="eastus",
    display_name="My workspace",
    description="This example shows how to create a workspace",
    customer_managed_key=CustomerManagedKey(
        key_vault="/subscriptions/<SUBSCRIPTION_ID>/resourcegroups/<RESOURCE_GROUP>/providers/microsoft.keyvault/vaults/<VAULT_NAME>"
        key_uri="<KEY-IDENTIFIER>"
    )
    tags=dict(purpose="demo")
)

ml_client.workspaces.begin_create(ws)

ID

ポータル内で [ID] ページを使用して、[マネージド ID]、[ストレージ アカウントのアクセス]、[データへの影響] を構成します。 Python SDK については、次のセクション内のリンクをご参照ください。

マネージド ID

ワークスペースには、システム割り当て ID またはユーザー割り当て ID のいずれかを指定することができます。 この ID は、ご利用のサブスクリプション内のリソースにアクセスするために使用されます。 詳しくは、「Azure Machine Learning とその他のサービス間の認証を設定する」をご参照ください。

ストレージ アカウント アクセス

既定のストレージ アカウントに接続する際に、[資格情報ベースのアクセス] または [ID ベースのアクセス] を選択します。 ID ベースの認証では、ストレージ アカウント上のワークスペース マネージド ID に、Storage BLOB データ共同作成者ロールを許可する必要があります。

データの影響

Microsoft がお使いのワークスペースで収集するデータを制限するには、ポータルで [High business impact workspace](業務への影響が大きいワークスペース) を選択するか、Python で hbi_workspace=true を設定します。 この設定の詳細については、「保存時の暗号化」を参照してください。

重要

ビジネスに大きな影響を与える選択は、ワークスペースの作成時にのみ実行できます。 ワークスペースの作成後にこの設定を変更することはできません。

タグ

タグは名前と値のペアで、同じタグを複数のリソースやリソース グループに適用することでリソースを分類したり、統合した請求を表示したりできるようにします。

名前と値のペアを入力して、ワークスペースのタグを割り当てます。 詳細については、タグを使用した Azure リソースの整理に関するページを参照してください。

また、タグを使用して [ワークスペース ポリシーを適用します](#enforce-policies)。

構成ファイルをダウンロードする

コードをコンピューティング インスタンスで実行する場合は、このステップをスキップします。 コンピューティング インスタンスにより、このファイルのコピーが作成されて保存されます。

このワークスペースを参照するローカル環境でコードを使用するには、次のファイルをダウンロードします。

  1. Azure Studio でワークスペースを選びます

  2. 右上でワークスペース名を選び、[config.json のダウンロード] を選びます

    config.json をダウンロードする

このファイルは、Python スクリプトまたは Jupyter Notebook を保持するディレクトリ構造内に置きます。 同じディレクトリ、.azureml という名前のサブディレクトリ、または親ディレクトリにこのファイルを保持できます。 コンピューティング インスタンスを作成するとき、このファイルは VM 上の正しいディレクトリに自動的に追加されます。

ポリシーを適用する

ワークスペースの次の機能をオンまたはオフにすることができます。

  • ワークスペースでのフィードバック機会。 機会には、不定期の製品内アンケートや、ワークスペースのバナーに表示される表情アイコンのフィードバック ツールが含まれます。
  • ワークスペースでプレビュー機能を試す機能。

これらの機能は既定でオンになっています。 オフにするには:

  • ワークスペース作成時に、[タグ] セクションから機能をオフにします。

    1. ペア "ADMIN_HIDE_SURVEY: TRUE" を追加してフィードバックをオフにします
    2. ペア "AZML_DISABLE_PREVIEW_FEATURE": "TRUE" を追加してプレビューをオフにします
  • 既存のワークスペースで、[タグ] セクションから機能をオフにします。

    1. Azure portal のワークスペース リソースに移動します
    2. 左側のナビゲーション パネルから [タグ] を開きます
    3. ペア "ADMIN_HIDE_SURVEY: TRUE" を追加してフィードバックをオフにします
    4. ペア "AZML_DISABLE_PREVIEW_FEATURE: TRUE" を追加してプレビューをオフにします
    5. 適用を選択します。

ワークスペースのフィードバックをオフにするタグ設定を示すスクリーンショット。

サブスクリプション レベルでプレビューをオフにして、サブスクリプション内のすべてのワークスペースでオフになるようにすることができます。 この場合、サブスクリプションのユーザーは、ワークスペースを選択する前にプレビュー ツールにアクセスすることもできません。 この設定は、プレビュー機能が組織で使用されないようにする必要がある管理者に役立ちます。

プレビュー設定は、そのワークスペースのサブスクリプション レベルでオフになっている場合、個々のワークスペースでは無視されます。

サブスクリプション レベルでプレビュー機能を無効にするには:

  1. Azure portal のサブスクリプション リソースに移動します
  2. 左側のナビゲーション パネルから [タグ] を開きます
  3. "AZML_DISABLE_PREVIEW_FEATURE": "TRUE" のペアを追加して、サブスクリプション内のすべてのワークスペースのプレビューをオフにします
  4. 適用を選択します。

ワークスペースに接続する

SDK を使って機械学習タスクを実行する場合は、ワークスペースへの接続を指定する MLClient オブジェクトが必要です。 パラメーターから、または構成ファイルを使って、MLClient オブジェクトを作成できます。

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

  • 構成ファイルで: このコードにより、構成ファイルの内容が読み取られ、ワークスペースが検索されます。 まだ認証されていない場合は、サインインを求めるメッセージが表示されます。

    from azure.ai.ml import MLClient
    
    # read the config from the current directory
    ws_from_config = MLClient.from_config(credential=DefaultAzureCredential())
    
  • パラメーターから: この方法を使う場合は、config.json ファイルを利用できるようする必要はありません。

    from azure.ai.ml import MLClient
    from azure.ai.ml.entities import Workspace
    from azure.identity import DefaultAzureCredential
    
    ws = MLClient(
        DefaultAzureCredential(),
        subscription_id="<SUBSCRIPTION_ID>",
        resource_group_name="<RESOURCE_GROUP>",
        workspace_name="<AML_WORKSPACE_NAME>",
    )
    print(ws)

サブスクリプションへのアクセスで問題が発生した場合は、Azure Machine Learning のリソースとワークフローのための認証の設定に関する記事と「Azure Machine Learning での認証」ノートブックを参照してください。

ワークスペースの検索

使用可能なすべてのワークスペースの一覧を表示します。 スタジオ内でワークスペースを検索することもできます。 「Azure Machine Learning の資産を検索する (プレビュー)」をご覧ください。

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

from azure.ai.ml import MLClient
from azure.ai.ml.entities import Workspace
from azure.identity import DefaultAzureCredential

# Enter details of your subscription
subscription_id = "<SUBSCRIPTION_ID>"
resource_group = "<RESOURCE_GROUP>"

my_ml_client = MLClient(DefaultAzureCredential(), subscription_id, resource_group)
for ws in my_ml_client.workspaces.list():
    print(ws.name, ":", ws.location, ":", ws.description)

特定のワークスペースの詳細を取得するには:

ws = my_ml_client.workspaces.get("<AML_WORKSPACE_NAME>")
# uncomment this line after providing a workspace name above
# print(ws.location,":", ws.resource_group)

ワークスペースを削除する

ワークスペースが不要になったら、削除します。

警告

ワークスペースに対して論理的な削除が有効になっている場合は、削除後に復旧できます。 論理的な削除が有効になっていない場合、またはワークスペースを完全に削除するオプションを選択した場合は、復旧できません。 詳細については、削除されたワークスペースの復旧に関する記事を参照してください。

ヒント

Azure Machine Learning の既定の動作では、ワークスペースを論理的に削除します。 ワークスペースはすぐに削除されるのではなく、削除対象としてマークされることを意味します。 詳細については、「論理的な削除」に関する記事をご覧ください。

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

ml_client.workspaces.begin_delete(name=ws_basic.name, delete_dependent_resources=True)

既定のアクションでは、ワークスペースに関連付けられているリソースは

  • コンテナー レジストリ
  • ストレージ アカウント
  • Key Vault
  • Application Insights

自動的に削除されません。 これらのリソースも削除するには、delete_dependent_resources を True に設定します。

リソースをクリーンアップする

重要

作成したリソースは、Azure Machine Learning に関連したその他のチュートリアルおよびハウツー記事の前提条件として使用できます。

作成したどのリソースも今後使用する予定がない場合は、課金が発生しないように削除します。

  1. Azure Portal で、左端にある [リソース グループ] を選択します。

  2. 一覧から、作成したリソース グループを選択します。

  3. [リソース グループの削除] を選択します。

    Azure portal でリソース グループの削除を選択する画面のスクリーンショット。

  4. リソース グループ名を入力します。 次に、 [削除] を選択します。

トラブルシューティング

  • Azure Machine Learning スタジオでサポートされているブラウザー: オペレーティング システムと互換性のある最新ブラウザーを使うことをお勧めします。 次のブラウザーがサポートされています。

    • Microsoft Edge (新しい Microsoft Edge の最新バージョンです。注: Microsoft Edge レガシはサポートされていません)
    • Safari (最新バージョン、Mac のみ)
    • Chrome (最新バージョン)
    • Firefox (最新バージョン)
  • Azure ポータル:

    • SDK または Azure portal で共有リンクからワークスペースに直接移動する場合、拡張機能のサブスクリプション情報を含む標準の [概要] ページは表示できません。 さらに、このシナリオでは、別のワークスペースに切り替えることもできません。 別のワークスペースを表示するには、Azure Machine Learning Studio に直接移動し、そのワークスペース名を検索します。
    • すべての資産 (データ、実験、コンピューティングなど) は、Azure Machine Learning スタジオでのみ使用できます。 Azure portal では提供されていません
    • Azure portal からワークスペースのテンプレートをエクスポートしようとすると、次のテキストのようなエラーが返されることがあります。Could not get resource of the type <type>. Resources of this type will not be exported.回避策として、https://github.com/Azure/azure-quickstart-templates/tree/master/quickstarts/microsoft.machinelearningservices に用意されているテンプレートの 1 つをテンプレートのベースとして使用します。

ワークスペース診断

Azure Machine Learning スタジオまたは Python SDK から、ワークスペースの診断を実行することができます。 診断の実行後、検出された問題の一覧が返されます。 この一覧には、考えられる解決策へのリンクが含まれています。 詳細については、「ワークスペース診断の使用方法」を参照してください。

リソース プロバイダーのエラー

Azure Machine Learning ワークスペース (またはワークスペースで使用されるリソース) を作成しようとすると、次のメッセージに似たエラーが表示されることがあります。

  • No registered resource provider found for location {location}
  • The subscription is not registered to use namespace {resource-provider-namespace}

ほとんどのリソースプロバイダーは自動的に登録されますが、すべてではありません。 このメッセージが表示された場合は、言及されているプロバイダーを登録する必要があります。

次の表に、Azure Machine Learning で必要なリソース プロバイダーの一覧を示します。

リソース プロバイダー 必要な理由
Microsoft.MachineLearningServices Azure Machine Learning ワークスペースの作成。
Microsoft.Storage Azure Storage アカウントは、ワークスペースの既定のストレージとして使用されます。
Microsoft.ContainerRegistry Azure Container Registry は、Docker イメージを構築するためにワークスペースによって使用されます。
Microsoft.KeyVault Azure Key Vault は、シークレットを格納するためにワークスペースによって使用されます。
Microsoft.Notebooks Azure Machine Learning コンピューティング インスタンス上の統合されたノートブック。
Microsoft.ContainerService トレーニング済みのモデルを Azure Kubernetes Service にデプロイすることを計画している場合。

Azure Machine Learning でカスタマー マネージド キーを使用することを計画している場合は、以下のサービス プロバイダーを登録する必要があります。

リソース プロバイダー 必要な理由
Microsoft.DocumentDB ワークスペースのメタデータをログに記録する Azure CosmosDB インスタンス。
Microsoft.Search Azure Search では、ワークスペースのインデックス作成機能を提供します。

Azure Machine Learning でマネージド仮想ネットワークを使用する場合は、Microsoft.Network リソース プロバイダーを登録する必要があります。 このリソース プロバイダーは、マネージド仮想ネットワークのプライベート エンドポイントを作成するときにワークスペースによって使用されます。

リソースプロバイダーの登録については、「リソースプロバイダー登録エラーの解決」を参照してください。

Azure Container Registry の削除

Azure Machine Learning ワークスペースでは、一部の操作に対して Azure Container Registry (ACR) が使用されます。 これにより ACR インスタンスは、最初に必要になったときに自動的に作成されます。

警告

いったん、Azure Container Registry をワークスペースに対して作成したら、削除しないでください。 それを行うと、Azure Machine Learning ワークスペースが破損します。

この記事の例は、workspace.ipynb のものです。

次のステップ

ワークスペースを作成したら、モデルをトレーニングしてデプロイする方法を確認します。

組織の要件に合わせてワークスペースを計画する方法の詳細については、Azure Machine Learning の整理とセットアップに関するページを参照してください。

最新のセキュリティ更新プログラムを使用して Azure Machine Learning を最新の状態に保つ方法については、脆弱性の管理に関する記事を参照してください。