Esquema YAML de la implementación por lotes de la CLI (v2)
SE APLICA A: Extensión de ML de la CLI de Azure v2 (actual)
El esquema JSON de origen se puede encontrar en https://azuremlschemas.azureedge.net/latest/batchDeployment.schema.json.
Nota
La sintaxis de YAML que se detalla en este documento se basa en el esquema JSON de la versión más reciente de la extensión ML de la CLI v2. Se garantiza que esta sintaxis solo funciona con la versión más reciente de la extensión ML de la CLI v2. Dispone de los esquemas de las versiones de anteriores de la extensión en https://azuremlschemasprod.azureedge.net/.
Sintaxis de YAML
Clave | Tipo | Descripción | Valores permitidos | Valor predeterminado |
---|---|---|---|---|
$schema |
string | Esquema de YAML. Si usa la extensión VS Code de Azure Machine Learning para crear el archivo YAML, la inclusión de $schema en la parte superior del archivo le permite invocar las finalizaciones del esquema y los recursos. |
||
name |
string | Necesario. Nombre de la implementación. | ||
description |
string | Descripción de la implementación. | ||
tags |
object | Diccionario de etiquetas para la implementación. | ||
endpoint_name |
string | Necesario. Nombre del punto de conexión en el que se creará la implementación. | ||
type |
string | Necesario. Tipo de implementación por lotes. Use model para implementaciones de modelos y pipeline para implementaciones de componentes de canalización. Novedades de la versión 1.7. |
model , pipeline |
model |
settings |
object | Configuración de la implementación. Consulte la referencia específica de YAML para el modelo y el componente de canalización para obtener los valores permitidos. Novedades de la versión 1.7. |
Sugerencia
La clave type
se ha introducido en la versión 1.7 de la extensión de la CLI y versiones posteriores. Para admitir totalmente la compatibilidad con versiones anteriores, esta propiedad tiene model
como valor predeterminado. Sin embargo, si no se indica explícitamente, la clave settings
no se aplica y todas las propiedades de la configuración de implementación de modelo deben indicarse en la raíz de la especificación de YAML.
Sintaxis de YAML para las implementaciones de modelos
Cuando es type: model
, se aplica la siguiente sintaxis:
Clave | Tipo | Descripción | Valores permitidos | Valor predeterminado |
---|---|---|---|---|
model |
cadena u objeto | Necesario. Modelo que se usará para la implementación. Este valor puede ser una referencia a un modelo con versiones existente en el área de trabajo o una especificación de modelo en línea. Para hacer referencia a un modelo existente, use la sintaxis azureml:<model-name>:<version> . Para definir un modelo en línea, siga el Esquema del modelo. Como procedimiento recomendado para escenarios de producción, debe crear el modelo por separado y hacerle referencia aquí. |
||
code_configuration |
object | Configuración de la lógica de código de puntuación. Esta propiedad no es necesaria si el modelo está en formato MLflow. |
||
code_configuration.code |
string | El directorio local que contiene todo el código fuente Python para puntuar el modelo. | ||
code_configuration.scoring_script |
string | El archivo Python en el directorio anterior. Este archivo debe tener una función init() y una función run() . Use la función init() para cualquier preparación costosa o común (por ejemplo, cargar el modelo en memoria). Solo se llama a init() una vez al principio del proceso. Use run(mini_batch) para puntuar cada entrada; el valor de mini_batch es una lista de rutas de acceso de archivo. La función run() debe devolver un dataframe de Pandas o una matriz. Cada elemento devuelto indica una ejecución correcta del elemento de entrada en mini_batch . Para obtener más información sobre cómo crear el script de puntuación, consulte Descripción del script de puntuación. |
||
environment |
cadena u objeto | El entorno que se usará para la implementación. Este valor puede ser una referencia a un entorno con versiones existente en el área de trabajo o una especificación de entorno en línea. Esta propiedad no es necesaria si el modelo está en formato MLflow. Para hacer referencia a un entorno existente, use la sintaxis azureml:<environment-name>:<environment-version> . Para definir un entorno en línea, siga el Esquema de entorno. Como procedimiento recomendado para escenarios de producción, debe crear el entorno por separado y hacerle referencia aquí. |
||
compute |
string | Necesario. Nombre del destino de proceso en el que se ejecutarán los trabajos de puntuación por lotes. Este valor debe ser una referencia a un proceso existente en el área de trabajo mediante la sintaxis azureml:<compute-name> . |
||
resources.instance_count |
integer | Número de nodos que se usarán para cada trabajo de puntuación por lotes. | 1 |
|
settings |
object | Configuración específica de la implementación de modelo. Se ha cambiado en la versión 1.7. |
||
settings.max_concurrency_per_instance |
integer | Número máximo de ejecuciones de scoring_script paralelas por instancia. |
1 |
|
settings.error_threshold |
integer | Número de errores de archivo que se deben omitir. Si el recuento de errores de toda la entrada supera este valor, el trabajo de puntuación por lotes se termina. error_threshold es para toda la entrada y no para mini lotes individuales. Si se omite, se permite cualquier número de errores de archivo sin finalizar el trabajo. |
-1 |
|
settings.logging_level |
string | Nivel de detalle del registro. | warning , info , debug |
info |
settings.mini_batch_size |
integer | Número de archivos que code_configuration.scoring_script puede procesar en una llamada a run() . |
10 |
|
settings.retry_settings |
object | Vuelva a intentar la configuración para puntuar cada mini lote. | ||
settings.retry_settings.max_retries |
integer | Número máximo de reintentos para un mini lote con errores o con tiempo de espera. | 3 |
|
settings.retry_settings.timeout |
integer | Tiempo de espera en segundos para puntuar un solo minilote. Use valores mayores cuando el tamaño del minilote sea mayor o sea más costoso ejecutar el modelo. | 30 |
|
settings.output_action |
string | Indica cómo se debe organizar la salida en el archivo de salida. Use summary_only si va a generar los archivos de salida como se indica en Personalización de salidas en implementaciones de modelos. Use append_row si va a devolver predicciones como parte de la run() instrucción return de función. |
append_row , summary_only |
append_row |
settings.output_file_name |
string | Nombre del archivo de salida de puntuación por lotes. | predictions.csv |
|
settings.environment_variables |
object | Diccionario de pares clave-valor de variable de entorno que se establecerán para cada trabajo de puntuación por lotes. |
Sintaxis de YAML para las implementaciones de componentes de canalización
Cuando es type: pipeline
, se aplica la siguiente sintaxis:
Clave | Tipo | Descripción | Valores permitidos | Valor predeterminado |
---|---|---|---|---|
component |
cadena u objeto | Necesario. Componente de canalización usado para la implementación. Este valor puede ser una referencia a un componente de canalización con versiones existente en el área de trabajo o en un registro, o bien una especificación de canalización insertada. Para hacer referencia a un componente existente, use la sintaxis azureml:<component-name>:<version> . Para definir un componente de canalización insertado, siga el esquema del componente de canalización. Como procedimiento recomendado para escenarios de producción, debe crear el componente por separado y hacerle referencia aquí. Novedades de la versión 1.7. |
||
settings |
object | Configuración predeterminada del trabajo de canalización. Consulte Atributos de la clave de configuración para ver el conjunto de propiedades configurables. Novedades de la versión 1.7. |
Comentarios
Los comandos az ml batch-deployment
se pueden usar para administrar las implementaciones de lotes de Azure Machine Learning.
Ejemplos
Hay ejemplos disponibles en el repositorio de GitHub de ejemplos. Se hace referencia a algunos de ellos a continuación:
YAML: implementación de modelo de MLflow
Una implementación de modelo que contiene un modelo de MLflow, que no requiere indicar code_configuration
o 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: implementación de modelos personalizados con script de puntuación
Una implementación de modelo que indica el script de puntuación que se va a usar y el entorno:
$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: implementaciones de modelos heredados
Si el atributo type
no se indica en YAML, se deduce una implementación de modelo. Sin embargo, la clave settings
no estará disponible y las propiedades deben colocarse en la raíz de YAML, como se indica en este ejemplo. Es muy recomendable especificar siempre la propiedad 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: implementación de componentes de canalización
Una implementación sencilla de componentes de canalización:
$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