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

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

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

前提条件

制限事項

  • 新しいワークスペースを作成する場合は、ワークスペースに必要なサービスを自動的に作成するか、既存のサービスを使用することができます。 ワークスペースとは異なる 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) も作成されます。 現在、ACR ではリソース グループ名での Unicode 文字がサポートされていないため、これらの文字が含まれていないリソース グループを使用します。

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

ヒント

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

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

ワークスペースの作成

適用対象:Python SDK azureml v1

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

    from azureml.core import Workspace
    
    ws = Workspace.create(name='myworkspace',
                   subscription_id='<azure-subscription-id>',
                   resource_group='myresourcegroup',
                   create_resource_group=True,
                   location='eastus2'
                   )
    

    ワークスペースで使用する既存の Azure リソース グループがある場合は、create_resource_group を False に設定します。

  • 複数のテナント。複数のアカウントがある場合は、使用する Azure Active Directory のテナント ID を追加します。 Azure portal で、 [Azure Active Directory]、[外部 ID] からテナント ID を見つけます。

    from azureml.core.authentication import InteractiveLoginAuthentication
    from azureml.core import Workspace
    
    interactive_auth = InteractiveLoginAuthentication(tenant_id="my-tenant-id")
    ws = Workspace.create(name='myworkspace',
                subscription_id='<azure-subscription-id>',
                resource_group='myresourcegroup',
                create_resource_group=True,
                location='eastus2',
                auth=interactive_auth
                )
    
  • ソブリン クラウド 。 ソブリン クラウドで作業している場合は、Azure に対して認証するための追加のコードが必要になります。

    from azureml.core.authentication import InteractiveLoginAuthentication
    from azureml.core import Workspace
    
    interactive_auth = InteractiveLoginAuthentication(cloud="<cloud name>") # for example, cloud="AzureUSGovernment"
    ws = Workspace.create(name='myworkspace',
                subscription_id='<azure-subscription-id>',
                resource_group='myresourcegroup',
                create_resource_group=True,
                location='eastus2',
                auth=interactive_auth
                )
    
  • 既存の Azure リソースを使用する。 既存の Azure リソースを Azure リソース ID 形式で使用するワークスペースを作成することもできます。 Azure portal または SDK を使用して、特定の Azure リソース ID を見つけます。 この例では、リソース グループ、ストレージ アカウント、キー コンテナー、App Insights、コンテナー レジストリが既に存在していることを前提としています。

    import os
    from azureml.core import Workspace
    from azureml.core.authentication import ServicePrincipalAuthentication
    
    service_principal_password = os.environ.get("AZUREML_PASSWORD")
    
    service_principal_auth = ServicePrincipalAuthentication(
        tenant_id="<tenant-id>",
        username="<application-id>",
        password=service_principal_password)
    
                          auth=service_principal_auth,
                               subscription_id='<azure-subscription-id>',
                               resource_group='myresourcegroup',
                               create_resource_group=False,
                               location='eastus2',
                               friendly_name='My workspace',
                               storage_account='subscriptions/<azure-subscription-id>/resourcegroups/myresourcegroup/providers/microsoft.storage/storageaccounts/mystorageaccount',
                               key_vault='subscriptions/<azure-subscription-id>/resourcegroups/myresourcegroup/providers/microsoft.keyvault/vaults/mykeyvault',
                               app_insights='subscriptions/<azure-subscription-id>/resourcegroups/myresourcegroup/providers/microsoft.insights/components/myappinsights',
                               container_registry='subscriptions/<azure-subscription-id>/resourcegroups/myresourcegroup/providers/microsoft.containerregistry/registries/mycontainerregistry',
                               exist_ok=False)
    

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

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

ネットワーク

重要

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

Azure Machine Learning Python SDK には、PrivateEndpointConfig クラスが用意されています。これを Workspace.create() で使用すると、プライベート エンドポイントを使用してワークスペースを作成できます。 このクラスには、既存の仮想ネットワークが必要です。

脆弱性のスキャン

Microsoft Defender for Cloud では、統合されたセキュリティ管理と高度な脅威に対する保護がハイブリッド クラウド ワークロードに提供されます。 リソースのスキャンを Microsoft Defender for Cloud に許可し、その推奨事項に従う必要があります。 詳細については、Defender for Cloud による Azure Container Registry イメージのスキャンおよび Azure Kubernetes Service と Defender for Cloud の統合に関するページを参照してください。

詳細設定

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

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

重要

業務への影響が大きいは、ワークスペースの作成時にのみ選択できます。 ワークスペースの作成後にこの設定を変更することはできません。

独自のキーを使用する

データ暗号化用の独自のキーを用意できます。 これを行うと、自分の Azure サブスクリプションにメタデータを格納する Azure Cosmos DB インスタンスが作成されます。 詳細については、「[カスタマー マネージド キー](concept-customer-managed keys.md)」を参照してください。

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

重要

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

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

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

cmk_keyvaultresource_cmk_uri を使用して、カスタマー マネージド キーを指定します。

from azureml.core import Workspace
   ws = Workspace.create(name='myworkspace',
               subscription_id='<azure-subscription-id>',
               resource_group='myresourcegroup',
               create_resource_group=True,
               location='eastus2'
               cmk_keyvault='subscriptions/<azure-subscription-id>/resourcegroups/myresourcegroup/providers/microsoft.keyvault/vaults/<keyvault-name>', 
               resource_cmk_uri='<key-identifier>'
               )

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

コンピューティング インスタンスを作成する場合は、この手順をスキップしてください。 このファイルのコピーは、コンピューティング インスタンスによって既に作成されています。

このワークスペース (ws) を参照するローカル環境でコードを使用する場合は、構成ファイルを記述します。

ws.write_config()

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

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

適用対象:Python SDK azureml v1

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

from azureml.core import Workspace

ws = Workspace.from_config()
  • 複数のテナント。複数のアカウントがある場合は、使用する Azure Active Directory のテナント ID を追加します。 Azure portal で、 [Azure Active Directory]、[外部 ID] からテナント ID を見つけます。

    from azureml.core.authentication import InteractiveLoginAuthentication
    from azureml.core import Workspace
    
    interactive_auth = InteractiveLoginAuthentication(tenant_id="my-tenant-id")
    ws = Workspace.from_config(auth=interactive_auth)
    
  • ソブリン クラウド 。 ソブリン クラウドで作業している場合は、Azure に対して認証するための追加のコードが必要になります。

    適用対象:Python SDK azureml v1

    from azureml.core.authentication import InteractiveLoginAuthentication
    from azureml.core import Workspace
    
    interactive_auth = InteractiveLoginAuthentication(cloud="<cloud name>") # for example, cloud="AzureUSGovernment"
    ws = Workspace.from_config(auth=interactive_auth)
    

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

ワークスペースの検索

使用できるすべてのワークスペースの一覧を表示します。

適用対象:Python SDK azureml v1

Azure portal の [サブスクリプション] ページで、サブスクリプションを見つけます。 ID をコピーして下のコードで使用して、そのサブスクリプションで使用可能なすべてのワークスペースを確認します。

from azureml.core import Workspace

Workspace.list('<subscription-id>')

Workspace.list(..) メソッドによって、完全なワークスペース オブジェクトが返されることはありません。 これには、サブスクリプション内の既存のワークスペースに関する基本情報のみが含まれます。 特定のワークスペースの完全なオブジェクトを取得するには、Workspace.get(..) を使用します。

ワークスペース全体で資産を検索する (プレビュー)

パブリック プレビューの検索機能を使用すると、組織内のすべてのワークスペース、リソース グループ、サブスクリプションについて、ジョブ、モデル、コンポーネント、環境、データなどの機械学習資産を、統合されたグローバル ビューを通じて検索できます。

  1. Azure Machine Learning スタジオから開始します。
  2. ワークスペースが開いている場合は、ページの上部にある階層リンクの [Microsoft] メニュー項目または [Microsoft] リンクのいずれかを選択します。

Screenshot shows two ways to get to the home page - menu item or breadcrumb link.

スタジオの [Microsoft] ページの上部にあるグローバル検索バーに検索テキストを入力し、Enter を押して 'contains' 検索をトリガーします。 contains 検索では、指定された資産のすべてのメタデータ フィールドがスキャンされ、結果の関連性が並べ替えられます。

Screenshot shows the top search bar.

資産のクイック リンクを使用して、作成したジョブ、モデル、コンポーネント、環境、およびデータセットの検索結果に移動できます。

また、検索バー ドロップダウンの [変更] リンクを使用して、該当するサブスクリプションとワークスペースのスコープを変更することもできます。

Search-bar list

任意の数のフィルターを選んで、より具体的な検索クエリを作成します。 次のフィルターがサポートされています。

  • Job:
  • モデル:
  • コンポーネント:
  • タグ:
  • SubmittedBy:
  • 環境:
  • データセット:

資産フィルター (ジョブ、モデル、コンポーネント、環境、データセット) が存在する場合、結果のスコープはそれらのタブに設定されます。 その他のフィルターは、クエリに資産フィルターも存在するのでない限り、すべての資産に適用されます。 同様に、フィルターと共にフリー テキスト検索を指定できますが、資産フィルターによって選択されたタブにスコープが設定されます (存在する場合)。

ヒント

  • テキストの完全一致を検索します。 contains 検索には、フリー テキスト クエリを使用します。
  • スペースなどの特殊文字を含む値を引用符で囲む必要があります。
  • 重複するフィルターが指定されている場合は、最初のフィルターだけが検索結果で認識されます。
  • 任意の言語の入力テキストがサポートされますが、フィルター文字列は指定されたオプション (例: submittedBy:)。
  • tags フィルターでは、コンマで区切られた複数のキーと値のペアを使用できます (例: tags:"key1:value1, key2:value2")。

検索結果を表示する

検索結果は、個々の [ジョブ][モデル][コンポーネント][環境]、および [データ] タブで表示できます。 資産を選択すると、関連するワークスペースのコンテキストで [詳細] ページが開きます。 表示する権限がないワークスペースの結果は表示されません。

Results displayed after search

この機能を以前の更新で使用していた場合は、検索結果エラーが発生する可能性があります。 [Directory + Subscription + Workspace (ディレクトリ + サブスクリプション + ワークスペース)] タブで、優先ワークスペースを選び直してください。

重要

他の言語(漢字など)の複数語の用語では、検索結果が予期せぬものになることがあります。

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

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

警告

Azure Machine Learning ワークスペースはいったん削除されると、元に戻せません。

ワークスペースを誤って削除した場合も、ノートブックを引き続き取得することができる可能性があります。 詳細については、「事業継続とディザスター リカバリーのためのフェールオーバー」を参照してください。

適用対象:Python SDK azureml v1

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

ws.delete(delete_dependent_resources=False, no_wait=False)

既定のアクションによって、ワークスペースに関連付けられているリソース (コンテナー レジストリ、ストレージ アカウント、キー コンテナー、Application Insights) が削除されることはありません。 これらのリソースも削除するには、delete_dependent_resources を True に設定します。

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

重要

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

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

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

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

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

    Screenshot of the selections to delete a resource group in the 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 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/NotebookProxies Azure Machine Learning コンピューティング インスタンス上の統合されたノートブック。
Microsoft.ContainerService トレーニング済みのモデルを Azure Kubernetes Service にデプロイすることを計画している場合。

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

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

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

Azure Container Registry の削除

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

警告

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

ワークスペースの作成例:

次のステップ

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

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

ワークスペースの問題を確認するには、「ワークスペース診断の使用方法」を参照してください。

ワークスペースを別の Azure サブスクリプションに移動する必要がある場合、ワークスペースを移動する方法に関するページを参照してください。