CLI v1 を使用して Azure Machine Learning コンピューティング インスタンスを作成して管理する

適用対象:Azure CLI ml 拡張機能 v1Python SDK azureml v1

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

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

コンピューティング インスタンスは、企業で SSH ポートを開かなくても、仮想ネットワーク環境でジョブを安全に実行できます。 ジョブはコンテナー化された環境で実行され、モデルの依存関係が Docker コンテナーにパッケージ化されます。

この記事では、次のことについて説明します。

  • コンピューティング インスタンスを作成する
  • コンピューティング インスタンスを管理する (開始、停止、再起動、削除)

注意

この記事では、CLI v1 を使用してこれらのタスクを実行する方法のみを説明します。 コンピューティング インスタンスを管理する最近の方法については、Azure Machine Learning コンピューティング クラスターの作成に関する記事を参照してください。

前提条件

作成

重要

以下に ("プレビュー") と付記されている項目は、現在、パブリック プレビュー段階です。 プレビュー バージョンはサービス レベル アグリーメントなしで提供されています。運用環境のワークロードに使用することはお勧めできません。 特定の機能はサポート対象ではなく、機能が制限されることがあります。 詳しくは、Microsoft Azure プレビューの追加使用条件に関するページをご覧ください。

推定所要時間: 約 5 分です。

コンピューティング インスタンスの作成は、ワークスペースに対する 1 回限りのプロセスです。 このコンピューティングは、開発ワークステーションとして、またはトレーニング用のコンピューティング先として再利用できます。 ワークスペースには複数のコンピューティング インスタンスをアタッチすることができます。

コンピューティング インスタンスの作成に適用されるリージョンあたりの専用コア数は、VM ファミリ クォータ別およびリージョン合計クォータ別に、Azure Machine Learning コンピューティング クラスターのクォータと統合され、共有されます。 コンピューティング インスタンスを停止しても、コンピューティング インスタンスを再起動できるようにクォータは解放されません。 コンピューティング インスタンスの仮想マシン サイズは、作成後は変更できません。

次の例では、コンピューティング インスタンスの作成方法を示します。

適用対象:Python SDK azureml v1

import datetime
import time

from azureml.core.compute import ComputeTarget, ComputeInstance
from azureml.core.compute_target import ComputeTargetException

# Choose a name for your instance
# Compute instance name should be unique across the azure region
compute_name = "ci{}".format(ws._workspace_id)[:10]

# Verify that instance does not exist already
try:
    instance = ComputeInstance(workspace=ws, name=compute_name)
    print('Found existing instance, use it.')
except ComputeTargetException:
    compute_config = ComputeInstance.provisioning_configuration(
        vm_size='STANDARD_D3_V2',
        ssh_public_access=False,
        # vnet_resourcegroup_name='<my-resource-group>',
        # vnet_name='<my-vnet-name>',
        # subnet_name='default',
        # admin_user_ssh_public_key='<my-sshkey>'
    )
    instance = ComputeInstance.create(ws, compute_name, compute_config)
    instance.wait_for_completion(show_output=True)

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

管理する

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

ヒント

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

適用対象:Python SDK azureml v1

次の例では、コンピューティング インスタンスの名前は instance です。

  • 状態を取得する

    # get_status() gets the latest status of the ComputeInstance target
    instance.get_status()
    
  • Stop

    # stop() is used to stop the ComputeInstance
    # Stopping ComputeInstance will stop the billing meter and persist the state on the disk.
    # Available Quota will not be changed with this operation.
    instance.stop(wait_for_completion=True, show_output=True)
    
  • [開始]

    # start() is used to start the ComputeInstance if it is in stopped state
    instance.start(wait_for_completion=True, show_output=True)
    
  • やり直し

    # restart() is used to restart the ComputeInstance
    instance.restart(wait_for_completion=True, show_output=True)
    
  • 削除

    # delete() is used to delete the ComputeInstance target. Useful if you want to re-use the compute name
    instance.delete(wait_for_completion=True, show_output=True)
    

Azure RBAC を使用すると、ワークスペース内のどのユーザーにコンピューティング インスタンスの作成、削除、開始、停止、再起動を許可するかを制御できます。 ワークスペースの共同作成者および所有者ロール内のユーザーはすべて、ワークスペース全体でコンピューティング インスタンスを作成、削除、開始、停止、および再起動することができます。 ただし、特定のコンピューティング インスタンスの作成者、またはその作成者に代わって作成された場合は割り当てられたユーザーのみが、そのコンピューティング インスタンス上の Jupyter、JupyterLab、RStudio、Posit Workbench (旧称 RStudio Workbench) にアクセスすることが許可されます。 コンピューティング インスタンスは、ルート アクセス権を持つ 1 人のユーザー専用です。 そのユーザーは、インスタンスで実行されている Jupyter、JupyterLab、RStudio、Posit Workbench にアクセスできます。 コンピューティング インスタンスには、シングルユーザー サインインが用意され、すべてのアクションで、そのユーザーの 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

次のステップ