Compartir a través de


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 este artículo, aprenderá a configurar un trabajo 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 este artículo se proporcionan detalles de las distintas opciones que puede usar para configurar experimentos de aprendizaje automático automatizado.

Si prefiere una experiencia sin código, también puede configurar el entrenamiento de ML automático sin código para datos tabulares con la interfaz de usuario de Studio.

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

El ejemplo siguiente usa la autenticación predeterminada de Azure con la configuración del área de trabajo predeterminada o configuración desde un archivo config.json en la estructura de carpetas. Si no se encuentra config.json, debe introducir manualmente los parámetros de id. de suscripción y á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)

Especificar formato y origen de datos

Para proporcionar datos de entrenamiento 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. Se recomienda usar MLTable, disponible en la versión 2. En este ejemplo, 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 carpeta ./train_data 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, consulte Trabajar con tablas en Azure Machine Learning.

Datos de entrenamiento, validación y prueba

Puede especificar datos de entrenamiento y conjuntos de datos de validación. Los datos de entrenamiento se deben proporcionar al parámetro training_data en la función de fábrica del trabajo de aprendizaje automático 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 y 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 1 000 filas, se usan diez iteraciones.
Si hay entre o igual a 1 000 y 20 000 filas, se usan tres iteraciones.

Proceso para ejecutar el experimento

Actualmente, los trabajos de aprendizaje automático automatizado con la versión 2 del SDK de Python (o la versión 2 de la CLI) solo se admiten en un clúster de proceso remoto de Azure Machine Learning o en una instancia de proceso. Para más información sobre cómo crear un proceso con la versión 2 del SDK o la CLI de Python, consulte Entrenamiento de modelos con la CLI, el SDK y la API de REST de Azure Machine Learning.

Establecer la configuración de experimento

Se pueden usar varias opciones para configurar el experimento de aprendizaje automático automatizado. 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 cinco iteraciones 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

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

El aprendizaje automático automatizado admite diferentes tipos de tareas:

  • Tareas basadas en datos tabulares

    • clasificación
    • Regresión
    • pronóstico
  • Tareas de Computer Vision, incluidas

    • Clasificación de imágenes
    • Detección de objetos
  • Tareas de procesamiento de lenguaje natural, incluidas

    • Clasificación de textos
    • Reconocimiento de entidades

Para más información, consulte el artículo sobre las tipos de tareas. Para más información sobre cómo configurar los trabajos de previsión, consulte Configuración de AutoML para entrenar un modelo de previsión de series temporales.

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. Para modificar aún más las iteraciones con los modelos disponibles para incluir o excluir, use los parámetros allowed_training_algorithms o blocked_training_algorithmsen la configuración training del trabajo.

En la siguiente tabla, explore los algoritmos admitidos por tarea de aprendizaje automático.

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
Media
Naive
SeasonalAverage

Con otros algoritmos:

Para ver cuadernos de ejemplo de cada tipo de tarea, consulte automl-standalone-jobs.

Métrica principal

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

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, incluido el tamaño de datos, el intervalo y la distribución de clases. En las secciones siguientes se resumen las métricas principales recomendadas en función del tipo de tarea y el escenario empresarial.

Para obtener información acerca de las definiciones específicas de estas métricas, consulte Descripción de los resultados del experimento 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 o computer vision y texto de procesamiento del lenguaje natural (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 Casos de uso de ejemplo
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 reconocimiento de entidades con nombre de texto NLP

En el caso del reconocimiento de entidades con nombre (NER) de texto 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 tienen 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, 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 optimizan 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 el rango, en lugar del valor exacto, es de interés, spearman_correlation puede ser una mejor opción. Mide la correlación de clasificación entre los valores reales y las predicciones.

El aprendizaje automático automatizado 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 el aprendizaje automático automatizado 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. 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 Casos de uso de ejemplo
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 recomendaciones para escenarios de regresión.

Métrica Casos de uso de ejemplo
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 cada experimento de aprendizaje automático automatizado, los datos se transforman automáticamente en números y vectores de números. Los datos también se escalan y se normalizan automáticamente para ayudar a los algoritmos que dependen de características que se encuentran en diferentes escalas. Estas transformaciones de datos se denominan caracterización.

Nota:

Los pasos de la caracterización del aprendizaje automático automatizado como la normalización de características, el control de los datos que faltan y la conversión de valores de texto a numéricos, se convierten en parte del modelo subyacente. Cuando 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 trabajos de aprendizaje automático automatizados, puede habilitar o deshabilitar la configuración de featurization.

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. Este valor es la configuración predeterminada.
"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 finalizar el 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 seis días (8 640 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 después de que tengan 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 43 200 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. Si no se especifica, el valor predeterminado de pruebas es 1 000. Si 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

Envíe el experimento para ejecutar y generar un modelo.

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 emplea el aprendizaje automático automatizado 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.

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. Para el aprendizaje automático automatizado, esto significa una ejecución secundaria. Si todos los nodos están ocupados, el nuevo experimento se pone en cola. Si hay nodos libres, el nuevo experimento ejecuta ejecuciones secundarias 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 e 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. Para una instancia de proceso, se puede establecer que max_concurrent_trials sea igual al número de núcleos en la máquina virtual 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 entrene 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, puede usar la implementación con un solo clic usando el Estudio de Azure Machine Learning. Consulte Implementación del modelo.

Uso de AutoML en canalizaciones

Para usar el aprendizaje automático automatizado en los flujos de trabajo de operaciones de aprendizaje automático, puede agregar pasos de trabajo de AutoML a las canalizaciones de Azure Machine Learning. Este enfoque le permite automatizar todo el flujo de trabajo enlazando los scripts de preparación de datos al aprendizaje automático automatizado. A continuación, registre y valide el mejor modelo resultante.

Este código es una canalización de ejemplo con un componente de clasificación de aprendizaje automático automatizado y un componente de comando que muestra la salida resultante. El código 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 el aprendizaje automático automatizado en las canalizaciones, consulte el repositorio de ejemplos.

Uso de AutoML a escala: entrenamiento distribuido

Para escenarios de datos de gran tamaño, el aprendizaje automático automatizado 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 200 GB

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, el aprendizaje automático automatizado 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, establezca 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. 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, consulte previsión a gran 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 valor 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
)

Para obtener ejemplos de código de configuración completo, vea las secciones anteriores sobre configuración y envío de trabajos.