Azure Machine Learning コンピューティング インスタンスを管理する

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

Azure Machine Learning ワークスペースでコンピューティング インスタンスを管理する方法について説明します。

コンピューティング インスタンスは、クラウド内で完全に構成され管理される自分の開発環境として使用します。 開発とテストの場合、このインスタンスをトレーニング コンピューティング ターゲットとして使うこともできます。 コンピューティング インスタンスは複数のジョブを並列に実行でき、ジョブ キューを備えています。 開発環境であるため、コンピューティング インスタンスをワークスペース内の他のユーザーと共有することはできません。

この記事では、コンピューティング インスタンスを開始、停止、再起動、削除する方法について説明します。 コンピューティング インスタンスを作成する方法については、Azure Machine Learning コンピューティング インスタンスの作成を参照してください。

注意

この記事では、以下のセクションで CLI v2 について説明します。 CLI v1 をまだ使っている場合は、Azure Machine Learning コンピューティング クラスター CLI v1 の作成に関するページを参照してください。

前提条件

  • Azure Machine Learning ワークスペース。 詳細については、Azure Machine Learning ワークスペースの作成に関するページをご覧ください。 ストレージ アカウントで、コンピューティング インスタンスの作成を成功させるには、[ストレージ アカウント キーのアクセスを許可する] オプションを有効にする必要があります。

  • Machine Learning service 向け Azure CLI 拡張機能 (v2)Azure Machine Learning Python SDK (v2)、または Azure Machine Learning Visual Studio Code 拡張機能

  • Python SDK を使用する場合、ワークスペースを使用して開発環境を設定します。 環境の設定後、Python スクリプトでワークスペースにアタッチします。

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

    このコードを実行して、Azure ML ワークスペースに接続します。

    次のコードで、サブスクリプション ID、リソース グループ名、ワークスペース名を置き換えてください。 これらの値を見つけるには:

    1. Azure Machine Learning Studio にサインインします。
    2. 使用するワークスペースを開きます。
    3. 右上隅の Azure Machine Learning スタジオ ツール バーで、ワークスペース名を選びます。
    4. ワークスペース、リソース グループ、サブスクリプション ID の値をコードにコピーします。
    5. スタジオ内でノートブックを使っている場合は、1 つの値をコピーし、領域を閉じて貼り付けてから、次の値に戻る必要があります。
    # Enter details of your AML workspace
    subscription_id = "<SUBSCRIPTION_ID>"
    resource_group = "<RESOURCE_GROUP>"
    workspace = "<AML_WORKSPACE_NAME>"
    # get a handle to the workspace
    from azure.ai.ml import MLClient
    from azure.identity import DefaultAzureCredential
    
    ml_client = MLClient(
        DefaultAzureCredential(), subscription_id, resource_group, workspace
    )

    ml_client は、他のリソースやジョブの管理に使うワークスペースに対するハンドラーです。

管理する

コンピューティング インスタンスを開始、停止、再起動、削除します。 コンピューティング インスタンスは常に自動的にスケールダウンするとは限らないため、課金が継続されないように必ずリソースを停止してください。 コンピューティング インスタンスを停止すると、そのインスタンスは解放されます。 その後、必要なときにもう一度開始します。 コンピューティング インスタンスを停止するとコンピューティング時間の課金は停止されますが、ディスク、パブリック IP、Standard Load Balancer に対しては引き続き課金されます。

自動シャットダウンを有効にして、指定した時間後にコンピューティング インスタンスを自動的に停止することができます。

コンピューティング インスタンスが時刻と曜日に基づいて自動的に開始および停止するようにスケジュールを作成することもできます。

ヒント

コンピューティング インスタンスには 120 GB の OS ディスクがあります。 ディスク領域が不足する場合は、コンピューティング インスタンスを停止または再起動する前に、ターミナルを使用して少なくとも 1 から 2 GB をクリアしてください。 コンピューティング インスタンスは、sudo シャットダウンをターミナルから発行して停止しないでください。 コンピューティング インスタンスの一時ディスク サイズは、選択した VM サイズによって異なります。これは /mnt にマウントされます。

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

次の例では、コンピューティング インスタンスの名前は変数 ci_basic_name に格納されています。

  • 状態を取得する

    from azure.ai.ml.entities import ComputeInstance, AmlCompute
    
    # Get compute
    ci_basic_state = ml_client.compute.get(ci_basic_name)
  • Stop

    from azure.ai.ml.entities import ComputeInstance, AmlCompute
    
    # Stop compute
    ml_client.compute.begin_stop(ci_basic_name).wait()
  • [開始]

    from azure.ai.ml.entities import ComputeInstance, AmlCompute
    
    # Start compute
    ml_client.compute.begin_start(ci_basic_name).wait()
  • やり直し

    from azure.ai.ml.entities import ComputeInstance, AmlCompute
    
    # Restart compute
    ml_client.compute.begin_restart(ci_basic_name).wait()
  • 削除

    from azure.ai.ml.entities import ComputeInstance, AmlCompute
    
    ml_client.compute.begin_delete(ci_basic_name).wait()

Azure RBAC を使用すると、ワークスペース内のどのユーザーにコンピューティング インスタンスの作成、削除、開始、停止、再起動を許可するかを制御できます。 ワークスペースの共同作成者および所有者ロール内のユーザーはすべて、ワークスペース全体でコンピューティング インスタンスを作成、削除、開始、停止、および再起動することができます。 ただし、特定のコンピューティング インスタンスの作成者、またはその作成者に代わって作成された場合は割り当てられたユーザーのみが、そのコンピューティング インスタンス上の Jupyter、JupyterLab、および RStudio にアクセスすることが許可されます。 コンピューティング インスタンスは、ルート アクセス権を持つ 1 人のユーザー専用です。 そのユーザーは、インスタンスで実行されている Jupyter、JupyterLab、RStudio にアクセスできます。 コンピューティング インスタンスには、シングルユーザー サインインが用意され、すべてのアクションで、そのユーザーの ID が Azure RBAC と実験ジョブの属性に使われます。 SSH アクセスは、公開/秘密キーのメカニズムを通じて制御されます。

Azure RBAC によって、次のアクションを制御できます。

  • Microsoft.MachineLearningServices/workspaces/computes/read
  • Microsoft.MachineLearningServices/workspaces/computes/write
  • Microsoft.MachineLearningServices/workspaces/computes/delete
  • Microsoft.MachineLearningServices/workspaces/computes/start/action
  • Microsoft.MachineLearningServices/workspaces/computes/stop/action
  • Microsoft.MachineLearningServices/workspaces/computes/restart/action
  • Microsoft.MachineLearningServices/workspaces/computes/updateSchedules/action

コンピューティング インスタンスを作成するには、次のアクションを実行するためのアクセス許可が必要です。

  • Microsoft.MachineLearningServices/workspaces/computes/write
  • Microsoft.MachineLearningServices/workspaces/checkComputeNameAvailability/action

コンピューティング インスタンスのバージョンの監査と監視

コンピューティング インスタンスがデプロイされると、自動更新されることはありません。 Microsoft リリースは、毎月新しい VM イメージをリリースします。 最新バージョンを使用して最新の状態を維持するためのオプションについては、脆弱性の管理に関するページを参照してください。

インスタンスのオペレーティング システムのバージョンが最新かどうかを追跡するには、CLI、SDK または Studio の UI を使用して、そのバージョンをクエリで照会できます。

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

from azure.ai.ml.entities import ComputeInstance, AmlCompute

# Display operating system version
instance = ml_client.compute.get("myci")
print instance.os_image_metadata

この例で使われているクラス、メソッド、パラメーターの詳細については、次のリファレンス ドキュメントをご覧ください。

IT 管理者は Azure Policy を使用して、Azure Policy コンプライアンス ポータルでワークスペース全体のインスタンスのインベントリを監視できます。 Azure サブスクリプションまたは Azure 管理グループ スコープに、組み込みのポリシー Audit Azure Machine Learning Compute Instances with an outdated operating system を割り当てます。

次のステップ