Compartir a través de


Esquema YAML para trabajos de clasificación de texto con varias etiquetas de ML automatizado de la CLI (v2)

SE APLICA A:Extensión de ML de la CLI de Azure v2 (actual)

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/.

Cada entidad de Azure Machine Learning tiene una representación de YAML esquematizada. Puede crear una nueva entidad a partir de un archivo de configuración YAML con una extensión .yml o .yaml.

Este artículo proporciona información de referencia sobre algunos conceptos de sintaxis que encontrará al configurar estos archivos YAML para trabajos de clasificación de texto NLP con varias etiquetas.

El esquema JSON de origen se puede encontrar en https://azuremlsdk2.blob.core.windows.net/preview/0.0.1/autoMLNLPTextClassificationMultilabelJob.schema.json.

Sintaxis de YAML

Clave Tipo Descripción Valores permitidos Valor predeterminado
$schema cuerda / cadena Representa la ubicación o dirección URL donde se va a cargar el esquema YAML. Si el usuario utiliza 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 permite invocar las finalizaciones del esquema y los recursos.
type Const Necesario. Tipo de trabajo. automl automl
task Const Necesario. El tipo de la tarea de AutoML.
Descripción de la tarea para la clasificación multietiqueta:
Hay varias clases posibles y cada muestra se puede asignar a cualquier número de clases. La tarea consiste en predecir todas las clases de cada muestra. Por ejemplo, la clasificación de un script de película como «Comedia» o «Romántico» o «Comedia y romántico».
text_classification_multilabel
name cuerda / cadena Nombre del trabajo. Debe ser único en todos los trabajos del área de trabajo. Si se omite, Azure Machine Learning genera automáticamente un GUID para el nombre.
display_name cuerda / cadena Nombre para mostrar del trabajo en la interfaz de usuario de Studio. Puede no ser único dentro del área de trabajo. Si se omite, Azure Machine Learning genera automáticamente un identificador adjetivo-sustantivo legible para el nombre para mostrar.
experiment_name cuerda / cadena Nombre del experimento en el que se va a organizar el trabajo. El registro de ejecución de cada trabajo se organizará en el experimento correspondiente en la pestaña "Experiments" de Studio. Si se omite, Azure Machine Learning tomará como valor predeterminado el nombre del directorio de trabajo en que se creó el trabajo.
description cuerda / cadena Descripción del trabajo.
tags objeto Diccionario de etiquetas para el trabajo.
compute cuerda / cadena Nombre del destino de proceso en el que se ejecutará el trabajo. Para hacer referencia a un proceso existente en el área de trabajo, usamos la sintaxis: azureml:<compute_name>.
log_verbosity número Los diferentes niveles de detalle del registro. not_set, debug, info, warning, , error, critical info
primary_metric cuerda / cadena Métrica que AutoML optimizará para la selección de modelos. accuracy accuracy
target_column_name cuerda / cadena Necesario. Nombre de la columna de destino de las predicciones. Siempre debe especificarse. Este parámetro es aplicable a training_data y validation_data.
training_data objeto Necesario. Los datos que se van a usar en el trabajo. Consulte la sección Varias etiquetas para obtener más detalles.
validation_data objeto Necesario. Datos de validación que se usarán en el trabajo. Debería ser coherente con los datos de entrenamiento en cuanto al conjunto de columnas, el tipo de datos de cada columna, el orden de las columnas de izquierda a derecha y la incorporación de al menos dos etiquetas únicas.
Nota: Los nombres de columna de cada conjunto de datos deben ser únicos. Para obtener más información, consulte la sección Validación de datos.
limits objeto Diccionario de configuraciones de límite del trabajo. Parámetros de esta sección: max_concurrent_trials, max_nodes, max_trials, timeout_minutes y trial_timeout_minutes. Vea la sección Límites para obtener más detalles.
training_parameters objeto Diccionario que contiene los parámetros de entrenamiento del trabajo.
Vaya a Hiperparámetros admitidos para obtener más detalles.
Nota: Los hiperparámetros establecidos en training_parameters se mantienen en todas las ejecuciones de barrido y, por tanto, no es necesario incluirlos en el espacio de búsqueda.
sweep objeto Diccionario que contiene los parámetros de barrido del trabajo. Tiene dos claves: sampling_algorithm (obligatoria) y early_termination. Para obtener más información, consulte la sección Ajuste de hiperparámetros y barrido de modelos.
search_space objeto Diccionario del espacio de búsqueda de hiperparámetros. La clave es el nombre del hiperparámetro y el valor es la expresión del parámetro. Todos los parámetros que se pueden fijar mediante training_parameters se admiten aquí (para ser barridos). Vaya a Hiperparámetros admitidos para obtener más información.
Hay dos tipos de hiperparámetros:
- Hiperparámetros discretos: los hiperparámetros discretos se especifican con un objeto choice entre valores discretos. choice puede ser uno o varios valores separados por comas, un objeto range o cualquier objeto list arbitrario. También se pueden especificar hiperparámetros discretos avanzados mediante una distribución: randint, qlognormal, qnormal, qloguniform, quniform. Para obtener más información, consulte esta sección.
- Hiperparámetros continuos: los hiperparámetros continuos se especifican como una distribución a través de un rango continuo de valores. Actualmente, las distribuciones admitidas son lognormal, normal, loguniform, uniform. Para obtener más información, consulte esta sección.

Consulte la sección Expresiones de parámetro para conocer el conjunto de expresiones posibles que se usarán.
outputs objeto Diccionario de configuraciones de salida del trabajo. La clave es un nombre para la salida dentro del contexto del trabajo y el valor es la configuración de salida.
outputs.best_model objeto Diccionario de las configuraciones de salida de mejor modelo. Para obtener más información, consulte Configuración de salida de mejor modelo.

Otra sintaxis usada en las configuraciones:

Límites

Clave Tipo Descripción Valores permitidos Valor predeterminado
max_concurrent_trials entero Representa el número máximo de iteraciones que se ejecutarán en paralelo. 1
max_trials entero Representa el número máximo de pruebas en las que un trabajo de NLP de AutoML puede intentar ejecutar un algoritmo de entrenamiento con una combinación diferente de hiperparámetros. 1
timeout_minutes entero Representa la cantidad máxima de tiempo en minutos que puede tardar en ejecutarse el trabajo de AutoML enviado. Después de esto, el trabajo finalizará. El tiempo de espera predeterminado en los trabajos de NLP de AutoML es de 7 días. 10080
trial_timeout_minutes entero Representa la cantidad máxima de tiempo en minutos que puede tardar en ejecutarse cada prueba (trabajo secundario) en el trabajo de AutoML enviado. Después de esto, el trabajo secundario finalizará.
max_nodes entero El número máximo de nodos del clúster de proceso de respaldo que se usarán para el trabajo. 1

Hiperparámetros admitidos

En la tabla siguiente se describen los hiperparámetros que admite AutoML NPL.

Nombre de parámetro Descripción Sintaxis
gradient_accumulation_steps Número de operaciones hacia atrás cuyos degradados se van a resumir antes de realizar un paso de descenso de degradado mediante una llamada a la función de paso del optimizador.

Esto se aprovecha para usar un tamaño de lote efectivo que es gradient_accumulation_steps veces mayor que el tamaño máximo que se ajusta a la GPU.
Debe ser un entero positivo.
tasa de aprendizaje Velocidad de aprendizaje inicial. Debe ser un valor flotante en el intervalo [0, 1].
programador de tasa de aprendizaje Tipo de programador de velocidad de aprendizaje. Debe elegirlo en linear, cosine, cosine_with_restarts, polynomial, constant, constant_with_warmup.
model_name Nombre de uno de los modelos admitidos. Debe elegirlo en bert_base_cased, bert_base_uncased, bert_base_multilingual_cased, bert_base_german_cased, bert_large_cased, bert_large_uncased, distilbert_base_cased, distilbert_base_uncased, roberta_base, roberta_large, distilroberta_base, xlm_roberta_base, xlm_roberta_large, xlnet_base_cased, xlnet_large_cased.
número_de_épocas Número de épocas de entrenamiento. Debe ser un entero positivo.
training_batch_size Tamaño del lote de entrenamiento. Debe ser un entero positivo.
tamaño_de_lote_de_validación Tamaño del lote de validación. Debe ser un entero positivo.
warmup_ratio Proporción de los pasos de entrenamiento totales usados para un calentamiento lineal de 0 a learning_rate. Debe ser un valor float en el intervalo [0, 1].
weight_decay Valor de decadencia de peso cuando el optimizador es sgd, adam o adamw. Debe ser un valor float en el intervalo [0, 1].

Datos de entrenamiento o validación

Clave Tipo Descripción Valores permitidos Valor predeterminado
description cuerda / cadena Información detallada que describe estos datos de entrada.
path cuerda / cadena La ruta de acceso desde la que se deben cargar los datos. La ruta de acceso puede ser una ruta de acceso file, una ruta de acceso folder o pattern para rutas de acceso. pattern especifica un patrón de búsqueda para permitir comodines (* y **) de archivos y carpetas que contienen datos. Los tipos de URI admitidos son azureml, https, wasbs, abfss y adl. Para más información sobre cómo usar el formato de URI azureml://, consulte Sintaxis principal de YAML. URI de la ubicación del archivo de artefacto. Si este URI no tiene un esquema (por ejemplo, http:, azureml: o similar), se considera una referencia local y el archivo al que apunta se carga en el almacenamiento de blobs del área de trabajo predeterminado a medida que se crea la entidad.
mode cuerda / cadena Mecanismo de entrega del conjunto de datos. direct direct
type Const Para generar modelos de NLP, el usuario debe aportar datos de entrenamiento en formato de tabla MLTable. Para obtener más información, consulte Preparación de los datos. mltable mltable

Configuración de salida de mejor modelo

Clave Tipo Descripción Valores permitidos Valor predeterminado
type cuerda / cadena Necesario. Tipo de mejor modelo. AutoML solo permite modelos mlflow. mlflow_model mlflow_model
path cuerda / cadena Necesario. URI de la ubicación donde se almacenan los archivos de artefacto del modelo. Si este URI no tiene un esquema (por ejemplo, http:, azureml: o similar), se considera una referencia local y el archivo al que apunta se carga en el almacenamiento de blobs del área de trabajo predeterminado a medida que se crea la entidad.
storage_uri cuerda / cadena Dirección URL HTTP del modelo. Use esta dirección URL con az storage copy -s THIS_URL -d DESTINATION_PATH --recursive para descargar los datos.

Comentarios

El comando az ml job se puede usar para administrar los trabajos de Azure Machine Learning.

Ejemplos

Hay ejemplos disponibles en el repositorio de GitHub de ejemplos. A continuación se incluyen vínculos de ejemplos relevantes para los trabajos de clasificación de texto NLP con varias etiquetas.

YAML: trabajo de clasificación de texto con varias etiquetas de AutoML

$schema: https://azuremlsdk2.blob.core.windows.net/preview/0.0.1/autoMLJob.schema.json

type: automl
experiment_name: dpv2-cli-text-classification-multilabel-paper-cat
description: A text classification multilabel job using paper categorization data

compute: azureml:gpu-cluster

task: text_classification_multilabel
primary_metric: accuracy
log_verbosity: debug

limits:
  timeout_minutes: 60

target_column_name: "terms"
training_data:
  path: "./training-mltable-folder"
  type: mltable
validation_data:
  type: mltable
  path: "./validation-mltable-folder"
# featurization:
#   dataset_language: "eng"

YAML: trabajo de canalización de clasificación de texto con varias etiquetas de AutoML

$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline

description: Pipeline using AutoML Text Classification Multilabel task

display_name: pipeline-with-text-classification-multilabel
experiment_name: pipeline-with-automl

settings:
  default_compute: azureml:gpu-cluster

inputs:
  text_classification_multilabel_training_data:
    type: mltable
    path: ./training-mltable-folder
  text_classification_multilabel_validation_data:
    type: mltable
    path: ./validation-mltable-folder

jobs:
  preprocessing_node:
    type: command
    component: file:./components/component_preprocessing.yaml
    inputs:
      train_data: ${{parent.inputs.text_classification_multilabel_training_data}}
      validation_data: ${{parent.inputs.text_classification_multilabel_validation_data}}
    outputs:
      preprocessed_train_data:
        type: mltable
      preprocessed_validation_data:
        type: mltable
  text_classification_multilabel_node:
    type: automl
    task: text_classification_multilabel
    log_verbosity: info
    primary_metric: accuracy
    limits:
      max_trials: 1
      timeout_minutes: 60
    target_column_name: terms
    training_data: ${{parent.jobs.preprocessing_node.outputs.preprocessed_train_data}}
    validation_data: ${{parent.jobs.preprocessing_node.outputs.preprocessed_validation_data}}
    # currently need to specify outputs "mlflow_model" explicitly to reference it in following nodes
    outputs:
      best_model:
        type: mlflow_model
  register_model_node:
    type: command
    component: file:./components/component_register_model.yaml
    inputs:
      model_input_path: ${{parent.jobs.text_classification_multilabel_node.outputs.best_model}}
      model_base_name: paper_categorization_model

Pasos siguientes