Azure Machine Learning で登録済みモデルを操作する
適用対象:Azure CLI ml extension v2 (現行)Python SDK azure-ai-ml v2 (現行)
この記事では、次を使用して Azure Machine Learning のモデルを登録して操作する方法について説明します。
- Azure Machine Learning スタジオ UI。
- Azure Machine Learning V2 CLI。
- Python Azure Machine Learning V2 SDK。
学習内容は次のとおりです。
- ローカル ファイル、データストア、またはジョブ出力からモデル レジストリに登録済みモデルを作成します。
- カスタム、MLflow、Triton など、さまざまな種類のモデルを操作します。
- トレーニング ジョブの入力または出力としてモデルを使用します。
- モデル資産のライフサイクルを管理します。
モデルの登録
モデルの登録によって、モデルを Azure クラウドのワークスペースに保存してバージョンを管理できます。 モデルのレジストリは、トレーニングしたモデルの整理と追跡に役立ちます。 Azure CLI、Python SDK、または Machine Learning スタジオ UI を使用して、Azure Machine Learning でモデルを資産として登録できます。
サポートされているパス
モデルを登録するには、データまたはジョブの場所を指すパスを指定する必要があります。 次の表は、Azure Machine Learning でサポートするさまざまなデータの場所と、path
パラメーターの構文を示しています。
場所 | 構文 |
---|---|
ローカル コンピューター | <model-folder>/<model-filename> |
Azure Machine Learning データストア | azureml://datastores/<datastore-name>/paths/<path_on_datastore> |
Azure Machine Learning ジョブ | azureml://jobs/<job-name>/outputs/<output-name>/paths/<path-to-model-relative-to-the-named-output-location> |
MLflow ジョブ | runs:/<run-id>/<path-to-model-relative-to-the-root-of-the-artifact-location> |
Machine Learning ワークスペース内のモデル資産 | azureml:<model-name>:<version> |
Machine Learning レジストリ内のモデル資産 | azureml://registries/<registry-name>/models/<model-name>/versions/<version> |
サポートされているモード
入力または出力にモデルを使用する場合は、次のいずれかの "モード" を指定できます。 たとえば、モデルを読み取り専用にマウントするか、コンピューティング ターゲットにダウンロードするかを指定できます。
ro_mount
: データを読み取り専用としてコンピューティング先にマウントします。rw_mount
: データを読み取り/書き込みマウントします。download
: コンピューティング先にデータをダウンロードします。upload
: コンピューティング先からデータをアップロードします。direct
: URI を文字列として渡します。
次の表に、さまざまなモデルの種類の入力と出力に使用できるモード オプションを示します。
Type | upload |
download |
ro_mount |
rw_mount |
direct |
---|---|---|---|---|---|
custom ファイル入力 |
|||||
custom フォルダー入力 |
✓ | ✓ | ✓ | ||
mlflow 入力 |
✓ | ✓ | |||
custom ファイル出力 |
✓ | ✓ | ✓ | ||
custom フォルダーの出力 |
✓ | ✓ | ✓ | ||
mlflow 出力 |
✓ | ✓ | ✓ |
前提条件
- 無料版または有料版の Azure Machine Learning を使用する Azure サブスクリプション。 Azure サブスクリプションをお持ちでない場合は、始める前に無料アカウントを作成してください。
- Azure Machine Learning ワークスペース。
この記事のコード サンプルを実行し、Azure Machine Learning V2 CLI または Python Azure Machine Learning V2 SDK を使用するには、次も必要です。
Azure CLI バージョン 2.38.0 以降がインストールされていること。
次のコマンドを実行してインストールされた
ml
拡張機能の V2。 詳しくは、CLI (v2) のインストール、設定、使用に関するページをご覧ください。az extension add -n ml
Note
V2 には完全な下位互換性が用意されています。 v1 SDK または CLI からのモデル資産を引き続き使用できます。 v1 CLI または SDK に登録されているすべてのモデルに型 custom
が割り当てられます。
スタジオ UI を使用してモデルを登録する
Azure Machine Learning スタジオ UI を使用してモデルを登録するには:
スタジオのワークスペースで、左側のナビゲーションから [モデル] を選択します。
[モデル一覧] ページで [登録] を選択し、ドロップダウン リストから次のいずれかの場所を選択します。
- ローカル ファイルから
- ジョブ出力から
- データストアから
- ローカル ファイルから (フレームワークに基づく)
最初の [モデルを登録] 画面で:
- モデルのローカル ファイル、データストア、またはジョブ出力に移動します。
- 入力モデルの種類として、[MLflow]、[Triton]、または [Unspecified 型] を選択します。
[モデル設定] 画面で、登録済みモデルの名前やその他のオプション設定を指定し、[次へ] を選択します。
[確認] 画面で、構成を確認し、[登録] を選択します。
Azure CLI または Python SDK を使用してモデルを登録する
次のコード スニペットでは、Azure CLI または Python SDK を使用して Azure Machine Learning でモデルを資産として登録する方法について説明します。 これらのスニペットでは、custom
および mlflow
のモデル型が使用されます。
custom
型では、Azure Machine Learning で現在サポートされていないカスタム標準でトレーニングされたモデルのファイルまたはフォルダーを参照します。mlflow
型では、MLflow でトレーニングされたモデルを参照します。 MLflow トレーニング済みモデルは、MLmodel ファイル、model ファイル、conda dependencies ファイル、requirements.txt ファイルを含むフォルダー内にあります。
ヒント
azureml-examples リポジトリで model.ipynb ノートブックを実行すると、次のサンプルの Python バージョンで進めることができます。
ワークスペースに接続する
ワークスペースは、Azure Machine Learning の最上位のリソースで、Azure Machine Learning を使用するときに作成するすべての成果物を操作するための一元的な場所を提供します。 このセクションでは、Azure Machine Learning ワークスペースに接続して、登録済みモデルを作成します。
az login
を実行してプロンプトに従って、Azure にサインインします。次のコマンドで、
<subscription-id>
、<workspace-name>
、<resource-group>
、<location>
をお使いの環境の値に置き換えます。az account set --subscription <subscription-id> az configure --defaults workspace=<workspace-name> group=<resource-group> location=<location>
登録済みモデルを作成する
登録済みモデルは、次のモデルから作成できます。
- ローカル コンピューター上にある。
- Azure Machine Learning データストアにある。
- Azure Machine Learning ジョブからの出力。
ローカル ファイルまたはフォルダー
YAML ファイル <file-name>.yml を作成します。 ファイルで、登録済みモデルの名前、ローカル モデル ファイルへのパス、説明を指定します。 次に例を示します。
$schema: https://azuremlschemas.azureedge.net/latest/model.schema.json name: local-file-example path: mlflow-model/model.pkl description: Model created from local file.
YAML ファイルの名前を使用して、次のコマンドを実行します。
az ml model create -f <file-name>.yml
完全な例については、モデル YAML を参照してください。
データストア
サポートされている URI 形式のいずれかを使用して、クラウド パスからモデルを作成できます。
次の例では、構文 azureml://datastores/<datastore-name>/paths/<path_on_datastore>
を使用して、データストア上のパスを指す短縮形の azureml
スキームを使用します。
az ml model create --name my-model --version 1 --path azureml://datastores/myblobstore/paths/models/cifar10/cifar.pt
完全な例については、CLI リファレンスを参照してください。
ジョブの出力
モデル データがジョブ出力から取得される場合は、モデル パスを指定するための 2 つのオプションがあります。 MLflow runs:
URI 形式または azureml://jobs
URI 形式を使用できます。
Note
artifacts 予約キーワードは、既定の成果物の場所からの出力を表します。
MLflow の実行: URI 形式
このオプションは、MLflow
runs:
URI 形式に既に慣れている可能性が高い MLflow ユーザー向けに最適化されています。 このオプションでは、既定の成果物の場所 (MLflow でログに記録されたすべてのモデルと成果物が配置されている場所) で成果物からモデルを作成します。 このオプションにより、登録されたモデルとモデルの元となる実行の間に系列が確立されます。形式:
runs:/<run-id>/<path-to-model-relative-to-the-root-of-the-artifact-location>
例:
az ml model create --name my-registered-model --version 1 --path runs:/my_run_0000000000/model/ --type mlflow_model
azureml://jobs URI 形式
azureml://jobs
参照 URI オプションを使用すると、ジョブの出力パスのいずれかで成果物からモデルを登録できます。 この形式は、azureml://datastores
参照 URI 形式と一致し、既定の成果物の場所以外の名前付き出力からの成果物の参照もサポートします。MLflow を使用したトレーニング スクリプト内でモデルを直接登録しなかった場合、このオプションを使用して、登録されたモデルと、そのトレーニング元のジョブとの間に系列を確立できます。
形式:
azureml://jobs/<run-id>/outputs/<output-name>/paths/<path-to-model>
- 既定の成果物の場所:
azureml://jobs/<run-id>/outputs/artifacts/paths/<path-to-model>/
。 この場所は MLflowruns:/<run-id>/<model>
と同じです。 - 名前付き出力フォルダー:
azureml://jobs/<run-id>/outputs/<named-output-folder>
- 名前付き出力フォルダー内の特定のファイル:
azureml://jobs/<run-id>/outputs/<named-output-folder>/paths/<model-filename>
- 名前付き出力フォルダー内の特定のフォルダー パス:
azureml://jobs/<run-id>/outputs/<named-output-folder>/paths/<model-folder-name>
例:
名前付き出力フォルダーからのモデルの保存:
az ml model create --name run-model-example --version 1 --path azureml://jobs/my_run_0000000000/outputs/artifacts/paths/model/
完全な例については、CLI リファレンスを参照してください。
- 既定の成果物の場所:
トレーニングにモデルを使用する
v2 Azure CLI と Python SDK では、トレーニング ジョブの入力または出力としてモデルを使用することもできます。
トレーニング ジョブでモデルを入力として使用する
ジョブ仕様の YAML ファイル <file-name>.yml を作成します。 ジョブの
inputs
セクションで次のように指定します。- モデル
type
。mlflow_model
、custom_model
、またはtriton_model
を指定できます。 - モデルが配置されている
path
。次の例のコメントに記載されているパスのいずれかを指定できます。
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json # Possible Paths for models: # AzureML Datastore: azureml://datastores/<datastore-name>/paths/<path_on_datastore> # MLflow run: runs:/<run-id>/<path-to-model-relative-to-the-root-of-the-artifact-location> # Job: azureml://jobs/<job-name>/outputs/<output-name>/paths/<path-to-model-relative-to-the-named-output-location> # Model Asset: azureml:<my_model>:<version> command: | ls ${{inputs.my_model}} inputs: my_model: type: mlflow_model # List of all model types here: https://learn.microsoft.com/azure/machine-learning/reference-yaml-model#yaml-syntax path: ../../assets/model/mlflow-model environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
- モデル
お使いの YAML ファイル名に置き換えて、次のコマンドを実行します。
az ml job create -f <file-name>.yml
完全な例については、モデル GitHub レポジトリを参照してください。
ジョブの出力としてモデルを書き込む
ジョブでは、outputs を使用してクラウドベースのストレージにモデルを書き込むことができます。
ジョブ仕様の YAML ファイル <file-name>.yml を作成します。
outputs
セクションに出力モデルの種類とパスを設定します。$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json # Possible Paths for Model: # Local path: mlflow-model/model.pkl # AzureML Datastore: azureml://datastores/<datastore-name>/paths/<path_on_datastore> # MLflow run: runs:/<run-id>/<path-to-model-relative-to-the-root-of-the-artifact-location> # Job: azureml://jobs/<job-name>/outputs/<output-name>/paths/<path-to-model-relative-to-the-named-output-location> # Model Asset: azureml:<my_model>:<version> code: src command: >- python hello-model-as-output.py --input_model ${{inputs.input_model}} --custom_model_output ${{outputs.output_folder}} inputs: input_model: type: mlflow_model # mlflow_model,custom_model, triton_model path: ../../assets/model/mlflow-model outputs: output_folder: type: custom_model # mlflow_model,custom_model, triton_model environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
CLI を使用してジョブを作成します。
az ml job create --file <file-name>.yml
完全な例については、モデル GitHub レポジトリを参照してください。
モデルを管理する
Azure CLI と Python SDK では、Azure Machine Learning モデル資産のライフサイクルを管理することもできます。
一覧取得
次にワークスペース内のすべてのモデルを一覧表示します。
az ml model list
指定された名前のすべてのモデル バージョンを一覧表示します。
az ml model list --name run-model-example
表示
特定のモデルの詳細を取得します。
az ml model show --name run-model-example --version 1
更新
次の特定のモデルの変更可能なプロパティを更新します。
重要
モデルの場合、更新できるのは description
と tags
のみです。 その他のすべてのプロパティは変更できません。変更する必要がある場合は、新しいバージョンのモデルを作成する必要があります。
az ml model update --name run-model-example --version 1 --set description="This is an updated description." --set tags.stage="Prod"
アーカイブ
モデルをアーカイブすると、既定で az ml model list
のようにリスト クエリから非表示になります。 アーカイブされたモデルは、ワークフローで参照し、使用し続けることができます。
モデルのすべてのバージョンまたは特定のバージョンのみをアーカイブできます。 バージョンを指定しない場合、モデルのすべてのバージョンがアーカイブされます。 アーカイブされたモデル コンテナーの下に新しいモデル バージョンを作成すると、新しいバージョンも自動的にアーカイブ済みとして設定されます。
次のモデルのすべてのバージョンをアーカイブします。
az ml model archive --name run-model-example
次の特定のモデルのバージョンをアーカイブします。
az ml model archive --name run-model-example --version 1