次の方法で共有


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

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

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

ニーズの変化や自動化の要件の増加に応じて、 CLIAzure PowerShell、または Visual Studio Code 拡張機能を使用してワークスペースを管理できます。

前提条件

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

    2. SDK v2 をインストールします

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

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

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

      # Enter details of your subscription
      subscription_id = "<SUBSCRIPTION_ID>"
      resource_group = "<RESOURCE_GROUP>"
    5. サブスクリプションへのハンドルを取得します。 この記事の 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>")
        
      • (省略可能) Azure Government - US リージョンまたは Azure China 21Vianet リージョンで作業している場合は、認証するクラウドを指定する必要があります。 これらのリージョンは 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 Registry、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 (現行)

  • 作業を開始するための基本的な構成。 指定しない場合、関連付 けられているリソース と Azure リソース グループがプロセスによって自動的に作成されます。 このコードでは、myworkspace という名前のワークスペース、依存する Azure リソース (ストレージ アカウント、Key Vault、Container Registry、Application Insights)、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 を見つけます。 この例では、リソース グループ、ストレージ アカウント、Key Vault、Application Insights、Container Registry が既に存在していることを前提としています。

    # 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)
  • 既存のハブ ワークスペースを使用します。 独自のセキュリティ設定と関連付けられたリソースを使用して、既定のワークスペースを作成する代わりに、ハブ ワークスペースの共有環境を再利用できます。 新しい "プロジェクト" ワークスペースは、コンピューティングと接続を含む、ハブからセキュリティ設定と共有構成を取得します。 この例では、ハブ ワークスペースが既に存在することを前提としています。

    from azure.ai.ml.entities import Project
    
    my_project_name = "myexampleproject"
    my_location = "East US"
    my_display_name = "My Example Project"
    
    my_hub = Project(name=my_hub_name, 
                     location=my_location,
                     display_name=my_display_name,
                     hub_id=created_hub.id)
    
    created_project_workspace = ml_client.workspaces.begin_create(workspace=my_hub).result()
    

詳細については、ワークスペース 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 にストレージ BLOB データ共同作成者ロールを付与する必要があります。

データの影響

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

重要

ワークスペースを作成する場合にのみ、高いビジネスへの影響を選択できます。 ワークスペースの作成後にこの設定を変更することはできません。

Tags

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

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

また、タグを使用して ポリシーを適用します

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

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

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

  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)

既定のアクションでは、ワークスペースに関連付けられているリソースは自動的には削除されません。 これらのリソースも削除するには、delete_dependent_resources を True に設定します。

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

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

重要

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

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

  1. Azure Portal で、検索ボックスにResource groups と入力し、検索結果でそれを選択します。

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

  3. [概要] ページで、[リソース グループの削除] を選択します。

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

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

トラブルシューティング

  • Azure Machine Learning Studio でサポートされているブラウザー: オペレーティング システムと互換性のある最も up-to-date ブラウザーを使用します。 サポートされているブラウザー:

    • Microsoft Edge (新しい Microsoft Edge、最新バージョン。注: Microsoft Edge 従来版はサポートされていません)
    • Safari (最新バージョン、Mac のみ)
    • Chrome (最新バージョン)
    • Firefox (最新バージョン)
  • Azure portal:

    • SDK または Azure portal で共有リンクからワークスペースに直接移動する場合、拡張機能のサブスクリプション情報を含む標準の [概要] ページは表示できません。 さらに、このシナリオでは、別のワークスペースに切り替えることもできません。 別のワークスペースを表示するには、Azure Machine Learning Studio に直接移動し、そのワークスペース名を検索します。
    • Azure Machine Learning Studio ですべての資産 (データ、実験、コンピューティングなど) にのみアクセスできます。 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 Services にデプロイする必要があります。

Azure Machine Learning でカスタマー マネージド キーを使用する場合は、次のサービス プロバイダーを登録する必要があります。

リソース プロバイダー 必要な理由
Microsoft.DocumentDB Azure Cosmos DB インスタンスは、ワークスペースのメタデータをログに記録します。
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 を最新の状態に保つ方法については、「脆弱性の管理」を参照してください。