Share via


R ジョブを実行してモデルをトレーニングする

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

この記事では、運用環境で実行するように調整した R スクリプトを取得し、Azure Machine Learning V2 を使用して R ジョブとして実行するように設定する方法について説明します。

注意

この記事のタイトルはモデルの ''トレーニング'' を指しますが、適応する記事に一覧表示されている要件を満たしている限り、実際には任意の種類の R スクリプトを実行できます。

前提条件

この構造のフォルダーを作成する

プロジェクトのこのフォルダー構造を作成します。

📁 r-job-azureml
├─ src
│  ├─ azureml_utils.R
│  ├─ r-source.R
├─ job.yml

重要

すべてのソース コードが src ディレクトリに入ります。

ジョブ YAML を準備する

Azure Machine Learning CLI v2 には、操作ごとに異なる YAML スキーマがありますジョブ YAML スキーマを使って、このプロジェクトの一部である job.yml ファイル内のジョブを送信します。

YAML に配置する、特定の情報を収集する必要があります。

  • データ入力として使う登録済みデータ資産の名前 (バージョン付き): azureml:<REGISTERED-DATA-ASSET>:<VERSION>
  • 作成した環境の名前 (バージョンあり): azureml:<R-ENVIRONMENT-NAME>:<VERSION>
  • コンピューティング クラスター リソースの名前: azureml:<COMPUTE-CLUSTER-NAME>

ヒント

バージョン (データ資産、環境) を必要とする Azure Machine Learning CLI 成果物については、特定のバージョンを設定する必要がない場合、ショートカット URI azureml:<AZUREML-ASSET>@latest を使用してその成果物の最新バージョンを取得できます。

ジョブを送信するためのサンプル YAML スキーマ

job.yml ファイルを編集して以下を含めます。 <IN-BRACKETS-AND-CAPS> と示されている値を必ず置き換え、角かっこを削除してください。

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
# the Rscript command goes in the command key below. Here you also specify 
# which parameters are passed into the R script and can reference the input
# keys and values further below
# Modify any value shown below <IN-BRACKETS-AND-CAPS> (remove the brackets)
command: >
Rscript <NAME-OF-R-SCRIPT>.R
--data_file ${{inputs.datafile}}  
--other_input_parameter ${{inputs.other}}
code: src   # this is the code directory
inputs:
  datafile: # this is a registered data asset
    type: uri_file
    path: azureml:<REGISTERED-DATA-ASSET>@latest
  other: 1  # this is a sample parameter, which is the number 1 (as text)
environment: azureml:<R-ENVIRONMENT-NAME>@latest
compute: azureml:<COMPUTE-CLUSTER-OR-INSTANCE-NAME>
experiment_name: <NAME-OF-EXPERIMENT>
description: <DESCRIPTION>

ジョブを送信する

このセクションの次のコマンドでは、以下の情報が必要になる場合があります。

  • Azure Machine Learning ワークスペースの名前
  • ワークスペースがあるリソース グループの名前
  • ワークスペースがあるサブスクリプション ID

Azure Machine Learning スタジオからこれらの値を見つけます。

  1. サインインしてワークスペースを開きます。
  2. 右上隅の Azure Machine Learning スタジオ ツール バーで、ワークスペース名を選びます。
  3. 表示されるセクションから値をコピーできます。

スクリーンショット: CLI コマンドで使用する値を見つけます。

ジョブを送信するには、ターミナル ウィンドウで次のコマンドを実行します。

  1. ディレクトリを r-job-azureml に変更します。

    cd r-job-azureml
    
  2. Azure にサインインします。 Azure Machine Learning コンピューティング インスタンスからこれを行う場合は、以下を使用します。

    az login --identity
    

    コンピューティング インスタンスを使用していない場合は、--identity を省略し、プロンプトに従ってブラウザー ウィンドウを開いて認証します。

  3. 最新バージョンの CLI と ml 拡張機能があることを確認します。

    az upgrade
    
  4. 複数の Azure サブスクリプションがある場合は、アクティブなサブスクリプションを、ワークスペースに使用しているサブスクリプションに設定します (1 つのサブスクリプションにのみアクセスできる場合は、この手順をスキップできます)。<SUBSCRIPTION-NAME> をサブスクリプション名に置き換えます。 角かっこ <> も削除します。

    az account set --subscription "<SUBSCRIPTION-NAME>"
    
  5. 次に、CLI を使用してジョブを送信します。 ワークスペース内のコンピューティング インスタンスでこれを行う場合は、次のコードに示されているように、ワークスペース名とリソース グループに環境変数を使用できます。 コンピューティング インスタンスを使用していない場合は、これらの値をワークスペース名とリソース グループに置き換えます。

    az ml job create -f job.yml  --workspace-name $CI_WORKSPACE --resource-group $CI_RESOURCE_GROUP
    

ジョブを送信したら、スタジオで状態と結果を確認できます。

  1. Azure Machine Learning Studio にサインインします。
  2. まだワークスペースが読み込まれていない場合は、それを選びます。
  3. 左側のナビゲーションで、[ジョブ] を選択します。
  4. モデルのトレーニングに使用した [実験名] を選択します。
  5. ジョブの [表示名] を選択し、ジョブで使用されるメトリック、イメージ、子ジョブ、出力、ログ、コードなど、ジョブの詳細と成果物を表示します。

モデルの登録

最後に、トレーニング ジョブが完了したら、モデルをデプロイする場合はそれを登録します。 スタジオのジョブの詳細を示すページから開始します。

  1. ジョブが完了したら、[出力とログ] を選択してジョブの出力を表示します。

  2. models フォルダーを開き、crate.binMLmodel が存在することを確認します。 ない場合は、ログを調べて、エラーが発生したかどうかを確認します。

  3. 上部のツール バーで、[+ モデルの登録] を選択します。

    出力セクションが開いているスタジオのジョブ セクションを示すスクリーンショット。

  4. [MLflow] モデルの種類は検出された場合でも使わないでください。 [モデルの種類] を既定の [MLflow] から [未指定の種類] に変更します。 [MLflow] のままにするとエラーが発生します。

  5. [ジョブ出力] で、モデルを含むフォルダーである [モデル] を選択します。

  6. [次へ] を選択します。

  7. モデルに使用する名前を指定します。 必要に応じて、[説明][バージョン][タグ] を追加します。

  8. [次へ] を選択します。

  9. 情報を確認します。

  10. [登録] を選択します。

ページの上部に、モデルが登録されていることを確認するメッセージが表示されます。 確認するメッセージは次のようなものです。

登録の正常終了例を示すスクリーンショット。

登録されたモデルの詳細を表示する場合は、[このモデルに戻るには、ここをクリックします] を選択します。

次のステップ

モデルを登録したので、オンライン (リアルタイム) エンドポイントに R モデルをデプロイする方法について学習します。