Configuración de AutoML para entrenar modelos de Computer Vision
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 entrenar modelos de Computer Vision en datos de imagen con ML automatizado. Puede entrenar modelos mediante la extensión de la CLI de Azure Machine Learning v2 o el SDK de Python de Azure Machine Learning v2.
ML automatizado admite el entrenamiento de modelos para tareas de Computer Vision, como la clasificación de imágenes, la detección de objetos y la segmentación de instancias. La creación de modelos de AutoML para tareas de Computer Vision se admite actualmente a través del SDK de Python de Azure Machine Learning. Se puede acceder a las pruebas, modelos y salidas de experimentación resultantes desde la interfaz de usuario de Estudio de Azure Machine Learning. Obtenga más información sobre ML automatizado para tareas de Computer Vision en datos de imagen.
Requisitos previos
SE APLICA A: Extensión de ML de la CLI de Azure v2 (actual)
- Un área de trabajo de Azure Machine Learning. Para crear el área de trabajo, consulte Creación de recursos del área de trabajo.
- Instale y configure la CLI (v2) y asegúrese de instalar la extensión
ml
.
Selección de su tipo de tarea
ML automatizado para imágenes admite los siguientes tipos de tareas:
Tipo de tarea | Sintaxis de trabajo de AutoML |
---|---|
clasificación de imágenes | CLI v2: image_classification SDK v2: image_classification() |
clasificación de imágenes con varias etiquetas | CLI v2: image_classification_multilabel SDK v2: image_classification_multilabel() |
detección de objetos de imagen | CLI v2: image_object_detection SDK v2: image_object_detection() |
segmentación de instancias de imagen | CLI v2: image_instance_segmentation SDK v2: image_instance_segmentation() |
SE APLICA A: Extensión de ML de la CLI de Azure v2 (actual)
Este tipo de tarea es un parámetro obligatorio y se puede establecer mediante la clave task
.
Por ejemplo:
task: image_object_detection
Datos de entrenamiento y validación
Para generar modelos para Computer Vision, debe traer datos de imagen etiquetados como entrada para el entrenamiento del modelo en forma de MLTable
. Puede crear un objeto MLTable
a partir de datos de entrenamiento en formato JSONL.
Si los datos de entrenamiento están en un formato diferente (por ejemplo, Pascal VOC o COCO), puede aplicar los scripts auxiliares incluidos con los cuadernos de ejemplo para convertir los datos a JSONL. Obtenga más información sobre la preparación de datos para tareas de Computer Vision con ML automatizado.
Nota:
Los datos de entrenamiento deben tener al menos 10 imágenes para poder enviar un trabajo de ML automatizado.
Advertencia
La creación de MLTable
a partir de datos en formato JSONL solo se admite mediante el SDK y la CLI para esta funcionalidad. En este momento no se admite la creación de MLTable
a través de la interfaz de usuario.
Ejemplos de esquemas JSONL
La estructura del TabularDataset depende de la tarea que se vaya a realizar. Para los tipos de tareas de Computer Vision, consta de los siguientes campos:
Campo | Descripción |
---|---|
image_url |
Contiene filepath como un objeto StreamInfo. |
image_details |
La información de metadatos de imagen consta de alto, ancho y formato. Este campo es opcional y, por tanto, puede existir o no. |
label |
Representación json de la etiqueta de imagen, basada en el tipo de tarea. |
El siguiente código es un archivo JSONL de ejemplo para la clasificación de imágenes:
{
"image_url": "azureml://subscriptions/<my-subscription-id>/resourcegroups/<my-resource-group>/workspaces/<my-workspace>/datastores/<my-datastore>/paths/image_data/Image_01.png",
"image_details":
{
"format": "png",
"width": "2230px",
"height": "4356px"
},
"label": "cat"
}
{
"image_url": "azureml://subscriptions/<my-subscription-id>/resourcegroups/<my-resource-group>/workspaces/<my-workspace>/datastores/<my-datastore>/paths/image_data/Image_02.jpeg",
"image_details":
{
"format": "jpeg",
"width": "3456px",
"height": "3467px"
},
"label": "dog"
}
El código siguiente es un archivo JSONL de ejemplo para la detección de objetos:
{
"image_url": "azureml://subscriptions/<my-subscription-id>/resourcegroups/<my-resource-group>/workspaces/<my-workspace>/datastores/<my-datastore>/paths/image_data/Image_01.png",
"image_details":
{
"format": "png",
"width": "2230px",
"height": "4356px"
},
"label":
{
"label": "cat",
"topX": "1",
"topY": "0",
"bottomX": "0",
"bottomY": "1",
"isCrowd": "true",
}
}
{
"image_url": "azureml://subscriptions/<my-subscription-id>/resourcegroups/<my-resource-group>/workspaces/<my-workspace>/datastores/<my-datastore>/paths/image_data/Image_02.png",
"image_details":
{
"format": "jpeg",
"width": "1230px",
"height": "2356px"
},
"label":
{
"label": "dog",
"topX": "0",
"topY": "1",
"bottomX": "0",
"bottomY": "1",
"isCrowd": "false",
}
}
Consumo de datos
Una vez que los datos estén en formato JSONL, puede crear un objeto MLTable
de entrenamiento y validación, como se muestra a continuación.
paths:
- file: ./train_annotations.jsonl
transformations:
- read_json_lines:
encoding: utf8
invalid_lines: error
include_path_column: false
- convert_column_types:
- columns: image_url
column_type: stream_info
ML automatizado no impone ninguna restricción en el tamaño de los datos de entrenamiento o validación para las tareas de Computer Vision. El tamaño máximo del conjunto de datos solo está limitado por la capa de almacenamiento detrás del conjunto de datos (ejemplo: el almacén de blobs). No hay ningún número mínimo de imágenes o etiquetas. Sin embargo, se recomienda empezar con un mínimo de 10 a 15 muestras por etiqueta para asegurarse de que el modelo de salida está suficientemente entrenado. Cuanto mayor sea el número total de etiquetas o clases, más ejemplos necesitará por etiqueta.
SE APLICA A: Extensión de ML de la CLI de Azure v2 (actual)
Los datos de entrenamiento son un parámetro obligatorio y se pasan mediante la clave training_data
. Opcionalmente, puede especificar otra tabla MLtable como datos de validación con la clave validation_data
. Si no se especifican datos de validación, el 20 % de los datos de entrenamiento se usa para la validación de forma predeterminada, a menos que pase el argumento validation_data_size
con un valor diferente.
El nombre de columna de destino es un parámetro necesario y se usa como destino para la tarea de ML supervisada. Se pasan mediante la clave target_column_name
. Por ejemplo,
target_column_name: label
training_data:
path: data/training-mltable-folder
type: mltable
validation_data:
path: data/validation-mltable-folder
type: mltable
Proceso para ejecutar el experimento
Proporcione un destino de proceso para que ML automatizado realice el entrenamiento del modelo. Los modelos de ML automatizado para tareas de Computer Vision requieren SKU de GPU y son compatibles con las familias NC y ND. Se recomienda la serie NCsv3 (con GPU v100) para un entrenamiento más rápido. Un destino de proceso con una SKU de máquina virtual con varias GPU usa varias GPU para acelerar también el entrenamiento. Además, al configurar un destino de proceso con varios nodos, puede realizar un entrenamiento del modelo más rápido a través del paralelismo al ajustar hiperparámetros para el modelo.
Nota
Si usa una instancia de proceso como destino de proceso, asegúrese de que varios trabajos de AutoML no se ejecuten al mismo tiempo. Además, asegúrese de que max_concurrent_trials
esté establecido en 1 en los límites de trabajo.
El destino de proceso se pasa mediante el parámetro compute
. Por ejemplo:
SE APLICA A: Extensión de ML de la CLI de Azure v2 (actual)
compute: azureml:gpu-cluster
Configuración de experimentos
En el caso de las tareas de Computer Vision, puede iniciar pruebas individuales, barridos manuales o barridos automáticos. Se recomienda comenzar con un barrido automático para obtener un primer modelo de línea base. A continuación, puede probar las pruebas individuales con determinados modelos y configuraciones de hiperparámetros. Por último, con los barridos manuales, puede explorar varios valores de hiperparámetros cerca de los modelos y las configuraciones de hiperparámetros más prometedores. Este flujo de trabajo de tres pasos (barrido automático, pruebas individuales, barridos manuales) evita buscar la totalidad del espacio de hiperparámetros, que crece exponencialmente con el número de hiperparámetros.
Los barridos automáticos pueden producir resultados competitivos para muchos conjuntos de datos. Además, no requieren conocimientos avanzados de las arquitecturas de modelos, tienen en cuenta las correlaciones de los hiperparámetros y funcionan sin problemas en diferentes configuraciones de hardware. Todas estas razones hacen que sean una opción sólida para la fase temprana del proceso de experimentación.
Métrica principal
Un trabajo de entrenamiento de AutoML usa una métrica principal para la optimización del modelo y el ajuste de los hiperparámetros. La métrica principal depende del tipo de tarea, como se muestra a continuación; actualmente, no se admiten otros valores para la métrica principal.
- Precisión para la clasificación de imágenes
- Intersección sobre unión para el multietiquetado de clasificación de imágenes
- Precisión media promedio para la detección de objetos de imagen
- Precisión media promedio para la segmentación de instancias de imagen
Límites del trabajo
Puede controlar los recursos invertidos en el trabajo de entrenamiento de imágenes de AutoML especificando timeout_minutes
, max_trials
y max_concurrent_trials
para el trabajo en la configuración del límite, tal como se describe en el ejemplo siguiente.
Parámetro | Detalle |
---|---|
max_trials |
Parámetro para el número máximo de pruebas que se deben barrer. Debe ser un entero entre 1 y 1000. Al explorar solo los hiperparámetros predeterminados para una arquitectura de modelos determinada, establezca este parámetro en 1. El valor predeterminado es 1. |
max_concurrent_trials |
Número máximo de pruebas que se pueden ejecutar simultáneamente. Si se especifica, el tiempo de espera debe ser un entero comprendido entre 1 y 100. El valor predeterminado es 1. NOTA: max_concurrent_trials está limitado internamente a max_trials . Por ejemplo, si el usuario establece max_concurrent_trials=4 y max_trials=2 , los valores se actualizarían internamente como max_concurrent_trials=2 y max_trials=2 . |
timeout_minutes |
Cantidad de tiempo en minutos antes de que se finalice el experimento. Si no se especifica ninguno, el valor de timeout_minutes predeterminado del experimento es de siete días (máximo de 60 días). |
SE APLICA A: Extensión de ML de la CLI de Azure v2 (actual)
limits:
timeout_minutes: 60
max_trials: 10
max_concurrent_trials: 2
Barrido automático de los hiperparámetros del modelo (modo automático)
Importante
Esta característica actualmente está en su versión preliminar pública. Esta versión preliminar se proporciona sin un 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.
Es difícil predecir la mejor arquitectura del modelo y los hiperparámetros para un conjunto de datos. Además, en algunos casos, el tiempo humano asignado a la optimización de hiperparámetros puede ser limitado. En el caso de las tareas de Computer Vision, puede especificar cualquier número de pruebas y el sistema determinará automáticamente la región del espacio de hiperparámetros que se va a barrer. No es necesario definir un espacio de búsqueda de hiperparámetros, un método de muestreo ni una directiva de terminación anticipada.
Desencadenamiento del modo automático
Puede ejecutar barridos automáticos estableciendo max_trials
en un valor mayor que 1 en limits
y no especificando el espacio de búsqueda, el método de muestreo ni la directiva de terminación. Llamamos a esta funcionalidad modo automático; consulte un ejemplo a continuación.
SE APLICA A: Extensión de ML de la CLI de Azure v2 (actual)
limits:
max_trials: 10
max_concurrent_trials: 2
Es probable que un número de pruebas entre 10 y 20 funcionen bien en muchos conjuntos de datos. Se puede establecer el presupuesto de tiempo para el trabajo de AutoML, pero se recomienda hacerlo solo si cada prueba puede tardar mucho tiempo.
Advertencia
En este momento, no se admite el inicio de barridos automáticos mediante la interfaz de usuario.
Pruebas individuales
En las pruebas individuales, el usuario controla directamente la arquitectura de modelos y los hiperparámetros. La arquitectura de modelos se pasa mediante el parámetro model_name
.
Arquitecturas de modelo admitidas
En la tabla siguiente se resumen los modelos heredados admitidos para cada tarea de Computer Vision. El uso de solo estos modelos heredados desencadenará ejecuciones mediante el entorno de ejecución heredado (donde cada ejecución individual o prueba se envía como un trabajo de comando). Consulte a continuación la compatibilidad con HuggingFace y MMDetection.
Tarea | arquitecturas de modelos | Sintaxis de literal de cadenadefault_model * indicado con * |
---|---|---|
Clasificación de imágenes (varias clases y varias etiquetas) |
MobileNet: modelos ligeros para aplicaciones móviles ResNet: redes residuales ResNeSt: redes de atención dividida SE-ResNeXt50: redes de compresión y excitación ViT: redes de transformadores de visión |
mobilenetv2 resnet18 resnet34 resnet50 resnet101 resnet152 resnest50 resnest101 seresnext vits16r224 (pequeña) vitb16r224 * (base) vitl16r224 (grande) |
Detección de objetos | YOLOv5: modelo de detección de objetos de una fase Faster RCNN ResNet FPN: modelos de detección de objetos de dos fases RetinaNet ResNet FPN: desequilibrio de la clase de dirección con pérdida focal Nota: Consulte el hiperparámetro model_size para ver los tamaños de modelo YOLOv5. |
yolov5 * fasterrcnn_resnet18_fpn fasterrcnn_resnet34_fpn fasterrcnn_resnet50_fpn fasterrcnn_resnet101_fpn fasterrcnn_resnet152_fpn retinanet_resnet50_fpn |
Segmentación de instancias | MaskRCNN ResNet FPN | maskrcnn_resnet18_fpn maskrcnn_resnet34_fpn maskrcnn_resnet50_fpn * maskrcnn_resnet101_fpn maskrcnn_resnet152_fpn |
Arquitecturas de modelos compatibles: HuggingFace y MMDetection (versión preliminar)
Con el nuevo back-end que se ejecuta en canalizaciones de Azure Machine Learning, también puede usar cualquier modelo de clasificación de imágenes del Centro de HuggingFace que forme parte de la biblioteca de transformadores (como microsoft/beit-base-patch16-224), así como cualquier modelo de segmentación instancias o de detección de objetos de MMDetection Versión 3.1.0 Model Zoo (por ejemplo, atss_r50_fpn_1x_coco
).
Además de admitir cualquier modelo de transformadores de HuggingFace y MMDetection 3.1.0, también ofrecemos una lista de modelos mantenidos de estas bibliotecas en el registro azureml. Estos modelos mantenidos se han probado exhaustivamente y usan hiperparámetros predeterminados seleccionados a partir de una amplia prueba comparativa para garantizar un entrenamiento eficaz. En la tabla siguiente se resumen estos modelos mantenidos.
Tarea | arquitecturas de modelos | Sintaxis de literal de cadena |
---|---|---|
Clasificación de imágenes (varias clases y varias etiquetas) |
BEiT ViT DeiT SwinV2 |
microsoft/beit-base-patch16-224-pt22k-ft22k google/vit-base-patch16-224 facebook/deit-base-patch16-224 microsoft/swinv2-base-patch4-window12-192-22k |
Detección de objetos | Sparse R-CNN Deformable DETR VFNet YOLOF Swin |
mmd-3x-sparse-rcnn_r50_fpn_300-proposals_crop-ms-480-800-3x_coco mmd-3x-sparse-rcnn_r101_fpn_300-proposals_crop-ms-480-800-3x_coco mmd-3x-deformable-detr_refine_twostage_r50_16xb2-50e_coco mmd-3x-vfnet_r50-mdconv-c3-c5_fpn_ms-2x_coco mmd-3x-vfnet_x101-64x4d-mdconv-c3-c5_fpn_ms-2x_coco mmd-3x-yolof_r50_c5_8x8_1x_coco |
Segmentación de instancias | Swin | mmd-3x-mask-rcnn_swin-t-p4-w7_fpn_1x_coco |
Actualizamos constantemente la lista de modelos mantenidos. Puede obtener la lista más actualizada de los modelos mantenidos para una tarea determinada mediante el SDK de Python:
credential = DefaultAzureCredential()
ml_client = MLClient(credential, registry_name="azureml")
models = ml_client.models.list()
classification_models = []
for model in models:
model = ml_client.models.get(model.name, label="latest")
if model.tags['task'] == 'image-classification': # choose an image task
classification_models.append(model.name)
classification_models
Salida:
['google-vit-base-patch16-224',
'microsoft-swinv2-base-patch4-window12-192-22k',
'facebook-deit-base-patch16-224',
'microsoft-beit-base-patch16-224-pt22k-ft22k']
El uso de cualquier modelo HuggingFace o MMDetection desencadenará ejecuciones mediante componentes de canalización. Si se usan modelos heredados y HuggingFace/MMdetection, todas las ejecuciones o pruebas se desencadenarán mediante componentes.
Además de controlar la arquitectura de modelos, también puede ajustar los hiperparámetros usados para el entrenamiento del modelo. Aunque muchos de los hiperparámetros expuestos son independientes del modelo, hay instancias en las que los hiperparámetros son específicos de la tarea o el modelo. Obtenga más información sobre los hiperparámetros disponibles para estas instancias.
SE APLICA A: Extensión de ML de la CLI de Azure v2 (actual)
Si desea usar los valores de hiperparámetros predeterminados para una arquitectura determinada (por ejemplo, yolov5), puede especificarlos mediante la clave model_name en la sección training_parameters. Por ejemplo,
training_parameters:
model_name: yolov5
Barrido manual de los hiperparámetros del modelo
Al entrenar modelos de Computer Vision, el rendimiento del modelo depende en gran medida de los valores de hiperparámetro seleccionados. A menudo, es posible que desee optimizar los hiperparámetros para obtener un rendimiento óptimo. En el caso de las tareas de Computer Vision, puede barrer los hiperparámetros para encontrar la configuración óptima para el modelo. Esta característica aplica las funcionalidades de ajuste de hiperparámetros en Azure Machine Learning. Aprenda a ajustar los hiperparámetros.
SE APLICA A: Extensión de ML de la CLI de Azure v2 (actual)
search_space:
- model_name:
type: choice
values: [yolov5]
learning_rate:
type: uniform
min_value: 0.0001
max_value: 0.01
model_size:
type: choice
values: [small, medium]
- model_name:
type: choice
values: [fasterrcnn_resnet50_fpn]
learning_rate:
type: uniform
min_value: 0.0001
max_value: 0.001
optimizer:
type: choice
values: [sgd, adam, adamw]
min_size:
type: choice
values: [600, 800]
Definir el espacio de búsqueda de parámetros
Puede definir las arquitecturas de modelos y los hiperparámetros para barrido en el espacio de parámetros. Puede especificar una única arquitectura de modelos o varias.
- Consulte Pruebas individuales para ver la lista de arquitecturas de modelos admitidas para cada tipo de tarea.
- Consulte Hiperparámetros para tareas de Computer Vision para cada tipo de tarea de Computer Vision.
- Consulte los detalles sobre las distribuciones admitidas para hiperparámetros discretos y continuos.
Métodos de muestreo para el barrido
Al realizar el barrido de hiperparámetros, debe especificar el método de muestreo que se usará para el barrido en el espacio de parámetros definido. Actualmente, se admiten los siguientes métodos de muestreo con el parámetro sampling_algorithm
:
Tipo de muestreo | Sintaxis de trabajo de AutoML |
---|---|
Muestreo aleatorio | random |
Muestreo de cuadrícula | grid |
Muestreo bayesiano | bayesian |
Nota:
Actualmente solo el muestreo aleatorio y de cuadrícula admiten espacios condicionales de hiperparámetros.
Directivas de terminación anticipada
Puede terminar de forma automática las pruebas con un bajo rendimiento con la ayuda de una directiva de terminación anticipada. La terminación anticipada mejora la eficacia computacional, lo que ahorra recursos de proceso que, de lo contrario, se habrían invertido en pruebas menos prometedoras. ML automatizado para imágenes admite las siguientes directivas de terminación anticipada mediante el parámetro early_termination
. Si no se especifica ninguna directiva de terminación, todas las pruebas se ejecutan hasta su finalización.
Directiva de terminación anticipada | Sintaxis de trabajo de AutoML |
---|---|
Directiva de bandidos | CLI v2: bandit SDK v2: BanditPolicy() |
Directiva de mediana de detención | CLI v2: median_stopping SDK v2: MedianStoppingPolicy() |
Directiva de selección de truncamiento | CLI v2: truncation_selection SDK v2: TruncationSelectionPolicy() |
Obtenga más información sobre cómo configurar la directiva de terminación anticipada para el barrido de hiperparámetros.
Nota
Para obtener un ejemplo completo de configuración de barrido, consulte este tutorial.
Puede configurar todos los parámetros relacionados con el barrido, como se muestra en el ejemplo siguiente.
SE APLICA A: Extensión de ML de la CLI de Azure v2 (actual)
sweep:
sampling_algorithm: random
early_termination:
type: bandit
evaluation_interval: 2
slack_factor: 0.2
delay_evaluation: 6
Configuración fija
Puede pasar valores o parámetros fijos que no cambian durante el barrido del espacio de parámetros como se muestra en el siguiente ejemplo.
SE APLICA A: Extensión de ML de la CLI de Azure v2 (actual)
training_parameters:
early_stopping: True
evaluation_frequency: 1
Aumento de datos
En general, el rendimiento del modelo de aprendizaje profundo a menudo puede mejorar con más datos. El aumento de datos es una técnica práctica para ampliar el tamaño y la variabilidad de los datos de un conjunto de datos que ayuda a evitar el sobreajuste y a mejorar la capacidad de generalización del modelo en datos no vistos. ML automatizado aplica diferentes técnicas de aumento de datos en función de la tarea de Computer Vision, antes de proporcionar las imágenes de entrada al modelo. Actualmente, no existe ningún hiperparámetro expuesto para controlar los aumentos de datos.
Tarea | Conjunto de datos afectado | Técnicas de aumento de datos aplicadas |
---|---|---|
Clasificación de imágenes (varias clases y varias etiquetas) | Formación
Validación y prueba |
Cambio de tamaño y recorte aleatorios, volteo horizontal, vibración de color (brillo, contraste, saturación y matiz), normalización mediante la media y la desviación estándar de ImageNet por canal Cambio de tamaño, recorte central, normalización |
Detección de objetos, segmentación de instancias | Formación
Validación y prueba |
Recorte aleatorio alrededor de rectángulos delimitadores, expansión, volteo horizontal, normalización, cambio de tamaño Normalización, cambio de tamaño |
Detección de objetos mediante yolov5 | Formación
Validación y prueba |
Mosaico, afín aleatorio (rotación, traslación, escala, distorsión), volteo horizontal Cambio de tamaño de formato letterbox |
Actualmente, los aumentos definidos anteriormente se aplican de forma predeterminada para un ML automatizado para el trabajo de imagen. Para proporcionar control sobre las aumentos, ML automatizado para imágenes expone a continuación dos marcas para desactivar determinados aumentos. Actualmente, estas marcas solo se admiten para las tareas de segmentación de instancias y detección de objetos.
- apply_mosaic_for_yolo: esta marca solo es específica del modelo Yolo. Si se establece en False, se desactiva el aumento de datos de mosaico que se aplica en el tiempo de entrenamiento.
- apply_automl_train_augmentations: si esta marca se establece en False, se desactiva el aumento aplicado durante el tiempo de entrenamiento para los modelos de segmentación de instancias y detección de objetos. Para obtener aumentos, consulte los detalles en la tabla anterior.
- En el caso de los modelos de segmentación de instancias y el modelo de detección de objetos que no son Yolo, esta marca solamente desactiva los tres primeros aumentos. Por ejemplo: Recorte aleatorio alrededor de rectángulos delimitadores, expansión, volteo horizontal. Los aumentos de normalización y cambio de tamaño se siguen aplicando independientemente de esta marca.
- Para el modelo Yolo, esta marca desactiva los aumentos de afinidad aleatoria y volteo horizontal.
Estas dos marcas se admiten a través de advanced_settings en training_parameters y se pueden controlar de la siguiente manera.
SE APLICA A: Extensión de ML de la CLI de Azure v2 (actual)
training_parameters:
advanced_settings: >
{"apply_mosaic_for_yolo": false}
training_parameters:
advanced_settings: >
{"apply_automl_train_augmentations": false}
Tenga en cuenta que estas dos marcas son independientes entre sí y también se pueden usar en combinación con la siguiente configuración.
training_parameters:
advanced_settings: >
{"apply_automl_train_augmentations": false, "apply_mosaic_for_yolo": false}
En nuestros experimentos, encontramos que estos aumentos ayudan al modelo a generalizar mejor. Por lo tanto, cuando estos aumentos se desactivan, se recomienda a los usuarios combinarlos con otros aumentos sin conexión para obtener mejores resultados.
Entrenamiento incremental (opcional)
Una vez realizado el trabajo de entrenamiento, puede optar por seguir entrenando el modelo si carga el punto de control del modelo entrenado. Puede usar el mismo conjunto de datos u otro diferente para el entrenamiento incremental. Si está satisfecho con el modelo, puede optar por detener el entrenamiento y usar el modelo actual.
Pasar el punto de control a través del identificador de trabajo
Puede pasar el id. del trabajo desde el que quiere cargar el punto de control.
SE APLICA A: Extensión de ML de la CLI de Azure v2 (actual)
training_parameters:
checkpoint_run_id : "target_checkpoint_run_id"
Envío del trabajo de AutoML
SE APLICA A: Extensión de ML de la CLI de Azure v2 (actual)
Para enviar el trabajo de AutoML, ejecute el siguiente comando de la CLI v2 con la ruta de acceso al archivo .yml, el nombre del área de trabajo, el grupo de recursos y el id. de suscripción.
az ml job create --file ./hello-automl-job-basic.yml --workspace-name [YOUR_AZURE_WORKSPACE] --resource-group [YOUR_AZURE_RESOURCE_GROUP] --subscription [YOUR_AZURE_SUBSCRIPTION]
Salidas y métricas de evaluación
Los trabajos de entrenamiento de ML automatizado generan archivos de modelo de salida, métricas de evaluación, registros y artefactos de implementación, como el archivo de puntuación y el archivo de entorno. Estos archivos y métricas se pueden ver en la pestaña salidas y registros y métricas de los trabajos secundarios.
Sugerencia
Compruebe cómo navegar a los resultados del trabajo en la sección Visualización de los resultados de los trabajos.
Para obtener definiciones y ejemplos de las métricas y los gráficos de rendimiento que se proporcionan en cada trabajo, consulte Evaluación de los resultados del experimento de aprendizaje automático automatizado.
Registrar e implementar el modelo
Una vez que se ha completado el trabajo, puede registrar el modelo que se creó a partir de la mejor evaluación (la configuración que dio lugar a la mejor métrica principal). Puede registrar el modelo después de descargarlo o bien al especificar la ruta de acceso "azureml" con el jobid correspondiente. Nota: cuando desee cambiar la configuración de inferencia que se describe a continuación, deberá descargar el modelo y cambiar settings.json, así como registrarse con la carpeta del modelo actualizada.
Obtención de la mejor prueba
SE APLICA A: Extensión de ML de la CLI de Azure v2 (actual)
CLI example not available, please use Python SDK.
Registre el modelo
Registre el modelo mediante la ruta de acceso "azureml" o bien mediante la que se ha descargado localmente.
SE APLICA A: Extensión de ML de la CLI de Azure v2 (actual)
az ml model create --name od-fridge-items-mlflow-model --version 1 --path azureml://jobs/$best_run/outputs/artifacts/outputs/mlflow-model/ --type mlflow_model --workspace-name [YOUR_AZURE_WORKSPACE] --resource-group [YOUR_AZURE_RESOURCE_GROUP] --subscription [YOUR_AZURE_SUBSCRIPTION]
Después de registrar el modelo que quiere usar, puede implementarlo mediante el punto de conexión en línea administrado deploy-managed-online-endpoint
Configuración del punto de conexión en línea
SE APLICA A: Extensión de ML de la CLI de Azure v2 (actual)
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineEndpoint.schema.json
name: od-fridge-items-endpoint
auth_mode: key
Creación del punto de conexión
Con el elemento MLClient
creado anteriormente, creamos el punto de conexión en el área de trabajo. Este comando inicia la creación del punto de conexión y devuelve una respuesta de confirmación mientras continúa la creación del punto de conexión.
SE APLICA A: Extensión de ML de la CLI de Azure v2 (actual)
az ml online-endpoint create --file .\create_endpoint.yml --workspace-name [YOUR_AZURE_WORKSPACE] --resource-group [YOUR_AZURE_RESOURCE_GROUP] --subscription [YOUR_AZURE_SUBSCRIPTION]
Configuración de la implementación en línea
Una implementación es un conjunto de recursos necesarios para hospedar el modelo que realiza la inferencia real. Crearemos una implementación para nuestro punto de conexión mediante la clase ManagedOnlineDeployment
. Puede usar las SKU de máquina virtual de CPU o GPU para el clúster de implementación.
SE APLICA A: Extensión de ML de la CLI de Azure v2 (actual)
name: od-fridge-items-mlflow-deploy
endpoint_name: od-fridge-items-endpoint
model: azureml:od-fridge-items-mlflow-model@latest
instance_type: Standard_DS3_v2
instance_count: 1
liveness_probe:
failure_threshold: 30
success_threshold: 1
timeout: 2
period: 10
initial_delay: 2000
readiness_probe:
failure_threshold: 10
success_threshold: 1
timeout: 10
period: 10
initial_delay: 2000
Creación de la implementación
Con el elemento MLClient
creado anteriormente, ahora crearemos la implementación en el área de trabajo. Este comando iniciará la creación de la implementación y devolverá una respuesta de confirmación mientras continúa la creación de la implementación.
SE APLICA A: Extensión de ML de la CLI de Azure v2 (actual)
az ml online-deployment create --file .\create_deployment.yml --workspace-name [YOUR_AZURE_WORKSPACE] --resource-group [YOUR_AZURE_RESOURCE_GROUP] --subscription [YOUR_AZURE_SUBSCRIPTION]
Actualización del tráfico:
La implementación actual está establecida para recibir un 0 % de tráfico de manera predeterminada. Puede establecer el porcentaje de tráfico que debe recibir la implementación actual. La suma de porcentajes de tráfico de todas las implementaciones con un punto de conexión no debe superar el 100 %.
SE APLICA A: Extensión de ML de la CLI de Azure v2 (actual)
az ml online-endpoint update --name 'od-fridge-items-endpoint' --traffic 'od-fridge-items-mlflow-deploy=100' --workspace-name [YOUR_AZURE_WORKSPACE] --resource-group [YOUR_AZURE_RESOURCE_GROUP] --subscription [YOUR_AZURE_SUBSCRIPTION]
Como alternativa, también puede implementar el modelo desde la interfaz de usuario de Estudio de Azure Machine Learning. Vaya al modelo que quiere implementar en la pestaña Modelos del trabajo de ML automatizado y seleccione Implementar e Implementar en el punto de conexión en tiempo real .
.
Este es el aspecto de la página de revisión. Se puede seleccionar el tipo de instancia, el recuento de instancias y establecer el porcentaje de tráfico para la implementación actual.
. .
Actualización de la configuración de inferencia
En el paso anterior, se ha descargado un archivo mlflow-model/artifacts/settings.json
del mejor modelo. que se puede usar para actualizar la configuración de inferencia antes de registrar el modelo. Aunque se recomienda usar los mismos parámetros que el entrenamiento para obtener el mejor rendimiento.
Cada una de las tareas (y algunos modelos) tiene un conjunto de parámetros. De forma predeterminada, usamos los mismos valores para los parámetros que se usaron durante el entrenamiento y la validación. Dependiendo del comportamiento que necesitemos al usar el modelo para la inferencia, podemos cambiar estos parámetros. A continuación puede encontrar una lista de parámetros para cada tipo de tarea y modelo.
Tarea | Nombre de parámetro | Valor predeterminado |
---|---|---|
Clasificación de imágenes (varias clases y varias etiquetas) | valid_resize_size valid_crop_size |
256 224 |
Detección de objetos | min_size max_size box_score_thresh nms_iou_thresh box_detections_per_img |
600 1333 0,3 0.5 100 |
Detección de objetos con yolov5 |
img_size model_size box_score_thresh nms_iou_thresh |
640 medio 0,1 0.5 |
Segmentación de instancias | min_size max_size box_score_thresh nms_iou_thresh box_detections_per_img mask_pixel_score_threshold max_number_of_polygon_points export_as_image image_type |
600 1333 0,3 0.5 100 0.5 100 Falso JPG |
Para obtener una descripción detallada sobre los hiperparámetros específicos de la tarea, consulte Hiperparámetros para tareas de Computer Vision en aprendizaje automático automatizado.
Si desea usar la colocación en mosaico y desea controlar su comportamiento, están disponibles los parámetros tile_grid_size
, tile_overlap_ratio
y tile_predictions_nms_thresh
. Para más información sobre estos parámetros, consulte Entrenamiento de un modelo de detección de objetos pequeños mediante AutoML.
Prueba de la implementación
Consulte esta sección Prueba de la implementación para probar la implementación y visualizar las detecciones del modelo.
Generación de explicaciones para las predicciones
Importante
Esta configuración se encuentra actualmente en versión preliminar pública. Se proporciona sin un 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.
Advertencia
La explicación del modelo solo se admite para la clasificación de varias clases y la clasificación de varias etiquetas.
Algunas de las ventajas de usar inteligencia artificial explicable (XAI) con AutoML para imágenes son:
- Mejora la transparencia en las predicciones de los modelos de visión complejos.
- Ayuda a los usuarios a comprender las características o píxeles importantes de la imagen de entrada que contribuyen a las predicciones del modelo.
- Ayuda en la solución de problemas de los modelos.
- Ayuda a detectar el sesgo.
Explicaciones
Las explicaciones son las ponderaciones o atribuciones de características dadas a cada píxel de la imagen de entrada en función de su contribución a la predicción del modelo. Cada ponderación puede ser negativa (correlacionada negativamente con la predicción) o positiva (correlacionada positivamente con la predicción). Estas atribuciones se calculan con respecto a la clase predicha. Para la clasificación de varias clases, se genera exactamente una matriz de atribución de tamaño [3, valid_crop_size, valid_crop_size]
por cada muestra, mientras que para la clasificación de varias etiquetas, se genera una matriz de atribución de tamaño [3, valid_crop_size, valid_crop_size]
para cada etiqueta o clase predicha para cada muestra.
Mediante el uso de la IA explicable en AutoML para imágenes en el punto de conexión implementado, los usuarios pueden obtener visualizaciones de las explicaciones (atribuciones superpuestas en una imagen de entrada) o atribuciones ( matriz multidimensional de tamaño [3, valid_crop_size, valid_crop_size]
) para cada imagen. Además de las visualizaciones, los usuarios también pueden obtener matrices de atribuciones para obtener más control sobre las explicaciones (como generar visualizaciones personalizadas mediante las atribuciones o el escrutinio de los segmentos de atribuciones). Todos los algoritmos de explicación usan imágenes cuadradas recortadas de tamaño valid_crop_size
para generar atribuciones.
Las explicaciones se pueden generar desde el punto de conexión en línea o el punto de conexión por lotes. Una vez finalizada la implementación, este punto de conexión se puede usar para generar las explicaciones de las predicciones. En las implementaciones en línea, asegúrese de pasar el parámetro request_settings = OnlineRequestSettings(request_timeout_ms=90000)
a ManagedOnlineDeployment
y establecer request_timeout_ms
en su valor máximo para evitar problemas de tiempo de espera al generar las explicaciones (consulte la sección Registro e implementación del modelo). Algunos de los métodos de explicación (XAI), como xrai
, consumen más tiempo (especialmente para la clasificación de varias etiquetas, ya que es necesario generar atribuciones o visualizaciones para cada etiqueta predicha). Por lo tanto, se recomienda el uso de cualquier instancia de GPU para obtener explicaciones más rápidas. Para obtener más información sobre el esquema de entrada y salida para generar explicaciones, consulte la documentación del esquema.
Se admiten los siguientes algoritmos de explicación de última generación en AutoML para imágenes:
- XRAI (xrai)
- Gradientes integrados (integrated_gradients)
- GradCAM guiado (guided_gradcam)
- Retropropagación guiada (guided_backprop)
En la tabla siguiente, se describen los parámetros de ajuste específicos del algoritmo de explicación para XRAI y gradientes integrados. La retropropagación guiada y GradCAM guiado no requieren el ajuste de ningún parámetro.
Algoritmo de inteligencia artificial explicable (XAI) | Parámetros específicos del algoritmo | Valores predeterminados |
---|---|---|
xrai |
1. n_steps : número de pasos utilizados por el método de aproximación. Un mayor número de pasos lleva a mejores aproximaciones de las atribuciones (explicaciones). El intervalo de n_steps es [2, inf), pero el rendimiento de las atribuciones comienza a converger después de 50 pasos. Optional, Int 2. xrai_fast : indica si se va a usar una versión más rápida de XRAI. Si es True , el tiempo de cálculo de las explicaciones es más rápido, pero conlleva explicaciones menos precisas (atribuciones). Optional, Bool |
n_steps = 50 xrai_fast = True |
integrated_gradients |
1. n_steps : número de pasos utilizados por el método de aproximación. Un mayor número de pasos lleva a mejores atribuciones (explicaciones). El intervalo de n_steps es [2, inf), pero el rendimiento de las atribuciones comienza a converger después de 50 pasos.Optional, Int 2. approximation_method : método para aproximar la integral. Los métodos de aproximación disponibles son riemann_middle y gausslegendre .Optional, String |
n_steps = 50 approximation_method = riemann_middle |
Internamente, el algoritmo XRAI usa gradientes integrados. Por lo tanto, se requiere el parámetro n_steps
tanto para los gradientes integrados como para XRAI. Un mayor número de pasos consume más tiempo para aproximar las explicaciones y puede dar lugar a problemas de tiempo de espera en el punto de conexión en línea.
Se recomienda utilizar los algoritmos XRAI > GradCAM guiado > Gradientes integrados > Retropropagación guiada para obtener mejores explicaciones, mientras que se recomienda Retropropagación guiada > GradCAM guiado > Gradientes integrados > XRAI para obtener explicaciones más rápidas, en el orden especificado.
Una solicitud de ejemplo al punto de conexión en línea tiene un aspecto similar al siguiente. Esta solicitud genera explicaciones cuando se establece model_explainability
en True
. La siguiente solicitud genera visualizaciones y atribuciones con una versión más rápida del algoritmo XRAI con 50 pasos.
import base64
import json
def read_image(image_path):
with open(image_path, "rb") as f:
return f.read()
sample_image = "./test_image.jpg"
# Define explainability (XAI) parameters
model_explainability = True
xai_parameters = {"xai_algorithm": "xrai",
"n_steps": 50,
"xrai_fast": True,
"visualizations": True,
"attributions": True}
# Create request json
request_json = {"input_data": {"columns": ["image"],
"data": [json.dumps({"image_base64": base64.encodebytes(read_image(sample_image)).decode("utf-8"),
"model_explainability": model_explainability,
"xai_parameters": xai_parameters})],
}
}
request_file_name = "sample_request_data.json"
with open(request_file_name, "w") as request_file:
json.dump(request_json, request_file)
resp = ml_client.online_endpoints.invoke(
endpoint_name=online_endpoint_name,
deployment_name=deployment.name,
request_file=request_file_name,
)
predictions = json.loads(resp)
Para más información sobre cómo generar explicaciones, consulte Repositorio de cuadernos de GitHub de ejemplos de aprendizaje automático automatizado.
Interpretación de las visualizaciones
El punto de conexión implementado devuelve una cadena de imagen codificada en base 64 si model_explainability
y visualizations
se han establecido en True
. Descodifique la cadena en base 64 como se describe en los cuadernos o utilice el código siguiente para descodificar y visualizar las cadenas de imagen en base 64 en la predicción.
import base64
from io import BytesIO
from PIL import Image
def base64_to_img(base64_img_str):
base64_img = base64_img_str.encode("utf-8")
decoded_img = base64.b64decode(base64_img)
return BytesIO(decoded_img).getvalue()
# For Multi-class classification:
# Decode and visualize base64 image string for explanations for first input image
# img_bytes = base64_to_img(predictions[0]["visualizations"])
# For Multi-label classification:
# Decode and visualize base64 image string for explanations for first input image against one of the classes
img_bytes = base64_to_img(predictions[0]["visualizations"][0])
image = Image.open(BytesIO(img_bytes))
En la imagen siguiente, se describe la visualización de las explicaciones de una imagen de entrada de ejemplo.
La figura en base 64 descodificada tiene cuatro secciones de imagen dentro de una cuadrícula de 2x2.
- La imagen de la esquina superior izquierda (0, 0) es la imagen de entrada recortada.
- La imagen de la esquina superior derecha (0, 1) es el mapa térmico de las atribuciones en una escala de colores bgyw (azul, verde, amarillo, blanco), donde la contribución de los píxeles blancos en la clase predicha es la más alta y los píxeles azules son la más baja.
- La imagen de la esquina inferior izquierda (1, 0) es el mapa térmico de atribuciones combinado con la imagen de entrada recortada.
- La imagen de la esquina inferior derecha (1, 1) es la imagen de entrada recortada con el 30 % superior de los píxeles en función de las puntuaciones de las atribuciones.
Interpretación de las atribuciones
El punto de conexión implementado devuelve las atribuciones si model_explainability
y attributions
se han establecido en True
. Para más información, consulte los cuadernos de clasificación de varias clases y de clasificación de varias etiquetas.
Estas atribuciones proporcionan más control a los usuarios para generar visualizaciones personalizadas o para hacer un escrutinio de las puntuaciones de las atribuciones en el nivel de píxel. El fragmento de código siguiente describe una manera de generar visualizaciones personalizadas mediante una matriz de atribuciones. Para obtener más información sobre el esquema de las atribuciones para la clasificación de varias clases y la clasificación de varias etiquetas, consulte la documentación del esquema.
Use los valores exactos de valid_resize_size
y valid_crop_size
del modelo seleccionado para generar las explicaciones (los valores predeterminados son 256 y 224 respectivamente). El código siguiente utiliza la funcionalidad de visualización de Captum para generar visualizaciones personalizadas. Los usuarios pueden utilizar cualquier otra biblioteca para generar visualizaciones. Para obtener más información, consulte las utilidades de visualización de Captum.
import colorcet as cc
import numpy as np
from captum.attr import visualization as viz
from PIL import Image
from torchvision import transforms
def get_common_valid_transforms(resize_to=256, crop_size=224):
return transforms.Compose([
transforms.Resize(resize_to),
transforms.CenterCrop(crop_size)
])
# Load the image
valid_resize_size = 256
valid_crop_size = 224
sample_image = "./test_image.jpg"
image = Image.open(sample_image)
# Perform common validation transforms to get the image used to generate attributions
common_transforms = get_common_valid_transforms(resize_to=valid_resize_size,
crop_size=valid_crop_size)
input_tensor = common_transforms(image)
# Convert output attributions to numpy array
# For Multi-class classification:
# Selecting attribution matrix for first input image
# attributions = np.array(predictions[0]["attributions"])
# For Multi-label classification:
# Selecting first attribution matrix against one of the classes for first input image
attributions = np.array(predictions[0]["attributions"][0])
# visualize results
viz.visualize_image_attr_multiple(np.transpose(attributions, (1, 2, 0)),
np.array(input_tensor),
["original_image", "blended_heat_map"],
["all", "absolute_value"],
show_colorbar=True,
cmap=cc.cm.bgyw,
titles=["original_image", "heatmap"],
fig_size=(12, 12))
Conjuntos de datos de gran tamaño
Si usa AutoML para entrenar en conjuntos de datos grandes, hay algunas opciones experimentales que pueden resultar útiles.
Importante
Esta configuración se encuentra actualmente en versión preliminar pública. Se proporciona sin un 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.
Entrenamiento con varias GPU y varios nodos
De manera predeterminada, cada modelo se entrena en una sola máquina virtual. Si el entrenamiento de un modelo tarda demasiado tiempo, el uso de máquinas virtuales que contienen varias GPU puede ayudar. El tiempo para entrenar un modelo en conjuntos de datos debería disminuir más o menos en proporción lineal respecto del número de GPU usadas. (Por ejemplo, un modelo se debería entrenar aproximadamente dos veces más rápido en una máquina virtual con dos GPU en comparación con hacerlo en una máquina virtual con una GPU). Si el tiempo para entrenar un modelo sigue siendo alto en una máquina virtual con varias GPU, puede aumentar el número de máquinas virtuales que se usan para entrenar cada modelo. Al igual que ocurre con el entrenamiento con varias GPU, el tiempo para entrenar un modelo en conjuntos de datos grandes también debería disminuir más o menos en proporción lineal respecto del número de máquinas virtuales usadas. Al entrenar un modelo en varias máquinas virtuales, asegúrese de usar una SKU de proceso que admita InfiniBand para obtener los mejores resultados. Para configurar el número de máquinas virtuales que se usan para entrenar un modelo único, establezca la propiedad node_count_per_trial
del trabajo de AutoML.
SE APLICA A: Extensión de ML de la CLI de Azure v2 (actual)
properties:
node_count_per_trial: "2"
Streaming de archivos de imagen desde el almacenamiento
De manera predeterminada, todos los archivos de imagen se descargan en el disco antes del entrenamiento del modelo. Si el tamaño de los archivos de imagen es mayor que el espacio disponible en disco, se produce un error en el trabajo. En lugar de descargar todas las imágenes en el disco, puede seleccionar transmitir los archivos de imagen desde Azure Storage cuando sea necesario durante el entrenamiento. Los archivos de imagen se transmiten directamente desde Azure Storage a la memoria del sistema, sin pasar por el disco. Al mismo tiempo, se almacenan en caché en el disco tantos archivos como sea posible desde el almacenamiento a fin de minimizar el número de solicitudes al almacenamiento.
Nota
Si el streaming está habilitado, asegúrese de que la cuenta de Azure Storage se encuentra en la misma región que el proceso para minimizar el costo y la latencia.
SE APLICA A: Extensión de ML de la CLI de Azure v2 (actual)
training_parameters:
advanced_settings: >
{"stream_image_files": true}
Cuadernos de ejemplo
Revise los ejemplos de código y los casos de uso detallados en el repositorio del cuaderno de GitHub para obtener muestras de aprendizaje automático automatizado. Consulte las carpetas con el prefijo "automl-image-" para ver ejemplos específicos de la creación de modelos de Computer Vision.
Ejemplos de código
Revise los ejemplos de código y los casos de uso detallados en el repositorio azureml-examples para obtener muestras de aprendizaje automático automatizado.