Configuración del entrenamiento de AutoML con Python
SE APLICA A: SDK de Python azureml 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
Un área de trabajo de Azure Machine Learning. Para crear el área de trabajo, consulte Creación de recursos del área de trabajo.
El SDK de Azure Machine Learning para Python instalado. Para instalar el SDK, puede:
Crear una instancia de proceso, que instala automáticamente el SDK y está preconfigurada para flujos de trabajo de aprendizaje automático. Consulte Creación y administración de una instancia de proceso de Azure Machine Learning para obtener más información.
Instale el paquete
automl
, que incluye la instalación predeterminada del SDK.
Importante
Los comandos de Python de este artículo requieren la versión más reciente del paquete
azureml-train-automl
.- Instale el paquete
azureml-train-automl
más reciente en el entorno local. - Para obtener información sobre la última versión del paquete
azureml-train-automl
, consulta las notas de la versión.
Advertencia
Python 3 8 no es compatible con
automl
.
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:
- Pasar los datos de prueba al objeto AutoMLConfig.
- Probar los modelos que el aprendizaje automático automatizado ha generado para el experimento.
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.
Para la regresión, Regresor descendente de gradiente en línea y Regresor lineal rápido
Para la clasificación, Clasificador de perceptrón promedio y Clasificador SVM lineal, donde el clasificador SVM lineal tiene versiones de datos grandes y pequeños.
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 | ||
Clústeres de proceso de ML remotos |
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.
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 errorAutoMLEnsembleException: 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 sonLogisticRegression
para las tareas de clasificación (oLogisticRegressionCV
si está habilitada la validación cruzada) yElasticNet
para las tareas de regresión y predicción (oElasticNetCV
si está habilitada la validación cruzada). Este parámetro puede ser una de las cadenas siguientes:LogisticRegression
,LogisticRegressionCV
,LightGBMClassifier
,ElasticNet
,ElasticNetCV
,LightGBMRegressor
oLinearRegression
.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 es0.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 resultados del entrenamiento en un widget o en línea si se encuentra en un bloc de notas. Consulte Supervisión de ejecuciones de aprendizaje automático automatizado para obtener más detalles.
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.
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()
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.
Advertencia
Esta característica no está disponible para los siguientes escenarios de aprendizaje automático automatizado
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
Obtenga más información sobre cómo y dónde implementar un modelo.
Obtenga más información sobre cómo entrenar un modelo de regresión con el aprendizaje automático automatizado.
Solución de problemas de experimentos de aprendizaje automático automatizado.