Configuración del entrenamiento de AutoML para datos tabulares con la CLI de Azure Machine Learning y el SDK de Python

SE APLICA A:Extensión ML de la CLI de Azure v2 (actual)SDK de Python azure-ai-ml v2 (actual)

En esta guía, aprenderá a configurar un trabajo de entrenamiento de aprendizaje automático automatizado, AutoML, con el SDK v2 de Python para Azure Machine Learning. El aprendizaje automático automatizado elige un algoritmo e hiperparámetros, y genera un modelo listo para la implementación. En esta guía se proporcionan detalles de las distintas opciones que puede usar para configurar experimentos de ML automatizado.

Si prefiere una experiencia sin código, también puede configurar el entrenamiento de AutoML sin código en Estudio de Azure Machine Learning.

Requisitos previos

Para usar la información del SDK, instale el Azure Machine Learning SDK v2 para Python.

Para instalar el SDK, puede:

Configurar el área de trabajo

Para conectarse a un área de trabajo, debe proporcionar una suscripción, un grupo de recursos y un nombre para el área de trabajo.

Estos detalles se usan en MLClient desde azure.ai.ml para obtener un identificador del área de trabajo necesaria de Azure Machine Learning.

En el ejemplo siguiente, se usa la autenticación predeterminada de Azure junto con la configuración del área de trabajo predeterminada o desde cualquier archivo config.json que haya copiado en la estructura de carpetas. Si no se encuentra config.json, debe introducir manualmente los parámetros subscription_id y resource_group, junto con el área de trabajo al crear MLClient.

from azure.identity import DefaultAzureCredential
from azure.ai.ml import MLClient

credential = DefaultAzureCredential()
ml_client = None
try:
    ml_client = MLClient.from_config(credential)
except Exception as ex:
    print(ex)
    # Enter details of your Azure Machine Learning workspace
    subscription_id = "<SUBSCRIPTION_ID>"
    resource_group = "<RESOURCE_GROUP>"
    workspace = "<AZUREML_WORKSPACE_NAME>"
    ml_client = MLClient(credential, subscription_id, resource_group, workspace)

Formato y origen de datos

Para proporcionar datos de entrenamiento a AutoML en la versión 2 del SDK, debe cargarlos en la nube a través de MLTable.

Requisitos para cargar datos en una tabla MLTable:

  • Los datos deben estar en formato tabular.
  • El valor que se va a predecir, la columna de destino, debe estar en los datos.

Los datos de entrenamiento deben ser accesibles desde el proceso remoto. La versión 2 de Automated ML (SDK de Python y CLI/YAML) acepta recursos de datos MLTable (versión 2), aunque para la compatibilidad con versiones anteriores también admite conjuntos de datos tabulares desde la versión 1 (un conjunto de datos tabular registrado) a través de las mismas propiedades del conjunto de datos de entrada. Sin embargo, la recomendación es usar la versión 2 de MLTable. En este ejemplo, se supone que los datos se almacenan en la ruta de acceso local, ./train_data/bank_marketing_train_data.csv

Puede crear una instancia de MLTable mediante el SDK de Python de mltable como en el ejemplo siguiente:

import mltable

paths = [
    {'file': './train_data/bank_marketing_train_data.csv'}
]

train_table = mltable.from_delimited_files(paths)
train_table.save('./train_data')

Este código crea un nuevo archivo, ./train_data/MLTable, que contiene el formato de archivo y las instrucciones de carga.

Ahora la ./train_data carpeta tiene el archivo de definición de MLTable más el archivo de datos, bank_marketing_train_data.csv.

Para más información sobre MLTable, vea el artículo de procedimientos de mltable .

Datos de entrenamiento, validación y prueba

Puede especificar conjuntos de datos de entrenamiento y validación independientes; sin embargo, los datos de entrenamiento deben proporcionarse al parámetro training_data en la función de fábrica del trabajo de ML automatizado.

Si no especifica explícitamente un parámetro validation_data o n_cross_validation, el aprendizaje automático automatizado aplica las técnicas predeterminadas para determinar cómo se realiza la validación. Esta determinación depende del número de filas del conjunto de datos asignadas a su parámetro training_data.

Tamaño de datos de entrenamiento Técnica de validación
Mayor que 20 000 filas Se aplica la división de datos de entrenamiento o validación. El valor predeterminado consiste en usar el 10 % del conjunto de datos de entrenamiento inicial como conjunto de validación. A su vez, ese conjunto de validación se usa para calcular las métricas.
Menor o igual que 20 000 filas Se aplica el enfoque de validación cruzada. El número predeterminado de iteraciones depende del número de filas.
Si el conjunto de datos tiene menos de 1000 filas, se usan diez iteraciones.
Si hay entre o igual a 1000 y 20 000 filas, se usan tres iteraciones.

Proceso para ejecutar el experimento

Actualmente, los trabajos de ML automatizados con la versión 2 del SDK de Python (o la versión 2 de la CLI) solo se admiten en un proceso remoto de Azure Machine Learning (clúster o instancia de proceso).

Obtenga más información sobre cómo crear el proceso con el SDKv2 de Python (o CLIv2).

Establecer la configuración de experimento

Hay varias opciones que puede usar para configurar su experimento de ML automatizados. Estos parámetros de configuración se establecen en el método de tarea. También puede establecer la configuración de entrenamiento de trabajo y los criterios de salida con la configuración training y limits.

En el ejemplo siguiente se muestran los parámetros necesarios para una tarea de clasificación que especifica la precisión como métrica principal y 5 plegamientos de validación cruzada.

from azure.ai.ml.constants import AssetTypes
from azure.ai.ml import automl, Input

# note that this is a code snippet -- you might have to modify the variable values to run it successfully

# make an Input object for the training data
my_training_data_input = Input(
    type=AssetTypes.MLTABLE, path="./data/training-mltable-folder"
)

# configure the classification job
classification_job = automl.classification(
    compute=my_compute_name,
    experiment_name=my_exp_name,
    training_data=my_training_data_input,
    target_column_name="y",
    primary_metric="accuracy",
    n_cross_validations=5,
    enable_model_explainability=True,
    tags={"my_custom_tag": "My custom value"}
)

# Limits are all optional
classification_job.set_limits(
    timeout_minutes=600, 
    trial_timeout_minutes=20, 
    max_trials=5,
    enable_early_termination=True,
)

# Training properties are optional
classification_job.set_training(
    blocked_training_algorithms=["logistic_regression"], 
    enable_onnx_compatible_models=True
)

Seleccione el tipo de tarea de aprendizaje automático (problema de ML)

Para poder enviar el trabajo de ML automatizado, debe determinar el tipo de problema de aprendizaje automático que está solucionando. Este problema determina qué función usa el trabajo de ML automatizado y qué algoritmos de modelo aplica.

Automated ML admite tareas basadas en datos tabulares (clasificación, regresión y previsión), tareas de Computer Vision (como clasificación de imágenes y detección de objetos) y tareas de procesamiento de lenguaje natural (como clasificación de texto y tareas de reconocimiento de entidades). Vea nuestro artículo sobre los tipos de tareas para obtener más información. Vea nuestra guía de previsión de series temporales para obtener más detalles sobre cómo configurar trabajos de previsión.

Algoritmos admitidos

El aprendizaje automático automatizado prueba diferentes algoritmos y modelos durante el proceso de optimización y automatización. Como usuario, no necesita especificar el algoritmo.

El método de tarea determina la lista de algoritmos o modelos que se van a aplicar. Use los parámetros allowed_training_algorithms o blocked_training_algorithmsen la configuración del trabajotraining de AutoML para modificar aún más las iteraciones con los modelos disponibles para incluir o excluir.

En la siguiente lista de vínculos, puede explorar los algoritmos admitidos por tarea de aprendizaje automático que se muestra a continuación.

clasificación Regresión Previsión de series temporales
Regresión logística* Red elástica* AutoARIMA
Light GBM* Light GBM* Prophet
Potenciación del gradiente* Potenciación del gradiente* Red elástica
Árbol de decisión* Árbol de decisión* Light GBM
K Vecinos más próximos* K Vecinos más próximos* K Vecinos más próximos
SVC lineal* Lazo LARS* Árbol de decisión
Clasificación de vectores de soporte (SVC)* Descenso de gradiente estocástico (SGD)* Arimax
Bosque aleatorio* Bosque aleatorio Lazo LARS
Árboles extremadamente aleatorios* Árboles extremadamente aleatorios* Árboles extremadamente aleatorios*
Xgboost* Xgboost* Bosque aleatorio
Naive Bayes* Xgboost TCNForecaster
Descenso de gradiente estocástico (SGD)* Descenso de gradiente estocástico (SGD) Potenciación del gradiente
ExponentialSmoothing
SeasonalNaive
Average
Naive
SeasonalAverage

Con algoritmos adicionales a continuación.

Siga este vínculo para ver cuadernos de ejemplo de cada tipo de tarea.

Métrica principal

El parámetro primary_metric determina la métrica que se utilizará durante el entrenamiento del modelo para la optimización. La métrica principal que puede seleccionar viene determinada por el tipo de tarea que elija.

La elección de una métrica principal para que el aprendizaje automático automatizado la optimice depende de muchos factores. Se recomienda que la consideración principal sea elegir la métrica que mejor represente las necesidades de su empresa. A continuación, considere si la métrica es adecuada para su perfil de conjunto de datos (tamaño de datos, intervalo, distribución de clases, etc.). En las secciones siguientes se resumen las métricas principales recomendadas en función del tipo de tarea y el escenario empresarial.

Obtenga información acerca de las definiciones específicas de estas métricas en Descripción de los resultados de aprendizaje automático automatizado.

Métricas para escenarios de clasificación de varias clases

Estas métricas se aplican a todos los escenarios de clasificación, incluidos datos tabulares, imágenes/Computere Vision y texto NLP.

Las métricas dependientes de umbrales, como accuracy, recall_score_weighted, norm_macro_recall y precision_score_weighted, podrían no optimizarse adecuadamente para los conjuntos de datos que son pequeños, tienen un sesgo de clase muy grande (desequilibrio de clases) o si el valor de métrica esperado está muy cerca de 0,0 o 1,0. En esos casos, AUC_weighted puede ser una mejor opción de métrica principal. Una vez completado el aprendizaje automático automatizado, puede elegir el modelo ganador en función de la métrica que mejor se adapte a sus necesidades empresariales.

Métrica Ejemplo de casos de uso
accuracy Clasificación de imágenes, análisis de sentimiento, predicción de abandono
AUC_weighted Detección de fraudes, clasificación de imágenes, detección de anomalías/detección de correo no deseado
average_precision_score_weighted análisis de opiniones
norm_macro_recall Predicción de abandono
precision_score_weighted

Métricas para escenarios de clasificación de varias etiquetas

  • Para la clasificación de texto con varias etiquetas, actualmente "Precisión" es la única métrica principal admitida.

  • Para la clasificación de imágenes con varias etiquetas, las métricas principales admitidas se definen en la enumeración ClassificationMultilabelPrimaryMetrics

Métricas para escenarios de NER (reconocimiento de entidades con nombre) de texto NLP

  • En el caso de NER (Reconocimiento de entidades con nombre) de texti NLP, actualmente "Precisión" es la única métrica principal admitida.

Métricas para escenarios de regresión

r2_score, normalized_mean_absolute_error y normalized_root_mean_squared_error intentan minimizar los errores de predicción. r2_score y normalized_root_mean_squared_error minimizan el promedio de errores al cuadrado mientras que normalized_mean_absolute_error minimiza el valor absoluto promedio de errores. El valor absoluto trata los errores en todas las magnitudes por igual y los errores al cuadrado tendrán una penalización mucho mayor para los errores con valores absolutos mayores. En función de si los errores mayores se deben penalizar más o no, se puede optar por optimizar el error al cuadrado o el error absoluto.

La principal diferencia entre r2_score y normalized_root_mean_squared_error es la forma en que se normalizan y sus significados. normalized_root_mean_squared_error es la raíz del error cuadrático medio normalizada por intervalo y se puede interpretar como la magnitud media del error para la predicción. r2_score es el error cuadrático medio normalizado por una estimación de varianza de datos. Es la proporción de variación que puede capturar el modelo.

Nota:

r2_score y normalized_root_mean_squared_error también se comportan de forma similar a las métricas principales. Si se aplica un conjunto de validación fijo, estas dos métricas optimizan el mismo destino, error cuadrático medio, y se optimizarán con el mismo modelo. Cuando solo hay un conjunto de entrenamiento disponible y se aplica la validación cruzada, serían ligeramente diferentes, ya que el normalizador de normalized_root_mean_squared_error se fija como el intervalo del conjunto de entrenamiento, pero el normalizador para r2_score variaría para cada plegamiento, ya que es la varianza de cada plegamiento.

Si la clasificación, en lugar del valor exacto es de interés, spearman_correlation puede ser una mejor opción, ya que mide la correlación de clasificación entre los valores reales y las predicciones.

AutoML no admite actualmente ninguna métrica principal que mida la diferencia relativa entre las predicciones y las observaciones. Las métricas r2_score, normalized_mean_absolute_errory normalized_root_mean_squared_error son todas las medidas de diferencia absoluta. Por ejemplo, si una predicción difiere de una observación en 10 unidades, estas métricas calculan el mismo valor si la observación es de 20 unidades o 20 000 unidades. En cambio, una diferencia porcentual, que es una medida relativa, proporciona errores del 50 % y del 0,05 %, respectivamente. Para optimizar la diferencia relativa, puede ejecutar AutoML con una métrica principal compatible y, a continuación, seleccionar el modelo con el mejor mean_absolute_percentage_error o root_mean_squared_log_error. Tenga en cuenta que estas métricas no están definidas cuando los valores de observación son cero, por lo que es posible que no siempre sean buenas opciones.

Métrica Ejemplo de casos de uso
spearman_correlation
normalized_root_mean_squared_error Predicción de precios (casa/producto/propina), revisión de predicciones de puntuación
r2_score Retraso de aerolíneas, estimación de salarios, tiempo de resolución de errores
normalized_mean_absolute_error

Métricas para escenarios de previsión de series temporales

Las recomendaciones son similares a las que se han indicado para escenarios de regresión.

Métrica Ejemplo de casos de uso
normalized_root_mean_squared_error Predicción de precios (previsión), optimización de inventarios, previsión de la demanda
r2_score Predicción de precios (previsión), optimización de inventarios, previsión de la demanda
normalized_mean_absolute_error

Métricas para escenarios de detección de objetos de imagen

  • Para la detección de objetos de imagen, las métricas principales admitidas se definen en la enumeración ObjectDetectionPrimaryMetrics.

Métricas para escenarios de segmentación de instancias de imagen

  • Para escenarios de segmentación de instancias de imagen, las métricas principales admitidas se definen en la enumeración InstanceSegmentationPrimaryMetrics.

Caracterización de datos

En todos los experimentos automatizados de ML, los datos se transforman automáticamente en números y vectores de números y también se escalan y normalizan para ayudar a los algoritmos que son sensibles a las características que están en diferentes escalas. Estas transformaciones de datos se denominan caracterización.

Nota

Los pasos de la caracterización del aprendizaje automático automatizado (normalización de características, control de los datos que faltan, conversión de valores de texto a numéricos, etc.) se convierten en parte del modelo subyacente. Cuando se usa el modelo para realizar predicciones, se aplican automáticamente a los datos de entrada los mismos pasos de caracterización que se aplican durante el entrenamiento.

Al configurar los trabajos de ML automatizados, puede habilitar o deshabilitar la configuración featurization mediante la función de agregado .

En la tabla siguiente se muestra la configuración aceptada para la caracterización.

Configuración de la caracterización Descripción
"mode": 'auto' Indica que, como parte del preprocesamiento, los pasos de caracterización y protección se realizan automáticamente. Valor predeterminado.
"mode": 'off' Indica que el paso de caracterización no se debe realizar de forma automática.
"mode": 'custom' Indica que se debe usar un paso personalizado de caracterización.

En el código siguiente se muestra cómo se puede proporcionar la caracterización personalizada en este caso para un trabajo de regresión.

from azure.ai.ml.automl import ColumnTransformer

transformer_params = {
    "imputer": [
        ColumnTransformer(fields=["CACH"], parameters={"strategy": "most_frequent"}),
        ColumnTransformer(fields=["PRP"], parameters={"strategy": "most_frequent"}),
    ],
}
regression_job.set_featurization(
    mode="custom",
    transformer_params=transformer_params,
    blocked_transformers=["LabelEncoding"],
    column_name_and_types={"CHMIN": "Categorical"},
)

Exit criteria (Criterios de salida)

Hay algunas opciones que puede definir en la función set_limits() para finalizar el experimento antes de la finalización del trabajo.

Criterios description
Sin criterios Si no se define ningún parámetro de salida, el experimento continúa hasta que no se realice ningún progreso adicional en la métrica principal.
timeout Define el tiempo, en minutos, que el experimento debe seguir ejecutándose. Si no se especifica, el tiempo de espera total del trabajo predeterminado es de 6 días (8640 minutos). Para especificar un tiempo de espera menor o igual que 1 hora (60 minutos), asegúrese de que el tamaño del conjunto de datos no sea mayor que 10 000 000 (filas por columna) o se producirá un error.

Este tiempo de espera incluye las ejecuciones de instalación, caracterización y entrenamiento, pero no incluye las ejecuciones de explicación del modelo y ensamblado al final del proceso, ya que esas acciones deben realizarse una vez que tienen lugar todas las pruebas (trabajos secundarios).
trial_timeout_minutes Tiempo máximo en minutos durante el que se puede ejecutar cada prueba (trabajo secundario) antes de que finalice. Si no se especifica, se usa un valor de 1 mes o 43200 minutos.
enable_early_termination Indica si se va a finalizar el trabajo si la puntuación no mejora a corto plazo.
max_trials El número máximo de pruebas o ejecuciones cada una con una combinación diferente de algoritmos e hiperparámetros para probar durante un trabajo de AutoML. Si no se especifica, el valor predeterminado de pruebas es 1000. Si se usa enable_early_termination, el número de pruebas usadas puede ser menor.
max_concurrent_trials Representa el número máximo de iteraciones que se ejecutarán en paralelo. Se recomienda hacer coincidir este número con el número de nodos del clúster.

Ejecutar experimento

Nota:

Si ejecuta un experimento con las mismas opciones de configuración y métricas principales varias veces, es probable que vea una variación en las puntuaciones de las métricas finales de los experimentos y en los modelos generados. Los algoritmos que ML automatizado emplea llevan inherente la aleatoriedad, que puede provocar una ligera variación en los modelos que ha generado el experimento y en la puntuación de las métricas finales del modelo recomendado, como la precisión. Es probable que también vea resultados con el mismo nombre de modelo, pero diferentes hiperparámetros usados.

Advertencia

Si ha establecido reglas en el firewall o en el grupo de seguridad de red a través del área de trabajo, compruebe que se conceden los permisos necesarios al tráfico de red entrante y saliente, tal como se define en Configuración del tráfico de red entrante y saliente.

Envíe el experimento para ejecutar y generar un modelo. Con MLClient creado en los requisitos previos, puede ejecutar el siguiente comando en el área de trabajo.


# Submit the AutoML job
returned_job = ml_client.jobs.create_or_update(
    classification_job
)  # submit the job to the backend

print(f"Created job: {returned_job}")

# Get a URL for the status of the job
returned_job.services["Studio"].endpoint

Varias ejecuciones secundarias en clústeres

Las ejecuciones secundarias de experimentos de aprendizaje automático automatizado se pueden realizar en un clúster que ya está ejecutando otro experimento. Sin embargo, el tiempo depende del número de nodos que tenga el clúster y de si esos nodos están disponibles para ejecutar un experimento diferente.

Cada nodo del clúster actúa como una máquina virtual (VM) individual que puede realizar una sola ejecución de entrenamiento; en el caso del aprendizaje automático automatizado, esto significa una ejecución secundaria. Si todos los nodos están ocupados, el nuevo experimento se pone en cola. Sin embargo, si hay nodos libres, el nuevo experimento ejecutará las ejecuciones secundarias de aprendizaje automático automatizado en paralelo en los nodos o máquinas virtuales disponibles.

Para ayudar a administrar las ejecuciones secundarias y cuándo se pueden realizar, se recomienda crear un clúster dedicado por experimento y hacer coincidir el número de max_concurrent_iterations del experimento con el número de nodos del clúster. De esta manera, se usan todos los nodos del clúster al mismo tiempo con el número de ejecuciones o iteraciones secundarias simultáneas que se desee.

Configure max_concurrent_iterations en la limits configuración. Si no se configura, solo se permite de forma predeterminada una ejecución o iteración secundaria simultánea en cada experimento. En el caso de la instancia de proceso, se puede establecer que max_concurrent_trials sea igual al número de núcleos en la VM de la instancia de proceso.

Exploración de modelos y métricas

El aprendizaje automático automatizado ofrece opciones para supervisar y evaluar los resultados del entrenamiento.

Desde la interfaz de Azure Machine Learning en la página del modelo también puede ver los hiperparámetros usados cuando se entrena un modelo en particular y también ver y personalizar el código de entrenamiento del modelo interno usado.

Registro e implementación de modelos

Después de probar un modelo y confirmar que desea usarlo en producción, puede registrarlo para su uso posterior.

Sugerencia

En los modelos registrados, la implementación con un solo clic está disponible a través del Estudio de Azure Machine Learning. Consulte cómo implementar modelos registrados desde el estudio.

AutoML en canalizaciones

Para aprovechar AutoML en los flujos de trabajo de MLOps, puede agregar pasos de trabajo de AutoML a las canalizaciones de Azure Machine Learning. Esto le permite automatizar todo el flujo de trabajo enlazando los scripts de preparación de datos a AutoML y, a continuación, registrando y validando el mejor modelo resultante.

A continuación se muestra una canalización de ejemplo con un componente de clasificación de AutoML y un componente de comando que muestra la salida de AutoML resultante. Observe cómo se hace referencia a las entradas (datos de validación y entrenamiento) y a las salidas (mejor modelo) en diferentes pasos.

# Define pipeline
@pipeline(
    description="AutoML Classification Pipeline",
    )
def automl_classification(
    classification_train_data,
    classification_validation_data
):
    # define the automl classification task with automl function
    classification_node = classification(
        training_data=classification_train_data,
        validation_data=classification_validation_data,
        target_column_name="y",
        primary_metric="accuracy",
        # currently need to specify outputs "mlflow_model" explictly to reference it in following nodes 
        outputs={"best_model": Output(type="mlflow_model")},
    )
    # set limits and training
    classification_node.set_limits(max_trials=1)
    classification_node.set_training(
        enable_stack_ensemble=False,
        enable_vote_ensemble=False
    )

    command_func = command(
        inputs=dict(
            automl_output=Input(type="mlflow_model")
        ),
        command="ls ${{inputs.automl_output}}",
        environment="AzureML-sklearn-0.24-ubuntu18.04-py37-cpu:latest"
    )
    show_output = command_func(automl_output=classification_node.outputs.best_model)


pipeline_job = automl_classification(
    classification_train_data=Input(path="./training-mltable-folder/", type="mltable"),
    classification_validation_data=Input(path="./validation-mltable-folder/", type="mltable"),
)

# set pipeline level compute
pipeline_job.settings.default_compute = compute_name

# submit the pipeline job
returned_pipeline_job = ml_client.jobs.create_or_update(
    pipeline_job,
    experiment_name=experiment_name
)
returned_pipeline_job

# ...
# Note that this is a snippet from the bankmarketing example you can find in our examples repo -> https://github.com/Azure/azureml-examples/tree/main/sdk/python/jobs/pipelines/1h_automl_in_pipeline/automl-classification-bankmarketing-in-pipeline

Para obtener más ejemplos sobre cómo incluir AutoML en las canalizaciones, consulte nuestro repositorio de ejemplos.

AutoML a escala: entrenamiento distribuido

Para escenarios de datos de gran tamaño, AutoML admite el entrenamiento distribuido para un conjunto limitado de modelos:

Algoritmo distribuido Tareas admitidas Límite de tamaño de datos (aproximado)
LightGBM Clasificación, regresión 1 TB
TCNForecaster Previsión 200GB

Los algoritmos de entrenamiento distribuido crean particiones y distribuyen automáticamente los datos entre varios nodos de proceso para el entrenamiento del modelo.

Nota

La validación cruzada, los modelos de conjunto, la compatibilidad con ONNX y la generación de código no se admiten actualmente en el modo de entrenamiento distribuido. Además, AutoML puede tomar decisiones como restringir los caracterizadores disponibles y los datos de submuestreo usados para la validación, la explicación y la evaluación del modelo.

Entrenamiento distribuido para clasificación y regresión

Para usar el entrenamiento distribuido para la clasificación o regresión, debe establecer las propiedadestraining_mode y max_nodes del objeto de trabajo.

Propiedad Descripción
training_mode Indica el modo de entrenamiento; distributed o non_distributed. Tiene como valor predeterminado non_distributed.
max_nodes Número de nodos que se van a usar para el entrenamiento por cada prueba de AutoML. Este valor debe ser mayor o igual que 4.

En el ejemplo de código siguiente se muestra un ejemplo de esta configuración para un trabajo de clasificación:

from azure.ai.ml.constants import TabularTrainingMode

# Set the training mode to distributed
classification_job.set_training(
    allowed_training_algorithms=["LightGBM"],
    training_mode=TabularTrainingMode.DISTRIBUTED
)

# Distribute training across 4 nodes for each trial
classification_job.set_limits(
    max_nodes=4,
    # other limit settings
)

Nota

El entrenamiento distribuido para tareas de clasificación y regresión no admite actualmente varias pruebas simultáneas. Las pruebas de modelo se ejecutan secuencialmente con cada prueba mediante max_nodes nodos. Actualmente se omite la max_concurrent_trials configuración de límite.

Entrenamiento distribuido para la previsión

Para obtener información sobre cómo funciona el entrenamiento distribuido para las tareas de previsión, vea nuestro artículo de previsión a escala . Para usar el entrenamiento distribuido para la previsión, debe establecer lostraining_mode, enable_dnn_training,max_nodes, y opcionalmente lasmax_concurrent_trials propiedades del objeto de trabajo.

Propiedad Descripción
training_mode Indica el modo de entrenamiento; distributed o non_distributed. Tiene como valor predeterminado non_distributed.
enable_dnn_training Marca para habilitar modelos de red neuronal profunda.
max_concurrent_trials Este es el número máximo de modelos de prueba que se van a entrenar en paralelo. De manera predeterminada, su valor es 1.
max_nodes Número total de nodos que se van a usar para el entrenamiento. Este valor debe ser mayor o igual que 2. Para las tareas de previsión, cada modelo de prueba se entrena mediante nodos $\text{max}\left(2, \text{floor}( \text{max_nodes} / \text{max_concurrent_trials}) \right)$.

En el ejemplo de código siguiente se muestra un ejemplo de esta configuración para un trabajo de previsión:

from azure.ai.ml.constants import TabularTrainingMode

# Set the training mode to distributed
forecasting_job.set_training(
    enable_dnn_training=True,
    allowed_training_algorithms=["TCNForecaster"],
    training_mode=TabularTrainingMode.DISTRIBUTED
)

# Distribute training across 4 nodes
# Train 2 trial models in parallel => 2 nodes per trial
forecasting_job.set_limits(
    max_concurrent_trials=2,
    max_nodes=4,
    # other limit settings
)

Vea las secciones anteriores sobre configuración y envío de trabajos para obtener ejemplos de código de configuración completo.

Pasos siguientes