Descripción general del entrenamiento personalizado

Vertex AI proporciona un servicio de entrenamiento administrado que te permite poner en funcionamiento el entrenamiento de modelos a gran escala. Puedes usar Vertex AI para ejecutar aplicaciones de entrenamiento en función de cualquier framework de aprendizaje automático (AA) en la infraestructura de Google Cloud. Para los siguientes frameworks de AA populares, Vertex AI también tiene compatibilidad integrada que simplifica el proceso de preparación para el entrenamiento y la entrega de modelos:

En esta página, se explican los beneficios del entrenamiento personalizado en Vertex AI, el flujo de trabajo involucrado y las diversas opciones de entrenamiento disponibles.

Vertex AI pone en funcionamiento el entrenamiento a gran escala

Hay varios desafíos para poner en operación el entrenamiento de modelos. Estos desafíos incluyen el tiempo y el costo necesarios para entrenar modelos, la profundidad de habilidades necesarias para administrar la infraestructura de procesamiento y la necesidad de proporcionar seguridad a nivel empresarial. Vertex AI aborda estos desafíos y proporciona una serie de otros beneficios.

Infraestructura de procesamiento completamente administrada

Infraestructura administrada

El entrenamiento de modelos en Vertex AI es un servicio completamente administrado que no requiere administración de infraestructura física. Puedes entrenar modelos de AA sin necesidad de aprovisionar o administrar servidores. Solo pagas por los recursos de procesamiento que consumas. Además, Vertex AI controla el registro, la puesta en cola y la supervisión de trabajos.

Alto rendimiento

Alto rendimiento

Los trabajos de entrenamiento de Vertex AI están optimizados para el entrenamiento de modelos de AA, lo que proporciona un rendimiento más rápido que la ejecución directa de la aplicación de entrenamiento en un clúster de GKE. También puedes identificar y depurar los cuellos de botella de rendimiento en tu trabajo de entrenamiento con Vertex AI TensorBoard Profiler.

Entrenamiento distribuido

Entrenamiento distribuido

Reduction Server es un algoritmo de reducción total de Vertex AI que puede aumentar la capacidad de procesamiento y reducir la latencia del entrenamiento distribuido de varios nodos en unidades de procesamiento de gráficos (GPU) de NVIDIA. Esta optimización ayuda a reducir el tiempo y el costo de completar trabajos de entrenamiento grandes.

Optimización de hiperparámetros

Ajuste de hiperparámetros

Los trabajos de ajuste de hiperparámetros ejecutan varias pruebas de tu aplicación de entrenamiento con diferentes valores de hiperparámetros. Debes especificar un rango de valores para probar y Vertex AI descubre los valores óptimos para tu modelo dentro de ese rango.

Seguridad empresarial

Seguridad empresarial

Vertex AI proporciona las siguientes funciones de seguridad empresarial:

Integraciones de operaciones de AA (MLOps)

MLOps

Vertex AI proporciona un conjunto de herramientas y funciones de MLOps integradas que puedes usar para los siguientes fines:

  • Organizar flujos de trabajo de AA de extremo a extremo.
  • Realizar ingeniería de atributos.
  • Realizar experimentos.
  • Iterar y administrar tus modelos.
  • Realizar un seguimiento de metadatos de AA.
  • Supervisar y evaluar la calidad del modelo.

Flujo de trabajo para el entrenamiento personalizado

En el siguiente diagrama, se muestra una descripción general de alto nivel del flujo de trabajo de entrenamiento personalizado en Vertex AI. En las secciones que siguen, se describen cada paso en detalle.

Flujo de trabajo del entrenamiento personalizado.

Carga y prepara datos de entrenamiento

Para obtener el mejor rendimiento y asistencia, usa uno de los siguientes servicios de Google Cloud como fuente de datos:

También puedes especificar un conjunto de datos administrado de Vertex AI como la fuente de datos cuando uses una canalización de entrenamiento para entrenar tu modelo. Entrenar un modelo personalizado y un modelo de AutoML con el mismo conjunto de datos te permite comparar el rendimiento de los dos modelos.

Prepara tu aplicación de entrenamiento

A fin de preparar tu aplicación de entrenamiento para usarla en Vertex AI, haz lo siguiente:

  • Implementa las prácticas recomendadas de código de entrenamiento para Vertex AI.
  • Determina el tipo de imagen de contenedor que se usará.
  • Empaqueta tu aplicación de entrenamiento en un formato compatible según el tipo de imagen de contenedor seleccionado.

Implementa las prácticas recomendadas del código de entrenamiento

La aplicación de entrenamiento debe implementar las prácticas recomendadas de código de entrenamiento para Vertex AI. Estas prácticas recomendadas se relacionan con la capacidad de tu aplicación de entrenamiento para hacer lo siguiente:

  • Acceder a los servicios de Google Cloud.
  • Cargar datos de entrada.
  • Habilita el registro automático para el seguimiento de experimentos.
  • Exportar artefactos de modelo.
  • Usar las variables de entorno de Vertex AI.
  • Garantizar la resiliencia ante los reinicios de las VMs.

Selecciona un tipo de contenedor

Vertex AI ejecuta tu aplicación de entrenamiento en una imagen de contenedor de Docker. Una imagen de contenedor de Docker es un paquete de software autónomo que incluye código y todas las dependencias, que se puede ejecutar en casi cualquier entorno de computación. Puedes especificar el URI de una imagen de contenedor compilada previamente que quieras usar, o crear y subir una imagen de contenedor personalizada que tenga preinstaladas la aplicación de entrenamiento y las dependencias.

En la siguiente tabla, se muestran las diferencias entre las imágenes de contenedor compiladas previamente y personalizadas:

Especificaciones Imágenes de contenedor compiladas previamente Imágenes de contenedor personalizadas
Framework de AA Cada imagen de contenedor es específica de un framework del AA. Usa cualquier marco de trabajo de AA o no uses ninguno.
Versión del marco de trabajo de AA Cada imagen de contenedor es específica de una versión del framework de AA. Usa cualquier versión del marco de trabajo de AA, incluidas las versiones secundarias y las compilaciones nocturnas.
Dependencias de aplicaciones Las dependencias comunes para el framework de AA están preinstaladas. Puedes especificar dependencias adicionales para instalar en tu aplicación de entrenamiento. Instala previamente las dependencias que necesita tu aplicación de entrenamiento.
Formato de entrega de aplicaciones
  • Distribución de fuente de Python
  • Archivo único de Python
Instala previamente la aplicación de entrenamiento en la imagen de contenedor personalizada.
Esfuerzo de configuración Bajo Alto
Recomendado para Aplicaciones de entrenamiento de Python basadas en un framework de AA y una versión de framework que tiene disponible una imagen de contenedor compilada previamente.
  • Mayor personalización y control.
  • Aplicaciones de entrenamiento que no son de Python
  • Dependencias privadas o personalizadas.
  • Aplicaciones de entrenamiento que usan un framework de AA o una versión de framework que no tiene disponible una imagen de contenedor compilada previamente.

Empaquetar la aplicación de entrenamiento

Después de determinar el tipo de imagen de contenedor que se usará, empaqueta tu aplicación de entrenamiento en uno de los siguientes formatos según el tipo de imagen de contenedor:

  • Archivo único de Python para usar en un contenedor compilado previamente

    Escribe tu aplicación de entrenamiento como un archivo único de Python y usa el SDK de Vertex AI para Python a fin de crear una clase CustomJob o CustomTrainingJob. El archivo de Python se empaqueta en una distribución de fuente de Python y se instala en una imagen de contenedor compilada previamente. Entregar tu aplicación de entrenamiento como un archivo único de Python es adecuado para el prototipado. En el caso de las aplicaciones de entrenamiento de producción, es probable que tengas tu aplicación de entrenamiento organizada en más de un archivo.

  • Distribución de fuente de Python para su uso en un contenedor compilado previamente

    Empaqueta tu aplicación de entrenamiento en una o más distribuciones de fuente de Python y súbelas a un bucket de Cloud Storage. Vertex AI instala las distribuciones de fuente en una imagen de contenedor compilada previamente cuando creas un trabajo de entrenamiento.

  • Imagen de contenedor personalizada

    Crea tu propia imagen de contenedor de Docker que tenga preinstaladas tu aplicación de entrenamiento y las dependencias, y súbela a Artifact Registry. Si tu aplicación de entrenamiento está escrita en Python, puedes realizar estos pasos mediante un comando de Google Cloud CLI.

Configure el trabajo de entrenamiento

Un trabajo de entrenamiento de Vertex AI realiza las siguientes tareas:

  • Aprovisiona una (entrenamiento de nodo único) o más (entrenamiento distribuido) máquinas virtuales (VMs).
  • Ejecuta la aplicación de entrenamiento en contenedores en las VMs aprovisionadas.
  • Borra las VMs después de que se completa el trabajo de entrenamiento.

Vertex AI ofrece tres tipos de trabajos de entrenamiento para ejecutar tu aplicación de entrenamiento:

  • Trabajo personalizado

    Un trabajo personalizado (CustomJob) ejecuta tu aplicación de entrenamiento. Si usas una imagen de contenedor compilada previamente, los artefactos del modelo se envían al bucket de Cloud Storage especificado. Para imágenes de contenedor personalizadas, tu aplicación de entrenamiento también puede generar artefactos de modelo en otras ubicaciones.

  • Trabajos de ajuste de hiperparámetros

    Un trabajo de ajuste de hiperparámetros (HyperparameterTuningJob) ejecuta varias pruebas de tu aplicación de entrenamiento con diferentes valores de hiperparámetros hasta que produce artefactos de modelo con los valores óptimos de hiperparámetro de rendimiento. Especifica el rango de valores de hiperparámetros que se probarán y las métricas para optimizar.

  • Canalización de entrenamiento

    Una canalización de entrenamiento (CustomTrainingJob) ejecuta un trabajo personalizado o un trabajo de ajuste de hiperparámetros y, de forma opcional, exporta los artefactos del modelo a Vertex AI para crear un recurso de modelo. Puedes especificar un conjunto de datos administrado de Vertex AI como tu fuente de datos.

Cuando crees un trabajo de entrenamiento, especifica los recursos de procesamiento que se usarán para ejecutar tu aplicación de entrenamiento y establecer la configuración de tu contenedor.

Configuraciones de procesamiento

Especifica los recursos de procesamiento que se usarán en un trabajo de entrenamiento. Vertex AI admite el entrenamiento de un solo nodo, en el que el trabajo de entrenamiento se ejecuta en una VM y el entrenamiento distribuido, en el que el trabajo de entrenamiento se ejecuta en varias VMs.

Los recursos de procesamiento que puedes especificar para tu trabajo de entrenamiento son los siguientes:

  • Tipo de máquina de VM

    Los distintos tipos de máquinas ofrecen diferentes CPU, tamaño de memoria y ancho de banda.

  • Unidades de procesamiento gráfico (GPU)

    Puedes agregar una o más GPU a las VMs de tipo A2 o N1. Si tu aplicación de entrenamiento está diseñada para usar GPU, agregar GPU puede mejorar el rendimiento de manera significativa.

  • Unidades de procesamiento tensorial (TPU)

    Las TPUs están diseñadas específicamente para acelerar las cargas de trabajo de aprendizaje automático. Cuando se usa una VM de TPU para el entrenamiento, puedes especificar solo un grupo de trabajadores. Ese grupo de trabajadores puede tener solo una réplica.

  • Discos de arranque

    Puedes usar SSDs (predeterminadas) o HDDs para tu disco de arranque. Si tu aplicación de entrenamiento lee y escribe en el disco, el uso de SSDs puede mejorar el rendimiento. También puedes especificar el tamaño de tu disco de arranque según la cantidad de datos temporales que escriba la aplicación de entrenamiento en el disco. Los discos de arranque pueden tener entre 100 GiB (predeterminado) y 64,000 GiB. Todas las VMs en un grupo de trabajadores deben usar el mismo tipo y tamaño de disco de arranque.

Configuraciones de contenedores

Las configuraciones de contenedores que debes realizar dependen de si usas una imagen de contenedor compilada previamente o personalizada.

  • Configuraciones de contenedores compiladas previamente:

    • Especifica el URI de la imagen de contenedor compilada previamente que deseas usar.
    • Si tu aplicación de entrenamiento se empaqueta como una distribución de fuente de Python, especifica el URI de Cloud Storage donde se encuentra el paquete.
    • Especifica el módulo de punto de entrada de la aplicación de entrenamiento.
    • Opcional: Especifica una lista de argumentos de línea de comandos para pasar al módulo de punto de entrada de tu aplicación de entrenamiento.
  • Configuraciones personalizadas de contenedores:

    • Especifica el URI de la imagen de contenedor personalizada, que puede ser un URI de Artifact Registry o Docker Hub.
    • Opcional: Anula las instrucciones ENTRYPOINT o CMD en tu imagen de contenedor.

Crea un trabajo de entrenamiento

Una vez que tus datos y tu aplicación de entrenamiento estén listos, crea uno de los siguientes trabajos de entrenamiento para ejecutar tu aplicación de entrenamiento:

Para crear el trabajo de entrenamiento, puedes usar la consola de Google Cloud, Google Cloud CLI, el SDK de Vertex AI para Python o la API de Vertex AI.

Importa artefactos de modelo a Vertex AI (opcional)

Es probable que tu aplicación de entrenamiento genere uno o más artefactos de modelo en una ubicación específica, por lo general, un bucket de Cloud Storage. Antes de obtener predicciones en Vertex AI a partir de los artefactos de tu modelo, primero importa los artefactos del modelo en Vertex AI Model Registry.

Al igual que las imágenes de contenedor para el entrenamiento, Vertex AI te permite usar imágenes de contenedor precompiladas o personalizadas para las predicciones. Si hay una imagen de contenedor compilada previamente para predicciones disponible en tu framework de AA y tu versión de framework, te recomendamos usar una imagen de contenedor compilada previamente.

¿Qué sigue?