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

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

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

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

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

セットアップ スクリプト (プレビュー) を使って、独自のカスタム環境でコンピューティング インスタンスを作成することもできます。

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

注意

この記事では、以下のセクションで 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 は、他のリソースやジョブの管理に使うワークスペースに対するハンドラーです。

作成

重要

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

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

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

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

コンピューティング インスタンスを作成する最速の方法は、「クイックスタート: Azure Machine Learning の利用を開始するために必要なワークスペース リソースを作成する」に従うことです。

または、次の例を使用し、より多くのオプションを使用してコンピューティング インスタンスを作成します。

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

# Compute Instances need to have a unique name across the region.
# Here we create a unique name with current datetime
from azure.ai.ml.entities import ComputeInstance, AmlCompute
import datetime

ci_basic_name = "basic-ci" + datetime.datetime.now().strftime("%Y%m%d%H%M")
ci_basic = ComputeInstance(name=ci_basic_name, size="STANDARD_DS3_v2")
ml_client.begin_create_or_update(ci_basic).result()

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

代理作成 (プレビュー)

重要

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

管理者は、データ科学者に代わってコンピューティング インスタンスを作成し、次のようにして彼らにそのインスタンスを割り当てることができます。

データ科学者向けにコンピューティング インスタンスを作成する場合は、次に示す Azure ロールベースのアクセス制御 (Azure RBAC) アクセス許可が必要です。

  • Microsoft.MachineLearningServices/workspaces/computes/start/action
  • Microsoft.MachineLearningServices/workspaces/computes/stop/action
  • Microsoft.MachineLearningServices/workspaces/computes/restart/action
  • Microsoft.MachineLearningServices/workspaces/computes/applicationaccess/action
  • Microsoft.MachineLearningServices/workspaces/computes/updateSchedules/action

データ科学者は、コンピューティング インスタンスを開始、停止、再起動できます。 コンピューティング インスタンスは、次に使用できます。

  • Jupyter
  • JupyterLab
  • RStudio
  • Posit Workbench (旧称 RStudio Workbench)
  • 統合されたノートブック

アイドリングからのシャットダウンを有効にする (プレビュー)

重要

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

オンになっているが非アクティブなコンピューティング インスタンスに対して課金されないように、非アクティブのためコンピューティング インスタンスをシャットダウンするタイミングを構成できます。

次の条件が満たされている場合、コンピューティング インスタンスは非アクティブと見なされます。

  • アクティブな Jupyter カーネル セッションがない (これは、Jupyter、JupyterLab、または対話型のノートブックで Notebooks が使われていないことを意味します)
  • アクティブな Jupyter ターミナル セッションがない
  • アクティブな AzureML の実行や実験がない
  • SSH 接続がない
  • VS コード接続がない。コンピューティング インスタンスが非アクティブと見なされるためには、VS Code 接続を閉じる必要があります。 VS コードで 3 時間アクティビティが検出されない場合、セッションは自動終了されます。

コンピューティング インスタンスにインストールされているカスタム アプリケーションでのアクティビティは考慮されません。 また、非アクティブな期間に関するいくつかの基本的な境界もあります。コンピューティング インスタンスは、15 分以上、最大 3 日間非アクティブである必要があります。

また、コンピューティング インスタンスが既に一定時間アイドル状態になっている場合、アイドリングからのシャットダウン設定が現在のアイドル期間よりも短い時間に更新されると、アイドル時間クロックは 0 にリセットされます。 たとえば、コンピューティング インスタンスが既に 20 分間アイドル状態で、シャットダウン設定が 15 分に更新されている場合、アイドル時間クロックは 0 にリセットされます。

この機能にアクセスするには、プレビュー機能の管理を使用します。

  1. ワークスペースのツール バーで、[プレビュー機能の管理] イメージを選択します。
  2. [アイドル状態のコンピューティング インスタンスの自動シャットダウンを構成する] が表示されるまで下にスクロールします。
  3. スイッチを切り替えて機能を有効にします。

スクリーンショット: 自動シャットダウンを有効にします。

有効にすると、コンピューティング インスタンスの作成時に、または次のインターフェイスを使用して既存のコンピューティング インスタンスに対して設定を構成できます。

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

新しいコンピューティング インスタンスを作成するときに、idle_time_before_shutdown_minutes パラメーターを追加します。

# Note that idle_time_before_shutdown has been deprecated.
ComputeInstance(name=ci_basic_name, size="STANDARD_DS3_v2", idle_time_before_shutdown_minutes="30")

Python SDK を使用して、既存のコンピューティング インスタンスのアイドル時間を変更することはできません。

次を使用してアイドル時間を変更することもできます。

  • REST API

    エンドポイント:

    POST https://management.azure.com/subscriptions/{SUB_ID}/resourceGroups/{RG_NAME}/providers/Microsoft.MachineLearningServices/workspaces/{WS_NAME}/computes/{CI_NAME}/updateIdleShutdownSetting?api-version=2021-07-01
    

    本文は次のようになります。

    {
        "idleTimeBeforeShutdown": "PT30M" // this must be a string in ISO 8601 format
    }
    
  • ARM テンプレート: 新しいコンピューティング インスタンスの作成時にのみ構成可能

    // Note that this is just a snippet for the idle shutdown property in an ARM template
    {
        "idleTimeBeforeShutdown":"PT30M" // this must be a string in ISO 8601 format
    }
    

Azure Policy のサポート

管理者は、組み込みの Azure Policy 定義を使って、特定のサブスクリプションやリソース グループ内のすべてのコンピューティング インスタンスに対して自動停止を適用できます。

  1. Azure portal で [Azure Policy] に移動します。

  2. [定義] で、アイドル シャットダウン ポリシーを探します。

    Azure portal のアイドル シャットダウン ポリシーのスクリーンショット。

  3. 必要なスコープにポリシーを割り当てます。

独自のカスタム Azure ポリシーを作成することもできます。 たとえば、下のポリシーを割り当てると、すべての新しいコンピューティング インスタンスには、非アクティブ期間が 60 分で自動停止が構成されます。

{
  "mode": "All",
  "policyRule": {
    "if": {
      "allOf": [
        {
          "field": "type",
          "equals": "Microsoft.MachineLearningServices/workspaces/computes"
        },
        {
          "field": "Microsoft.MachineLearningServices/workspaces/computes/computeType",
          "equals": "ComputeInstance"
        },
        {
          "anyOf": [
            {
              "field": "Microsoft.MachineLearningServices/workspaces/computes/idleTimeBeforeShutdown",
              "exists": false
            },
            {
              "value": "[empty(field('Microsoft.MachineLearningServices/workspaces/computes/idleTimeBeforeShutdown'))]",
              "equals": true
            }
          ]
        }
      ]
    },
    "then": {
      "effect": "append",
      "details": [
        {
          "field": "Microsoft.MachineLearningServices/workspaces/computes/idleTimeBeforeShutdown",
          "value": "PT60M"
        }
      ]
    }
  },
  "parameters": {}
}

自動開始と停止をスケジュール設定する

自動シャットダウンと自動開始のスケジュールを複数定義します。 たとえば、午前 9 時に開始し、午後 6 時に停止する月曜日から木曜日のスケジュールを作成し、2 番目のスケジュールを金曜日の午前 9 時に開始して午後 4 時に停止するように作成します。 コンピューティング インスタンスごとに合計 4 つのスケジュールを作成できます。

コンピューティング インスタンスの代理作成のためのスケジュールを定義することもできます。 コンピューティング インスタンスを停止状態で作成するスケジュールを作成できます。 停止したコンピューティング インスタンスは、別のユーザーの代わりにコンピューティング インスタンスを作成する場合に便利です。

スケジュールされたシャットダウンの前に、コンピューティング インスタンスがもうすぐシャットダウンすることを警告する通知がユーザーに表示されます。 その時点で、ユーザーは、次のシャットダウン イベントを無視することを選択できます (たとえば、コンピューティング インスタンスを使用している途中の場合)。

Studio でスケジュールを作成する

  1. フォームに記入します

  2. フォームの 2 ページ目で、 [詳細設定の表示] を開きます。

  3. [スケジュールの追加] を選択し、新しいスケジュールを追加します。

    スクリーンショット: 詳細設定でスケジュールを追加します。

  4. [コンピューティング インスタンスを開始する] または [コンピューティング インスタンスを停止する] を選択します。

  5. [タイム ゾーン] を選択します。

  6. [開始時刻] または [シャットダウン時刻] を選択します。

  7. このスケジュールがアクティブになる日を選択します。

    スクリーンショット: コンピューティング インスタンスのシャットダウンをスケジュールします。

  8. 別のスケジュールを作成する場合は、 [スケジュールの追加] をもう一度選択します。

コンピューティング インスタンスが作成されたら、コンピューティング インスタンスの詳細セクションからスケジュールを表示、編集、または新しいスケジュールを追加できます。

注意

タイムゾーン ラベルでは、夏時間については考慮されません。 たとえば、(UTC + 01:00) のアムステルダム、ベルリン、ベルン、ローマ、ストックホルム、ウィーンは、夏時間中は、実際は UTC + 02:00 になります。

CLI でスケジュールを作成する

適用対象: Azure CLI ml 拡張機能 v2 (現行)

az ml compute create -f create-instance.yml

ファイル create-instance.yml がある場所:

$schema: https://azuremlschemas.azureedge.net/latest/computeInstance.schema.json 
name: schedule-example-i
type: computeinstance
size: STANDARD_DS3_v2
schedules:
   compute_start_stop:
      - action: stop
        trigger:
         type: cron
         start_time: "2021-03-10T21:21:07"
         time_zone: Pacific Standard Time
         expression: 0 18 * * *

SDK でスケジュールを作成する

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

from azure.ai.ml import MLClient
from azure.ai.ml.constants import TimeZone
from azure.ai.ml.entities import ComputeInstance, AmlCompute, ComputeSchedules, ComputeStartStopSchedule, RecurrencePattern, RecurrenceTrigger
from azure.identity import DefaultAzureCredential
from dateutil import tz
import datetime
# Enter details of your AML workspace
subscription_id = "<guid>"
resource_group = "sample-rg"
workspace = "sample-ws"
# get a handle to the workspace
ml_client = MLClient(
    DefaultAzureCredential(), subscription_id, resource_group, workspace
)
ci_minimal_name = "sampleCI"
mytz = tz.gettz("Asia/Kolkata")
now = datetime.datetime.now(tz = mytz)
starttime = now + datetime.timedelta(minutes=25)
triggers = RecurrenceTrigger(frequency="day", interval=1, schedule=RecurrencePattern(hours=17, minutes=30))
myschedule = ComputeStartStopSchedule(start_time=starttime, time_zone=TimeZone.INDIA_STANDARD_TIME, trigger=triggers, action="Stop")
com_sch = ComputeSchedules(compute_start_stop=[myschedule])
ci_minimal = ComputeInstance(name=ci_minimal_name, schedules=com_sch)
ml_client.begin_create_or_update(ci_minimal)

Resource Manager テンプレートでスケジュールを作成する

Resource Manager テンプレートを使用して、コンピューティング インスタンスの自動の開始と停止をスケジュール設定できます。

Resource Manager テンプレートに、以下を追加します。

"schedules": "[parameters('schedules')]"

次に、cron または LogicApps 式を使用して、パラメーター ファイル内のインスタンスを開始または停止するスケジュールを定義します。

        "schedules": {
        "value": {
        "computeStartStop": [
          {
            "triggerType": "Cron",
            "cron": {              
              "timeZone": "UTC",
              "expression": "0 18 * * *"
            },
            "action": "Stop",
            "status": "Enabled"
          },
          {
            "triggerType": "Cron",
            "cron": {              
              "timeZone": "UTC",
              "expression": "0 8 * * *"
            },
            "action": "Start",
            "status": "Enabled"
          },
          { 
            "triggerType": "Recurrence", 
            "recurrence": { 
              "frequency": "Day", 
              "interval": 1, 
              "timeZone": "UTC", 
              "schedule": { 
                "hours": [17], 
                "minutes": [0]
              } 
            }, 
            "action": "Stop", 
            "status": "Enabled" 
          } 
        ]
      }
    }
  • アクションには、"Start" または "Stop" の値を指定できます。

  • Recurrence のトリガーの種類では、このRecurrenceと一緒に、ロジック アプリと同じ構文を使用します。

  • cron のトリガーの種類には、次の標準の cron 構文を使用します。

    // Crontab expression format: 
    // 
    // * * * * * 
    // - - - - - 
    // | | | | | 
    // | | | | +----- day of week (0 - 6) (Sunday=0) 
    // | | | +------- month (1 - 12) 
    // | | +--------- day of month (1 - 31) 
    // | +----------- hour (0 - 23) 
    // +------------- min (0 - 59) 
    // 
    // Star (*) in the value field above means all legal values as in 
    // braces for that column. The value column can have a * or a list 
    // of elements separated by commas. An element is either a number in 
    // the ranges shown above or two numbers in the range separated by a 
    // hyphen (meaning an inclusive range). 
    

1 つのスケジュールを既定にするための Azure Policy サポート

Azure Policy を使用して、サブスクリプション内のすべてのコンピューティング インスタンスに対して存在するシャットダウン スケジュールを適用するか、何も存在しない場合のスケジュールを既定値として設定します。 午後 10 時 (太平洋標準時) のシャットダウン スケジュールを既定にするためのサンプル ポリシーを次に示します。

{
    "mode": "All",
    "policyRule": {
     "if": {
      "allOf": [
       {
        "field": "Microsoft.MachineLearningServices/workspaces/computes/computeType",
        "equals": "ComputeInstance"
       },
       {
        "field": "Microsoft.MachineLearningServices/workspaces/computes/schedules",
        "exists": "false"
       }
      ]
     },
     "then": {
      "effect": "append",
      "details": [
       {
        "field": "Microsoft.MachineLearningServices/workspaces/computes/schedules",
        "value": {
         "computeStartStop": [
          {
           "triggerType": "Cron",
           "cron": {
            "startTime": "2021-03-10T21:21:07",
            "timeZone": "Pacific Standard Time",
            "expression": "0 22 * * *"
           },
           "action": "Stop",
           "status": "Enabled"
          }
         ]
        }
       }
      ]
     }
    }
}    

マネージド ID を割り当てる (プレビュー)

重要

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

システム割り当てまたはユーザー割り当てのマネージド ID をコンピューティング インスタンスに割り当てて、ストレージのような他の Azure リソースに対する認証を行うことができます。 認証にマネージド ID を使うと、ワークスペースのセキュリティと管理を向上させることができます。 たとえば、ユーザーがコンピューティング インスタンスにログインした場合にのみ、トレーニング データへのアクセスを許可できます。 または、共通のユーザー割り当てマネージド ID を使って、特定のストレージ アカウントへのアクセスを許可します。

Azure ML スタジオでマネージド ID を使ってコンピューティング インスタンスを作成できます。

  1. フォームに入力して新しいコンピューティング インスタンスを作成します。
  2. [次: 詳細設定] を選びます。
  3. [Assign a managed identity] (マネージド ID を割り当てる) を有効にします。
  4. [ID の種類] で、[システム割り当て済み] または [ユーザー割り当て済み] を選びます。
  5. [ユーザー割り当て済み] を選んだ場合は、サブスクリプションと ID の名前を選びます。

V2 CLI を使って、システム割り当てマネージド ID でコンピューティング インスタンスを作成できます。

az ml compute create --name myinstance --identity-type SystemAssigned --type ComputeInstance --resource-group my-resource-group --workspace-name my-workspace

また、V2 CLI と yaml ファイルを使って、たとえばユーザー割り当てマネージド ID でコンピューティング インスタンスを作成することもできます。

azure ml compute create --file compute.yaml --resource-group my-resource-group --workspace-name my-workspace

ID の定義は compute.yaml ファイルに含まれます。

https://azuremlschemas.azureedge.net/latest/computeInstance.schema.json
name: myinstance
type: computeinstance
identity:
  type: user_assigned
  user_assigned_identities: 
    - resource_id: identity_resource_id

マネージド ID が作成されたら、データストアのストレージ アカウントの、少なくともストレージ BLOB データ閲覧者ロールをマネージド ID に付与します (「ストレージ サービスへのアクセス」を参照)。 その後、コンピューティング インスタンスを使うときは、そのマネージド ID がデータストアに対する認証に自動的に使われます。

Note

作成されたシステム マネージド ID の名前は、お使いの Azure Active Directory 内で /workspace-name/computes/compute-instance-name の形式になります。

マネージド ID を手動で使って、他の Azure リソースに対する認証を行うこともできます。 次の例では、それを使って Azure Resource Manager のアクセス トークンを取得する方法を示します。

import requests

def get_access_token_msi(resource):
    client_id = os.environ.get("DEFAULT_IDENTITY_CLIENT_ID", None)
    resp = requests.get(f"{os.environ['MSI_ENDPOINT']}?resource={resource}&clientid={client_id}&api-version=2017-09-01", headers={'Secret': os.environ["MSI_SECRET"]})
    resp.raise_for_status()
    return resp.json()["access_token"]

arm_access_token = get_access_token_msi("https://management.azure.com")

Note

認証にマネージド ID と Azure CLI を使用するには、ログイン時にユーザー名として ID クライアント ID を指定します。 az login --identity --username $DEFAULT_IDENTITY_CLIENT_ID

RStudio や Posit Workbench などのカスタム アプリケーションの追加 (プレビュー)

重要

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

コンピューティング インスタンスの作成時に、RStudio や Posit Workbench (旧称 RStudio Workbench) などの他のアプリケーションを設定できます。 スタジオで次の手順に従い、コンピューティング インスタンスにカスタム アプリケーションを設定します

  1. フォームに入力して新しいコンピューティング インスタンスを作成します
  2. [次: 詳細設定] を選びます
  3. [カスタム アプリケーション セットアップ] (RStudio Workbench など) セクションで [アプリケーションの追加] を選択します

カスタム サービス セットアップを示すスクリーンショット。

Posit Workbench (旧称 RStudio Workbench) の設定

RStudio は、ML とデータ サイエンス プロジェクトの R 開発者の間で最も人気のある IDE の 1 つです。 他の開発ツールと共に RStudio へのアクセスを提供する Posit Workbench を簡単に設定して、独自の Posit ライセンスを使用してコンピューティング インスタンス上で実行し、Posit Workbench が提供する豊富な機能セットにアクセスできます

  1. コンピューティング インスタンスを作成するときに、前述の手順でアプリケーションを追加します。
  2. [アプリケーション] ドロップダウンで [Posit Workbench (独自のライセンスを取得する)] を選び、[ライセンス キー] フィールドに Posit Workbench のライセンス キーを入力します。 Posit Workbench ライセンスまたは試用版ライセンスは、Posit から取得できます。
  3. [作成] を選び、Posit Workbench アプリケーションをコンピューティング インスタンスに追加します。

Posit Workbench の設定を示すスクリーンショット。

重要

プライベート リンク ワークスペースを使用している場合は、docker イメージ、pkg-containers.githubusercontent.com、ghcr.io にアクセスできることを確認します。 また、8704 から 8993 の範囲で公開ポートを使用します。 Posit Workbench (旧称 RStudio Workbench) の場合、https://www.wyday.com へのネットワーク アクセスを提供することで、ライセンスに確実にアクセスできるようにします。

注意

  • Posit からワークスペース ファイル ストアにアクセスするためのサポートはまだ利用できません。
  • Posit Workbench の複数のインスタンスにアクセスするときに、"400 無効な要求です。 要求ヘッダーまたは Cookie が大きすぎます" というエラーが表示される場合は、新しいブラウザーを使用するか、シークレット モードのブラウザーからアクセスしてください。

RStudio (オープンソース) の設定

RStudio を使うには、次のようにカスタム アプリケーションを設定します。

  1. コンピューティング インスタンスを作成するときに、前述の手順でアプリケーションを追加します。

  2. [アプリケーション] ドロップダウンで [カスタム アプリケーション] を選びます

  3. 使用する [アプリケーション名] を構成します。

  4. アプリケーションをターゲット ポート8787 で動作するように設定します - 下記の RStudio オープンソースの Docker イメージは、このターゲット ポートで実行させる必要があります。

  5. アプリケーションを公開ポート8787 でアクセスできるように設定します - 必要に応じて、別の公開ポートでアクセスできるようにアプリケーションを構成することもできます。

  6. Docker イメージghcr.io/azure/rocker-rstudio-ml-verse:latest に指定します。

  7. [作成] を選び、RStudio をコンピューティング インスタンスのカスタム アプリケーションとして設定します。

RStudio をカスタム アプリケーションとして設定するためのフォームを示すスクリーンショット

重要

プライベート リンク ワークスペースを使用している場合は、docker イメージ、pkg-containers.githubusercontent.com、ghcr.io にアクセスできることを確認します。 また、8704 から 8993 の範囲で公開ポートを使用します。 Posit Workbench (旧称 RStudio Workbench) の場合、https://www.wyday.com へのネットワーク アクセスを提供することで、ライセンスに確実にアクセスできるようにします。

他のカスタム アプリケーションのセットアップ

Docker イメージ上のアプリケーションを指定し、コンピューティング インスタンスに他のカスタム アプリケーションを設定します。

  1. コンピューティング インスタンスを作成するときに、前述の手順でアプリケーションを追加します。
  2. [アプリケーション] ドロップダウンで [カスタム アプリケーション] を選びます。
  3. アプリケーション名、アプリケーションが実行するターゲット ポート、アプリケーションにアクセスする公開ポート、アプリケーションを含む Docker イメージを構成します。
  4. 必要に応じて、アプリケーションに使う環境変数を追加します。
  5. [マウントをバインドする] を使用して、既定のストレージ アカウント内のファイルへのアクセスを追加します。
    • ホスト パスとして /home/azureuser/cloudfiles を指定します。
    • コンテナー パスとして /home/azureuser/cloudfiles を指定します。
    • [追加] を選択してこのマウントを追加します。 ファイルはマウントされているため、これらに加えた変更は、他のコンピューティング インスタンスやアプリケーションで使用できるようになります。
  6. [作成] を選び、コンピューティング インスタンスのカスタム アプリケーションを設定します。

カスタム アプリケーション設定を示すスクリーンショット。

重要

プライベート リンク ワークスペースを使用している場合は、docker イメージ、pkg-containers.githubusercontent.com、ghcr.io にアクセスできることを確認します。 また、8704 から 8993 の範囲で公開ポートを使用します。 Posit Workbench (旧称 RStudio Workbench) の場合、https://www.wyday.com へのネットワーク アクセスを提供することで、ライセンスに確実にアクセスできるようにします。

スタジオでのカスタム アプリケーションへのアクセス

スタジオで設定したカスタム アプリケーションにアクセスします。

  1. 左側にある [コンピューティング] を選択します。
  2. [コンピューティング インスタンス] タブで、[アプリケーション] 列のアプリケーションを確認します。

カスタム アプリケーションのスタジオ アクセスを示すスクリーンショット。

注意

上記のリンクからアクセスできるようになるまで、カスタム アプリケーションを設定してから数分かかる場合があります。 所要時間は、カスタム アプリケーションに使用されるイメージのサイズによって異なります。 アプリケーションにアクセスしようとしたときに 502 エラー メッセージが表示される場合は、アプリケーションが設定されるまでしばらく待ってから、もう一度やり直してください。

管理する

コンピューティング インスタンスを開始、停止、再起動、削除します。 コンピューティング インスタンスは自動的にスケールダウンされないため、課金が継続されないように必ずリソースを停止してください。 コンピューティング インスタンスを停止すると、そのインスタンスは解放されます。 その後、必要なときにもう一度開始します。 コンピューティング インスタンスを停止するとコンピューティング時間の課金は停止されますが、ディスク、パブリック 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 イメージをリリースします。 最新バージョンを使用して最新の状態を維持するためのオプションについては、脆弱性の管理に関するページを参照してください。

インスタンスのオペレーティング システムのバージョンが最新かどうかを追跡するには、Studio の UI を使用してそのバージョンにクエリを実行できます。 Azure Machine Learning スタジオのワークスペースで、[コンピューティング] を選んでから、上部にある [コンピューティング インスタンス] を選びます。 コンピューティング インスタンスのコンピューティング名を選択して、現在のオペレーティング システムなどのプロパティを表示します。 これらのプレビュー プロパティを表示するには、プレビュー管理パネルの下の [コンピューティング インスタンスの OS バージョンの監査と監視] を有効にします。

管理者は Azure Policy 定義を使用して、ワークスペースとサブスクリプションの全体で、古いオペレーティング システム バージョンで実行されているインスタンスを監査できます。 以下にサンプル ポリシーを示します。

{
    "mode": "All",
    "policyRule": {
      "if": {
        "allOf": [
          {
            "field": "type",
            "equals": "Microsoft.MachineLearningServices/workspaces/computes"
          },
          {
            "field": "Microsoft.MachineLearningServices/workspaces/computes/computeType",
            "equals": "ComputeInstance"
          },
          {
            "field": "Microsoft.MachineLearningServices/workspaces/computes/osImageMetadata.isLatestOsImageVersion",
            "equals": "false"
          }
        ]
      },
      "then": {
        "effect": "Audit"
      }
    }
}    

次のステップ