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
- Suscripción a Azure. Si no tiene una suscripción de Azure, cree una cuenta gratuita antes de empezar. Pruebe la versión gratuita o de pago de Azure Machine Learning.
- Un área de trabajo de Azure Machine Learning. Si no tiene, consulte Creación de recursos para empezar.
Para usar la información del SDK, instale el Azure Machine Learning SDK v2 para Python.
Para instalar el SDK, puede:
- Cree una instancia de proceso, que ya tiene el SDK de Python para Azure Machine Learning más reciente y está configurado para flujos de trabajo de ML. Para obtener más información, consulte Creación de una instancia de proceso de Azure Machine Learning.
- Instale el SDK en su máquina local.
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_algorithms
en la configuración training
del trabajo.
En la siguiente tabla, explore los algoritmos admitidos por tarea de aprendizaje automático.
Con otros algoritmos:
- Algoritmos de varias clases de clasificación de imágenes
- Algoritmos de varias etiquetas de clasificación de imágenes
- Algoritmos de detección de objetos de imagen
- Algoritmos de varias etiquetas de clasificación de texto NLP
- Algoritmos de reconocimiento de entidades con nombre de texto NLP (NER)
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_error
y 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.
Para obtener definiciones y ejemplos de las métricas y los gráficos de rendimiento que se proporcionan en cada ejecución, consulte Evaluación de los resultados del experimento de aprendizaje automático automatizado.
Para obtener un resumen de la caracterización y comprender las características que se agregaron a un modelo determinado, consulte Transparencia de caracterización.
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.
Contenido relacionado
- Obtenga más información sobre cómo y dónde implementar un modelo.
- Más información sobre cómo configurar AutoML para entrenar un modelo de previsión de series temporales.