CLI (v2) バッチ デプロイ YAML スキーマ
適用対象: Azure CLI ml 拡張機能 v2 (現行)
ソース JSON スキーマは https://azuremlschemas.azureedge.net/latest/batchDeployment.schema.json にあります。
Note
このドキュメントで詳しく説明されている YAML 構文は、最新バージョンの ML CLI v2 拡張機能の JSON スキーマに基づいています。 この構文は、ML CLI v2 拡張機能の最新バージョンでのみ動作することが保証されています。 以前のバージョンの拡張機能のスキーマについては、https://azuremlschemasprod.azureedge.net/ でご確認いただけます。
YAML 構文
キー | Type | 説明 | 使用できる値 | 既定値 |
---|---|---|---|---|
$schema |
string | YAML スキーマ。 Azure Machine Learning 用 VS Code 拡張機能を使用して YAML ファイルを作成する場合は、ファイルの先頭に $schema を含めることで、スキーマとリソースの入力候補を呼び出すことができます。 |
||
name |
string | 必須。 デプロイの名前。 | ||
description |
string | デプロイの説明。 | ||
tags |
object | デプロイのタグの辞書。 | ||
endpoint_name |
string | 必須。 デプロイの作成先となるエンドポイントの名前。 | ||
type |
string | 必須。 バス デプロイの種類。 モデルのデプロイには model を、パイプライン コンポーネントのデプロイには pipeline を使います。 バージョン 1.7 の新機能。 |
$ | model |
settings |
object | デプロイの構成。 使用できる値については、モデルとパイプライン コンポーネントの各 YAML リファレンスを参照してください。 バージョン 1.7 の新機能。 |
ヒント
キー type
は、CLI 拡張機能のバージョン 1.7 以降に導入されています。 下位互換性を完全にサポートするために、このプロパティの既定値は model
です。 ただし、明示的に指定しない場合、キー settings
は適用されません。モデル デプロイ設定のすべてのプロパティは、YAML 仕様のルートで示すことをお勧めします。
モデル デプロイの YAML 構文
type: model
の場合、次の構文が適用されます。
キー | Type | 説明 | 使用できる値 | 既定値 |
---|---|---|---|---|
model |
文字列またはオブジェクト | 必須です。 デプロイに使用するモデル。 この値は、ワークスペース内の既存のバージョン管理されたモデルへの参照またはインライン モデルの仕様のいずれかです。 既存のモデルを参照するには、 azureml:<model-name>:<version> 構文を使用します。 モデルをインラインで定義するには、モデル スキーマに従います。 運用シナリオのベスト プラクティスとして、モデルを個別に作成し、ここで参照するようにしてください。 |
||
code_configuration |
object | スコアリング コード ロジックの構成。 モデルが MLflow 形式の場合、このプロパティは必要ありません。 |
||
code_configuration.code |
string | モデルをスコアリングするためのすべての 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 |
string | 必須。 バッチ スコアリング ジョブを実行するコンピューティング ターゲットの名前。 この値は、azureml:<compute-name> 構文を使用する、ワークスペース内の既存のコンピューティングへの参照である必要があります。 |
||
resources.instance_count |
整数 (integer) | 各バッチ スコアリング ジョブに使用するノードの数。 | 1 |
|
settings |
object | モデル デプロイの具体的な構成。 バージョン 1.7 で変更されました。 |
||
settings.max_concurrency_per_instance |
整数 (integer) | インスタンスあたりの scoring_script の並列実行の最大数。 |
1 |
|
settings.error_threshold |
整数 (integer) | 無視するファイル エラーの数。 入力全体でのエラーの数がこの値を超えると、ジョブは終了します。 error_threshold は、個々のミニバッチではなく、入力全体を対象としています。 省略した場合、ジョブを終了せずに、任意の数のファイル エラーが許可されます。 |
-1 |
|
settings.logging_level |
string | ログの詳細レベル。 | info |
|
settings.mini_batch_size |
整数 (integer) | code_configuration.scoring_script が 1 回の run() 呼び出しで処理できるファイルの数。 |
10 |
|
settings.retry_settings |
object | 各ミニバッチのスコアリングの設定を再試行します。 | ||
settings.retry_settings.max_retries |
整数 (integer) | 失敗した、またはタイムアウトになったミニバッチの最大再試行回数。 | 3 |
|
settings.retry_settings.timeout |
整数 (integer) | 1 つのミニ バッチのスコアリングに対するタイムアウト (秒単位)。 ミニバッチのサイズが大きい場合、またはモデルの実行コストが高い場合は、より大きな値を使います。 | 30 |
|
settings.output_action |
string | 出力ファイルで出力がどのように整理されるかを示します。 モデル デプロイの出力のカスタマイズに関する記事で説明されているように、出力ファイルを生成する場合は summary_only を使います。 run() 関数の return ステートメントの一部として予測を返す場合は append_row を使います。 |
$ | append_row |
settings.output_file_name |
string | バッチ スコアリングの出力ファイルの名前。 | predictions.csv |
|
settings.environment_variables |
object | バッチ スコアリング ジョブごとに設定される環境変数のキーと値のペアの辞書。 |
パイプライン コンポーネント デプロイの YAML 構文
type: pipeline
の場合、次の構文が適用されます。
キー | Type | 説明 | 使用できる値 | 既定値 |
---|---|---|---|---|
component |
文字列またはオブジェクト | 必須。 デプロイに使われるパイプライン コンポーネント。 この値には、ワークスペースまたはレジストリにある既存のバージョン管理されたパイプライン コンポーネントへの参照、またはインライン パイプライン仕様のいずれかを指定できます。 既存のコンポーネントを参照するには、 azureml:<component-name>:<version> 構文を使用します。 パイプライン コンポーネントをインラインで定義するには、パイプライン コンポーネント スキーマに従います。 運用シナリオのベスト プラクティスとして、コンポーネントを別途作成し、ここで参照することをお勧めします。 バージョン 1.7 の新機能。 |
||
settings |
object | パイプライン ジョブの既定の設定。 構成可能なプロパティのセットについては、「settings キーの属性」を参照してください。 バージョン 1.7 の新機能。 |
Remarks
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-ubuntu20.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