次の方法で共有


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 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 を使用してモデルを登録するには:

  1. スタジオのワークスペースで、左側のナビゲーションから [モデル] を選択します。

  2. [モデル一覧] ページで [登録] を選択し、ドロップダウン リストから次のいずれかの場所を選択します。

    • ローカル ファイルから
    • ジョブ出力から
    • データストアから
    • ローカル ファイルから (フレームワークに基づく)
  3. 最初の [モデルを登録] 画面で:

    1. モデルのローカル ファイル、データストア、またはジョブ出力に移動します。
    2. 入力モデルの種類として、[MLflow][Triton]、または [Unspecified 型] を選択します。
  4. [モデル設定] 画面で、登録済みモデルの名前やその他のオプション設定を指定し、[次へ] を選択します。

  5. [確認] 画面で、構成を確認し、[登録] を選択します。

モデルを登録する UI のスクリーンショット。

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 ワークスペースに接続して、登録済みモデルを作成します。

  1. az login を実行してプロンプトに従って、Azure にサインインします。

  2. 次のコマンドで、<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 ジョブからの出力。

ローカル ファイルまたはフォルダー

  1. 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.
    
  2. 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>/。 この場所は MLflow runs:/<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 では、トレーニング ジョブの入力または出力としてモデルを使用することもできます。

トレーニング ジョブでモデルを入力として使用する

  1. ジョブ仕様の YAML ファイル <file-name>.yml を作成します。 ジョブの inputs セクションで次のように指定します。

    • モデル typemlflow_modelcustom_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.0/labels/latest
    
  2. お使いの YAML ファイル名に置き換えて、次のコマンドを実行します。

    az ml job create -f <file-name>.yml
    

完全な例については、モデル GitHub レポジトリを参照してください。

ジョブの出力としてモデルを書き込む

ジョブでは、outputs を使用してクラウドベースのストレージにモデルを書き込むことができます。

  1. ジョブ仕様の 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.0/labels/latest
    
  2. 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

更新

次の特定のモデルの変更可能なプロパティを更新します。

重要

モデルの場合、更新できるのは descriptiontags のみです。 その他のすべてのプロパティは変更できません。変更する必要がある場合は、新しいバージョンのモデルを作成する必要があります。

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