Configuración del entrenamiento de AutoML con Python

SE APLICA A:Azure ML del SDK de Python v1

En esta guía, aprenda a configurar un aprendizaje automático automatizado, AutoML, con el SDK de Python para Azure Machine Learning mediante el modelo de ML automatizado de 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.

Para obtener un ejemplo completo, consulte Tutorial: AutoML: entrenamiento del modelo de regresión.

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 realizar este artículo, necesitará lo siguiente

Seleccione el tipo de experimento

Antes de comenzar el experimento, debe determinar el tipo de problema de aprendizaje automático que va a resolver. El aprendizaje automático automatizado admite tipos de tareas de classification, regression y forecasting. Más información sobre los tipos de tareas.

Nota

Soporte para tareas de procesamiento de lenguaje natural (PNL): la clasificación de imágenes (multi-clase y multietiqueta) y el reconocimiento de entidades con nombre están disponibles en la vista previa pública. Más información sobre las tareas de NLP en ML automatizado.

Estas versiones preliminares se proporcionan sin contrato de nivel de servicio. Es posible que algunas características no sean compatibles o que tengan sus funcionalidades limitadas. Para más información, consulte Términos de uso complementarios de las Versiones Preliminares de Microsoft Azure.

En el código siguiente se usa el parámetro task en el constructor AutoMLConfig para especificar el tipo de experimento como classification.

from azureml.train.automl import AutoMLConfig

# task can be one of classification, regression, forecasting
automl_config = AutoMLConfig(task = "classification")

Formato y origen de datos

El aprendizaje automático automatizado es compatible con los datos que residen en el escritorio local o en la nube, como Azure Blob Storage. Los datos se pueden leer en DataFrame de Pandas o en TabularDataset de Azure Machine Learning. Más información sobre los conjuntos de datos.

Requisitos para los datos de entrenamiento en el aprendizaje automático:

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

Importante

Los experimentos de ML automatizados no admiten el entrenamiento con conjuntos de datos que usan el acceso a datos basado en identidades.

En el caso de los experimentos remotos, los datos de aprendizaje deben ser accesibles desde el proceso remoto. ML automatizado solo acepta la clase TabularDataset de Azure Machine Learning al trabajar en un proceso remoto.

Los conjuntos de datos de Azure Machine Learning exponen la funcionalidad para:

  • Transferir datos fácilmente de archivos estáticos u orígenes de dirección URL a su área de trabajo.
  • Poner sus datos a disposición de los scripts de entrenamiento al ejecutarse en recursos de proceso en la nube. Consulte Entrenamiento con conjuntos de datos para obtener un ejemplo del uso de la clase Dataset para montar datos en el destino de proceso remoto.

El código siguiente crea un objeto TabularDataset a partir de una dirección URL web. Consulte Creación de un objeto TabularDataset para ver ejemplos de código sobre cómo crear conjuntos de datos desde otros orígenes, como archivos locales y almacenes de datos.

from azureml.core.dataset import Dataset
data = "https://automlsamplenotebookdata.blob.core.windows.net/automl-sample-notebook-data/creditcard.csv"
dataset = Dataset.Tabular.from_delimited_files(data)

En el caso de los experimentos de proceso locales, se recomiendan dataframes de Pandas para acelerar los tiempos de procesamiento.

import pandas as pd
from sklearn.model_selection import train_test_split

df = pd.read_csv("your-local-file.csv")
train_data, test_data = train_test_split(df, test_size=0.1, random_state=42)
label = "label-col-name"

Datos de entrenamiento, validación y prueba

Puede especificar datos del entrenamiento y conjuntos de datos de validación independientes directamente en el constructor AutoMLConfig. Consulte más información sobre cómo configurar datos de entrenamiento, validación, validación cruzada y prueba para los experimentos de AutoML.

Si no especifica explícitamente un parámetro validation_data o n_cross_validation, AutoML 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 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 1000 y 20 000 filas, se usan tres iteraciones.

Sugerencia

Puede cargar datos de prueba (versión preliminar) para evaluar los modelos que el aprendizaje automático automatizado ha generado automáticamente. Estas características son capacidades experimentales en versión preliminar y pueden cambiar en cualquier momento. Obtenga información sobre cómo:

Si prefiere no usar código, consulte el paso 12 de Configuración de AutoML con la interfaz de usuario de Studio.

Datos grandes

ML automatizado admite un número limitado de algoritmos para el entrenamiento en datos grandes que pueden crear correctamente modelos para los macrodatos en máquinas virtuales pequeñas. La heurística de ML automatizado depende de propiedades como el tamaño de los datos, el tamaño de memoria de la máquina virtual, el tiempo de espera del experimento y la configuración de caracterización para determinar si se deben aplicar estos algoritmos de datos grandes. Obtenga más información sobre los modelos que se admiten en ML automatizado.

Si desea invalidar esta heurística, aplique la siguiente configuración:

Tarea Configuración Notas
Bloquear algoritmos de streaming de datos blocked_models en el objeto AutoMLConfig y enumere los modelos que no desea usar. Da como resultado un error de ejecución o un tiempo de ejecución largo
Usar algoritmos de streaming de datos allowed_models en el objeto AutoMLConfig y enumere los modelos que desea usar.
Usar algoritmos de streaming de datos
(experimentos de la IU de Estudio)
Bloquee todos los modelos excepto los algoritmos de macrodatos que desea usar.

Proceso para ejecutar el experimento

A continuación, determine dónde se va a entrenar el modelo. Un experimento de entrenamiento de aprendizaje automático automatizado se puede ejecutar en las opciones de proceso siguientes.

  • Elija un proceso local: si su escenario es de exploraciones iniciales o demostraciones con datos reducidos y entrenamientos cortos (es decir, segundos o un par de minutos por cada ejecución secundaria), el entrenamiento en el equipo local puede ser la mejor opción. No hay tiempo de instalación y los recursos de infraestructura (su equipo o máquina virtual) están disponibles directamente. Consulte este cuaderno para obtener un ejemplo de proceso local.

  • Elija un clúster de proceso de ML remoto: si va a realizar un entrenamiento con conjuntos de datos de mayor tamaño, como en los entrenamientos de producción con la creación de modelos que necesiten entrenamientos más largos, el proceso remoto proporciona un rendimiento de tiempo de extremo a extremo mucho mejor, ya que AutoML pondrá en paralelo los entrenamientos en los nodos del clúster. En un proceso remoto, el tiempo de inicio de la infraestructura interna agregará aproximadamente 1,5 minutos por ejecución secundaria, además de minutos adicionales para la infraestructura del clúster si las máquinas virtuales aún no están en funcionamiento. Azure Machine Learning Managed Compute es un servicio administrado que permite entrenar modelos de aprendizaje automático en clústeres de máquinas virtuales de Azure. La instancia de proceso también se admite como destino de proceso.

  • Un clúster de Azure Databricks en su suscripción de Azure. Puede encontrar más detalles en Configuración del clúster de Azure Databricks para ML automatizado. Consulte este sitio de GitHub para ver ejemplos de cuadernos con Azure Databricks.

Tenga en cuenta estos factores al elegir el destino de proceso:

Ventajas (a favor) Desventajas (en contra)
Destino de proceso local
  • No hay tiempo de inicio del entorno
  • Subconjunto de características
  • No se pueden realizar ejecuciones en paralelo
  • Peor para datos de gran tamaño
  • Sin streaming de datos durante el entrenamiento
  • No hay características basadas en DNN
  • Solo SDK de Python
  • Clústeres de proceso de ML remotos
  • Conjunto completo de características
  • Realización de ejecuciones secundarias en paralelo
  • Compatibilidad con datos de gran tamaño
  • Características basadas en DNN
  • Escalabilidad dinámica del clúster de proceso a petición
  • Sin experiencia de código (interfaz de usuario web) también disponible
  • Tiempo de inicio de los nodos de clúster
  • Tiempo de inicio para cada ejecución secundaria
  • Establecer la configuración de experimento

    Hay varias opciones que puede usar para configurar su experimento de ML automatizados. Estos parámetros se establecen al crear una instancia un objeto AutoMLConfig. Consulte la clase AutoMLConfig para obtener una lista completa de parámetros.

    El ejemplo siguiente es para una tarea de clasificación. El experimento utiliza AUC ponderado como la métrica principal y tiene un tiempo de espera del experimento establecido en 30 minutos y 2 iteraciones de validación cruzada.

        automl_classifier=AutoMLConfig(task='classification',
                                       primary_metric='AUC_weighted',
                                       experiment_timeout_minutes=30,
                                       blocked_models=['XGBoostClassifier'],
                                       training_data=train_data,
                                       label_column_name=label,
                                       n_cross_validations=2)
    

    También puede configurar tareas de previsión, lo que requiere una configuración adicional. Consulte el artículo Configuración de AutoML para la previsión de series temporales para más detalles.

        time_series_settings = {
                                'time_column_name': time_column_name,
                                'time_series_id_column_names': time_series_id_column_names,
                                'forecast_horizon': n_test_periods
                               }
        
        automl_config = AutoMLConfig(
                                     task = 'forecasting',
                                     debug_log='automl_oj_sales_errors.log',
                                     primary_metric='normalized_root_mean_squared_error',
                                     experiment_timeout_minutes=20,
                                     training_data=train_data,
                                     label_column_name=label,
                                     n_cross_validations=5,
                                     path=project_folder,
                                     verbosity=logging.INFO,
                                     **time_series_settings
                                    )
    

    Modelos admitidos

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

    Los tres valores de parámetro task diferentes determinan la lista de algoritmos o modelos que se aplicará. Use los parámetros allowed_models o blocked_models para modificar aún más las iteraciones con los modelos disponibles para incluir o excluir. En la tabla siguiente se resumen los modelos admitidos por tipo de tarea.

    Nota

    Si planea exportar los modelos creados mediante ML automatizado a un modelo de ONNX, solo los algoritmos que se indican con un * (asterisco) se pueden convertir al formato ONNX. Más información sobre la conversión de modelos a ONNX.

    Tenga en cuenta también que, en este momento, ONNX solo admite tareas de clasificación y regresió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* Potenciación del gradiente
    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* Descenso de gradiente estocástico (SGD)
    Xgboost* Xgboost* Bosque aleatorio
    Clasificador de perceptrón promedio Regresor descendente de gradiente en línea Xgboost
    Naive Bayes* Regresor lineal rápida ForecastTCN
    Descenso de gradiente estocástico (SGD)* Naive
    Clasificador SVM lineal* SeasonalNaive
    Average
    SeasonalAverage
    ExponentialSmoothing

    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 los escenarios de clasificación

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

    Sin embargo, actualmente no hay métricas principales de regresión que se refieran a la diferencia relativa. r2_score, normalized_mean_absolute_error y normalized_root_mean_squared_error tratan un error de predicción de 20 000 USD igual para un trabajador con un salario de 30 000 USD que para un trabajador que gana 20 millones de USD, si estos dos puntos de datos pertenecen al mismo conjunto de datos para la regresión o a la misma serie temporal especificada por el identificador de serie temporal. En realidad, un error de predicción de solo 20 000 USD en un salario de 20 millones USD es muy pequeño (hay una pequeña diferencia relativa del 0,1 %), mientras que una diferencia de 20 000 USD de 30 000 USD no está cerca (una gran diferencia relativa del 67 %). Para solucionar el problema de la diferencia relativa, se puede entrenar un modelo con métricas principales disponibles y, a continuación, seleccionar el modelo con mejor mean_absolute_percentage_error o root_mean_squared_log_error.

    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

    Caracterización de datos

    En cada experimento de aprendizaje automático automatizado, los datos se escalan y se normalizan automáticamente para ayudar a determinados algoritmos que dependen de características que se encuentran en diferentes escalas. Este ajuste de escala y normalización se conoce como caracterización. Consulte Caracterización en aprendizaje automático automatizado para obtener más información y ejemplos de código.

    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 experimentos en el objeto AutoMLConfig, puede habilitar o deshabilitar la opción de configuración featurization. En la tabla siguiente se muestra la configuración aceptada para la caracterización del objeto AutoMLConfig.

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

    Configuración de conjuntos

    Los modelos de conjunto están habilitados de forma predeterminada y aparecen como las iteraciones de ejecución finales en una ejecución de AutoML. Actualmente se admiten VotingEnsemble y StackEnsemble.

    La votación se implementa como un voto flexible mediante promedios ponderados. La implementación de apilamiento usa una implementación de dos niveles, donde el primer nivel tiene los mismos modelos que el conjunto de votación y el segundo modelo de nivel se usa para encontrar la combinación óptima de los modelos del primer nivel.

    Si usa modelos de ONNX o tiene habilitada la explicación del modelo, el apilamiento se deshabilita y solo se utiliza la votación.

    El entrenamiento de conjunto se puede deshabilitar mediante los parámetros booleanos enable_voting_ensemble y enable_stack_ensemble.

    automl_classifier = AutoMLConfig(
                                     task='classification',
                                     primary_metric='AUC_weighted',
                                     experiment_timeout_minutes=30,
                                     training_data=data_train,
                                     label_column_name=label,
                                     n_cross_validations=5,
                                     enable_voting_ensemble=False,
                                     enable_stack_ensemble=False
                                    )
    

    Hay varios argumentos predeterminados que se pueden proporcionar como kwargs en un objeto AutoMLConfig a fin de modificar el comportamiento predeterminado del conjunto.

    Importante

    Los parámetros siguientes no son parámetros explícitos de la clase AutoMLConfig.

    • ensemble_download_models_timeout_sec: Durante la generación de los modelos VotingEnsemble y StackEnsemble, se descargan varios modelos ajustados de las ejecuciones secundarias anteriores. Si detecta el error AutoMLEnsembleException: Could not find any models for running ensembling, es posible que tenga que proporcionar más tiempo para que se descarguen los modelos. El valor predeterminado es de 300 segundos para descargar estos modelos en paralelo y no hay límite máximo de tiempo de expiración. Configure este parámetro con un valor superior a 300 segundos, si se necesita más tiempo.

      Nota

      Si se alcanza el tiempo de expiración y hay modelos descargados, el ensamblado continúa con todos los modelos que ha descargado. No es necesario que se descarguen todos los modelos para finalizar en ese tiempo de expiración. Los parámetros siguientes solo se aplican a los modelos StackEnsemble:

    • stack_meta_learner_type: el metaaprendizaje es un modelo entrenado en la salida de los modelos heterogéneos individuales. Los metaaprendizajes predeterminados son LogisticRegression para las tareas de clasificación (o LogisticRegressionCV si está habilitada la validación cruzada) y ElasticNet para las tareas de regresión y predicción (o ElasticNetCV si está habilitada la validación cruzada). Este parámetro puede ser una de las cadenas siguientes: LogisticRegression, LogisticRegressionCV, LightGBMClassifier, ElasticNet, ElasticNetCV, LightGBMRegressor o LinearRegression.

    • stack_meta_learner_train_percentage: especifica la proporción del conjunto de entrenamiento (al elegir entrenar y el tipo de validación de entrenamiento) que se va a reservar para entrenar el metaaprendizaje. El valor predeterminado es 0.2.

    • stack_meta_learner_kwargs: parámetros opcionales que se van a pasar al inicializador del metaaprendizaje. Estos parámetros y tipos de parámetro reflejan los parámetros y tipos de parámetro del constructor del modelo correspondiente y se reenvían a dicho constructor.

    En el código siguiente se muestra un ejemplo de cómo especificar el comportamiento del conjunto personalizado en un objeto AutoMLConfig.

    ensemble_settings = {
                         "ensemble_download_models_timeout_sec": 600
                         "stack_meta_learner_type": "LogisticRegressionCV",
                         "stack_meta_learner_train_percentage": 0.3,
                         "stack_meta_learner_kwargs": {
                                                        "refit": True,
                                                        "fit_intercept": False,
                                                        "class_weight": "balanced",
                                                        "multi_class": "auto",
                                                        "n_jobs": -1
                                                      }
                        }
    automl_classifier = AutoMLConfig(
                                     task='classification',
                                     primary_metric='AUC_weighted',
                                     experiment_timeout_minutes=30,
                                     training_data=train_data,
                                     label_column_name=label,
                                     n_cross_validations=5,
                                     **ensemble_settings
                                    )
    

    Exit criteria (Criterios de salida)

    Hay algunas opciones que puede definir en el AutoMLConfig para finalizar el experimento.

    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.
    Después de un periodo de tiempo Use experiment_timeout_minutes en la configuración para definir el tiempo, en minutos, en que el experimento debe seguir ejecutándose.

    Para ayudar a evitar errores de tiempo de espera del experimento, hay un mínimo de 15 minutos o 60 minutos si el tamaño de fila por columna es superior a 10 millones.
    Se ha alcanzado una puntuación El uso de experiment_exit_score completará el experimento una vez alcanzada una puntuación de métrica principal especificada.

    Ejecutar experimento

    Advertencia

    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.

    Para una instancia de ML automatizado, se crea un objeto Experiment, que es un objeto con nombre en un objeto Workspace que se usa para ejecutar experimentos.

    from azureml.core.experiment import Experiment
    
    ws = Workspace.from_config()
    
    # Choose a name for the experiment and specify the project folder.
    experiment_name = 'Tutorial-automl'
    project_folder = './sample_projects/automl-classification'
    
    experiment = Experiment(ws, experiment_name)
    

    Envíe el experimento para ejecutar y generar un modelo. Pase AutoMLConfig al método submit para generar el modelo.

    run = experiment.submit(automl_config, show_output=True)
    

    Nota

    Las dependencias se instalan por primera vez en una máquina nueva. El resultado puede tardar hasta 10 minutos en mostrarse. Establecer show_output en True genera un resultado que se muestra en la consola.

    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 el objeto AutoMLConfig. 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_iterations 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.

    Puede ver los hiperparámetros, las técnicas de escalado y normalización, y el algoritmo que se aplica a una ejecución específica de aprendizaje automático automatizado con la solución de código personalizado, print_model().

    Sugerencia

    El aprendizaje automático automatizado también le permite ver el código de entrenamiento del modelo generado para modelos entrenados de AutoML. Esta funcionalidad está en versión preliminar pública y puede cambiar en cualquier momento.

    Supervisar las ejecuciones automatizadas de aprendizaje automático

    En el caso de las ejecuciones de aprendizaje automático automatizado, para acceder a los gráficos de una ejecución anterior, sustituya <<experiment_name>> con el nombre del experimento correspondiente:

    from azureml.widgets import RunDetails
    from azureml.core.run import Run
    
    experiment = Experiment (workspace, <<experiment_name>>)
    run_id = 'autoML_my_runID' #replace with run_ID
    run = Run(experiment, run_id)
    RunDetails(run).show()
    

    Jupyter notebook widget for Automated Machine Learning

    Modelos de prueba (versión preliminar)

    Importante

    La característica para probar modelos con un conjunto de datos de prueba con el fin de evaluar los modelos generados por AutoML está en versión preliminar. Esta funcionalidad es una característica experimental en versión preliminar y puede cambiar en cualquier momento.

    Al pasar los parámetros test_data o test_size a AutoMLConfig, se desencadena automáticamente una serie de pruebas remotas que usan los datos de prueba proporcionados para evaluar el mejor modelo que el aprendizaje automático automatizado recomienda tras la finalización del experimento. Esta serie de pruebas remotas se realiza al final del experimento, una vez que se determina el mejor modelo. Consulte cómo pasar datos de prueba a AutoMLConfig.

    Obtención de los resultados del trabajo de prueba

    Puede obtener las predicciones y métricas del trabajo de pruebas remotas desde Estudio de Azure Machine Learning o con el código siguiente.

    best_run, fitted_model = remote_run.get_output()
    test_run = next(best_run.get_children(type='automl.model_test'))
    test_run.wait_for_completion(show_output=False, wait_post_processing=True)
    
    # Get test metrics
    test_run_metrics = test_run.get_metrics()
    for name, value in test_run_metrics.items():
        print(f"{name}: {value}")
    
    # Get test predictions as a Dataset
    test_run_details = test_run.get_details()
    dataset_id = test_run_details['outputDatasets'][0]['identifier']['savedId']
    test_run_predictions = Dataset.get_by_id(workspace, dataset_id)
    predictions_df = test_run_predictions.to_pandas_dataframe()
    
    # Alternatively, the test predictions can be retrieved via the run outputs.
    test_run.download_file("predictions/predictions.csv")
    predictions_df = pd.read_csv("predictions.csv")
    
    

    El trabajo de pruebas del modelo genera el archivo predictions.csv, que se almacena en el almacén de datos predeterminado creado con el área de trabajo. Este almacén de datos pueden verlo todos los usuarios con la misma suscripción. Los trabajos de pruebas no se recomiendan para ningún escenario si cualquier parte de la información usada para el trabajo de pruebas, o creada por esta, debe permanecer privada.

    Prueba del modelo de ML automatizado existente

    Para probar otros modelos de ML automatizado existentes creados, el mejor trabajo o el trabajo secundario, use ModelProxy() para probar un modelo una vez completada la ejecución principal de AutoML. ModelProxy() ya devuelve las predicciones y las métricas y no requiere procesamiento adicional para recuperar las salidas.

    Nota

    ModelProxy es una clase en versión preliminar experimental y puede cambiar en cualquier momento.

    En el código siguiente se muestra cómo probar un modelo de cualquier ejecución mediante el método ModelProxy.test(). En el método test() tiene la opción de especificar si solo desea ver las predicciones de la serie de pruebas con el parámetro include_predictions_only.

    from azureml.train.automl.model_proxy import ModelProxy
    
    model_proxy = ModelProxy(child_run=my_run, compute_target=cpu_cluster)
    predictions, metrics = model_proxy.test(test_data, include_predictions_only= True
    )
    

    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.

    Para registrar un modelo a partir de una ejecución de aprendizaje automático automatizado, use el método register_model().

    
    best_run = run.get_best_child()
    print(fitted_model.steps)
    
    model_name = best_run.properties['model_name']
    description = 'AutoML forecast example'
    tags = None
    
    model = run.register_model(model_name = model_name, 
                                      description = description, 
                                      tags = tags)
    

    Para más información sobre cómo crear una configuración de implementación e implementar un modelo registrado en un servicio web, consulte cómo y dónde implementar un modelo.

    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.

    Interoperabilidad del modelo

    La interpretabilidad del modelo permite comprender por qué los modelos hacen predicciones y los valores de importancia de las características subyacentes. El SDK incluye varios paquetes para habilitar las características de interpretabilidad del modelo, tanto en el momento del entrenamiento como en el de inferencia, para los modelos implementados y locales.

    Consulte cómo habilitar las características de interpretabilidad específicamente dentro de experimentos de ML automatizado.

    Para información general sobre cómo se pueden habilitar las explicaciones del modelo y la importancia de las características en otras áreas del SDK fuera del aprendizaje automático automatizado, consulte el artículo de conceptos sobre la interpretabilidad.

    Nota

    El modelo ForecastTCN no es compatible en la actualidad con el cliente de explicación. Este modelo no devolverá un panel de explicación si se devuelve como el mejor modelo, y no admite ejecuciones de explicación a petición.

    Pasos siguientes