次の方法で共有


CLI (v2) バッチ デプロイ YAML スキーマ

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

ソース JSON スキーマは https://azuremlschemas.azureedge.net/latest/batchDeployment.schema.json にあります。

このドキュメントで詳しく説明されている YAML 構文は、最新バージョンの ML CLI v2 拡張機能の JSON スキーマに基づいています。 この構文は、ML CLI v2 拡張機能の最新バージョンでのみ動作することが保証されています。 以前のバージョンの拡張機能のスキーマについては、https://azuremlschemasprod.azureedge.net/ でご確認いただけます。

YAML 構文

キー タイプ 説明 使用できる値 既定値
$schema 文字列 YAML スキーマ。 Azure Machine Learning 用 VS Code 拡張機能を使用して YAML ファイルを作成する場合は、ファイルの先頭に $schema を含めることで、スキーマとリソースの入力候補を呼び出すことができます。
name 文字列 必須。 デプロイの名前。
description 文字列 デプロイの説明。
tags オブジェクト デプロイのタグの辞書。
endpoint_name 文字列 必須。 デプロイの作成先となるエンドポイントの名前。
type 文字列 バッチデプロイの種類。 modelには を、pipelineには を使います。 指定しない場合、既定ではクラシック バッチデプロイ

バージョン 1.7 の新機能
$
settings オブジェクト デプロイの構成。 使用できる値については、モデルとパイプライン コンポーネントの各 YAML リファレンスを参照してください。

バージョン 1.7 の新機能

ヒント

キー type は、CLI 拡張機能のバージョン 1.7 以降に導入されています。 下位互換性を完全にサポートするために、このプロパティの既定値は model です。 ただし、明示的に指定しない場合、キー settings は適用されません。モデル デプロイ設定のすべてのプロパティは、YAML 仕様のルートで示すことをお勧めします。

モデル デプロイの YAML 構文

type: model の場合、次の構文が適用されます。

キー タイプ 説明 使用できる値 既定値
model 文字列またはオブジェクト 必須。 デプロイに使用するモデル。 この値は、ワークスペース内の既存のバージョン管理されたモデルへの参照またはインライン モデルの仕様のいずれかです。

既存のモデルを参照するには、azureml:<model-name>:<version> 構文を使用します。

モデルをインラインで定義するには、モデル スキーマに従います。

運用シナリオのベスト プラクティスとして、モデルを個別に作成し、ここで参照するようにしてください。
code_configuration オブジェクト スコアリング コード ロジックの構成。

モデルが MLflow 形式の場合、このプロパティは必要ありません。
code_configuration.code 文字列 モデルをスコアリングするためのすべての Python ソース コードを格納するローカル ディレクトリ。
code_configuration.scoring_script 文字列 上記のディレクトリ内の Python ファイル。 このファイルには、init() 関数と run() 関数が記述されている必要があります。 init() 関数は、コストのかかる、または一般的な準備を行うときに使用します (たとえば、メモリにモデルを読み込むなど)。 init() は、プロセスの開始時に 1 回だけ呼び出されます。 各エントリをスコアリングするには、run(mini_batch) を使用します。mini_batch の値は、ファイル パスのリストです。 run() 関数からは、Pandas の DataFrame または配列が返されます。 返された要素はそれぞれ、mini_batch 内で成功した入力要素の 1 回の実行を示します。 スコアリング スクリプトを作成する方法の詳細については、「スコアリング スクリプトについて」を参照してください。
environment 文字列またはオブジェクト デプロイに使用する環境。 この値は、ワークスペース内の既存のバージョン管理された環境への参照、またはインライン環境仕様のいずれかになります。

モデルが MLflow 形式の場合、このプロパティは必要ありません。

既存の環境を参照するには、azureml:<environment-name>:<environment-version> 構文を使用します。

環境をインラインで定義するには、環境スキーマに従います。

運用シナリオのベスト プラクティスとして、環境を別途作成し、ここで参照することをお勧めします。
compute 文字列 必須。 バッチ スコアリング ジョブを実行するコンピューティング ターゲットの名前。 この値は、azureml:<compute-name> 構文を使用する、ワークスペース内の既存のコンピューティングへの参照である必要があります。
resources.instance_count 整数 各バッチ スコアリング ジョブに使用するノードの数。 1
settings オブジェクト モデル デプロイの具体的な構成。

バージョン 1.7 で変更されました
settings.max_concurrency_per_instance 整数 インスタンスあたりの scoring_script の並列実行の最大数。 1
settings.error_threshold 整数 無視するファイル エラーの数。 入力全体でのエラーの数がこの値を超えると、ジョブは終了します。 error_threshold は、個々のミニバッチではなく、入力全体を対象としています。 省略した場合、ジョブを終了せずに、任意の数のファイル エラーが許可されます。 -1
settings.logging_level 文字列 ログの詳細レベル。 warninginfodebug info
settings.mini_batch_size 整数 code_configuration.scoring_script が 1 回の run() 呼び出しで処理できるファイルの数。 10
settings.retry_settings オブジェクト 各ミニバッチのスコアリングの設定を再試行します。
settings.retry_settings.max_retries 整数 失敗した、またはタイムアウトになったミニバッチの最大再試行回数。 3
settings.retry_settings.timeout 整数 1 つのミニ バッチのスコアリングに対するタイムアウト (秒単位)。 ミニバッチのサイズが大きい場合、またはモデルの実行コストが高い場合は、より大きな値を使います。 30
settings.output_action 文字列 出力ファイルで出力がどのように整理されるかを示します。 summary_onlyに関する記事で説明されているように、出力ファイルを生成する場合は を使います。 append_row 関数の run() ステートメントの一部として予測を返す場合は return を使います。 $ append_row
settings.output_file_name 文字列 バッチ スコアリングの出力ファイルの名前。 predictions.csv
settings.environment_variables オブジェクト バッチ スコアリング ジョブごとに設定される環境変数のキーと値のペアの辞書。

パイプライン コンポーネント デプロイの YAML 構文

type: pipeline の場合、次の構文が適用されます。

キー タイプ 説明 使用できる値 既定値
component 文字列またはオブジェクト 必須。 デプロイに使われるパイプライン コンポーネント。 この値には、ワークスペースまたはレジストリにある既存のバージョン管理されたパイプライン コンポーネントへの参照、またはインライン パイプライン仕様のいずれかを指定できます。

既存のコンポーネントを参照するには、azureml:<component-name>:<version> 構文を使用します。

パイプライン コンポーネントをインラインで定義するには、パイプライン コンポーネント スキーマに従います。

運用シナリオのベスト プラクティスとして、コンポーネントを別途作成し、ここで参照することをお勧めします。

バージョン 1.7 の新機能
settings オブジェクト パイプライン ジョブの既定の設定。 構成可能なプロパティのセットについては、「settings キーの属性」を参照してください。

バージョン 1.7 の新機能

注釈

az ml batch-deployment コマンドを使用して、Azure Machine Learning バッチ デプロイを管理できます。

例は、GitHub リポジトリの例にあります。 一部を以下に示します。

YAML: MLflow モデル デプロイ

MLflow モデルを含むモデル デプロイ。この場合、code_configuration または environment を指定する必要はありません。

$schema: https://azuremlschemas.azureedge.net/latest/modelBatchDeployment.schema.json
endpoint_name: heart-classifier-batch
name: classifier-xgboost-mlflow
description: A heart condition classifier based on XGBoost
type: model
model: azureml:heart-classifier-mlflow@latest
compute: azureml:batch-cluster
resources:
  instance_count: 2
settings:
  max_concurrency_per_instance: 2
  mini_batch_size: 2
  output_action: append_row
  output_file_name: predictions.csv
  retry_settings:
    max_retries: 3
    timeout: 300
  error_threshold: -1
  logging_level: info

YAML: スコアリング スクリプトを含むカスタムのモデル デプロイ

使用するスコアリング スクリプトと環境を指定するモデル デプロイ:

$schema: https://azuremlschemas.azureedge.net/latest/modelBatchDeployment.schema.json
name: mnist-torch-dpl
description: A deployment using Torch to solve the MNIST classification dataset.
endpoint_name: mnist-batch
type: model
model:
  name: mnist-classifier-torch
  path: model
code_configuration:
  code: code
  scoring_script: batch_driver.py
environment:
  name: batch-torch-py38
  image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu22.04:latest
  conda_file: environment/conda.yaml
compute: azureml:batch-cluster
resources:
  instance_count: 1
settings:
  max_concurrency_per_instance: 2
  mini_batch_size: 10
  output_action: append_row
  output_file_name: predictions.csv
  retry_settings:
    max_retries: 3
    timeout: 30
  error_threshold: -1
  logging_level: info

YAML: レガシ モデル デプロイ

属性 type が YAML で指定されていない場合は、モデル デプロイが推論されます。 ただし、キー settings は使用できません。この例で示すように、プロパティは YAML のルートに配置する必要があります。 プロパティ type を常に指定することをお勧めします

$schema: https://azuremlschemas.azureedge.net/latest/batchDeployment.schema.json
endpoint_name: heart-classifier-batch
name: classifier-xgboost-mlflow
description: A heart condition classifier based on XGBoost
model: azureml:heart-classifier-mlflow@latest
compute: azureml:batch-cluster
resources:
  instance_count: 2
max_concurrency_per_instance: 2
mini_batch_size: 2
output_action: append_row
output_file_name: predictions.csv
retry_settings:
  max_retries: 3
  timeout: 300
error_threshold: -1
logging_level: info

YAML: パイプライン コンポーネント デプロイ

単純なパイプライン コンポーネント デプロイ:

$schema: https://azuremlschemas.azureedge.net/latest/pipelineComponentBatchDeployment.schema.json
name: hello-batch-dpl
endpoint_name: hello-pipeline-batch
type: pipeline
component: azureml:hello_batch@latest
settings:
    default_compute: batch-cluster

次のステップ