R ジョブを実行してモデルをトレーニングする
適用対象: Azure CLI ml 拡張機能 v2 (現行)
この記事では、運用環境で実行するように調整した R スクリプトを取得し、Azure Machine Learning V2 を使用して R ジョブとして実行するように設定する方法について説明します。
注意
この記事のタイトルはモデルの ''トレーニング'' を指しますが、適応する記事に一覧表示されている要件を満たしている限り、実際には任意の種類の R スクリプトを実行できます。
前提条件
- Azure Machine Learning ワークスペース。
- トレーニング ジョブで使われる登録済みデータ資産。
- Azure CLI と ml 拡張機能がインストールされている。 または、CLI がプレインストールされているワークスペース内のコンピューティング インスタンスを使用します。
- トレーニング ジョブを実行するコンピューティング クラスターまたはコンピューティング インスタンス。
- ジョブの実行に使用するコンピューティング クラスターの R 環境。
この構造のフォルダーを作成する
プロジェクトのこのフォルダー構造を作成します。
📁 r-job-azureml
├─ src
│ ├─ azureml_utils.R
│ ├─ r-source.R
├─ job.yml
重要
すべてのソース コードが src
ディレクトリに入ります。
- r-source.R ファイルは、運用環境で実行するように調整した R スクリプトです。 このスクリプトで、モデルをクレートしてログする手順に従います。
- azureml_utils.R ファイルが必要です。 ファイルの内容には、このソース コードを使います。
ジョブ 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 スタジオからこれらの値を見つけます。
- サインインしてワークスペースを開きます。
- 右上隅の Azure Machine Learning スタジオ ツール バーで、ワークスペース名を選びます。
- 表示されるセクションから値をコピーできます。
ジョブを送信するには、ターミナル ウィンドウで次のコマンドを実行します。
ディレクトリを
r-job-azureml
に変更します。cd r-job-azureml
Azure にサインインします。 Azure Machine Learning コンピューティング インスタンスからこれを行う場合は、以下を使用します。
az login --identity
コンピューティング インスタンスを使用していない場合は、
--identity
を省略し、プロンプトに従ってブラウザー ウィンドウを開いて認証します。最新バージョンの CLI と
ml
拡張機能があることを確認します。az upgrade
複数の Azure サブスクリプションがある場合は、アクティブなサブスクリプションを、ワークスペースに使用しているサブスクリプションに設定します (1 つのサブスクリプションにのみアクセスできる場合は、この手順をスキップできます)。
<SUBSCRIPTION-NAME>
をサブスクリプション名に置き換えます。 角かっこ<>
も削除します。az account set --subscription "<SUBSCRIPTION-NAME>"
次に、CLI を使用してジョブを送信します。 ワークスペース内のコンピューティング インスタンスでこれを行う場合は、次のコードに示されているように、ワークスペース名とリソース グループに環境変数を使用できます。 コンピューティング インスタンスを使用していない場合は、これらの値をワークスペース名とリソース グループに置き換えます。
az ml job create -f job.yml --workspace-name $CI_WORKSPACE --resource-group $CI_RESOURCE_GROUP
ジョブを送信したら、スタジオで状態と結果を確認できます。
- Azure Machine Learning Studio にサインインします。
- まだワークスペースが読み込まれていない場合は、それを選びます。
- 左側のナビゲーションで、[ジョブ] を選択します。
- モデルのトレーニングに使用した [実験名] を選択します。
- ジョブの [表示名] を選択し、ジョブで使用されるメトリック、イメージ、子ジョブ、出力、ログ、コードなど、ジョブの詳細と成果物を表示します。
モデルの登録
最後に、トレーニング ジョブが完了したら、モデルをデプロイする場合はそれを登録します。 スタジオのジョブの詳細を示すページから開始します。
ジョブが完了したら、[出力とログ] を選択してジョブの出力を表示します。
models フォルダーを開き、crate.bin と MLmodel が存在することを確認します。 ない場合は、ログを調べて、エラーが発生したかどうかを確認します。
上部のツール バーで、[+ モデルの登録] を選択します。
[MLflow] モデルの種類は検出された場合でも使わないでください。 [モデルの種類] を既定の [MLflow] から [未指定の種類] に変更します。 [MLflow] のままにするとエラーが発生します。
[ジョブ出力] で、モデルを含むフォルダーである [モデル] を選択します。
[次へ] を選択します。
モデルに使用する名前を指定します。 必要に応じて、[説明]、[バージョン]、[タグ] を追加します。
[次へ] を選択します。
情報を確認します。
[登録] を選択します。
ページの上部に、モデルが登録されていることを確認するメッセージが表示されます。 確認するメッセージは次のようなものです。
登録されたモデルの詳細を表示する場合は、[このモデルに戻るには、ここをクリックします] を選択します。
次のステップ
モデルを登録したので、オンライン (リアルタイム) エンドポイントに R モデルをデプロイする方法について学習します。