Información general sobre el entrenamiento personalizado de Vertex AI

Vertex AI ofrece un servicio de entrenamiento gestionado que te ayuda a poner en marcha el entrenamiento de modelos a gran escala. Puedes usar Vertex AI para ejecutar aplicaciones de entrenamiento basadas en cualquier framework de aprendizaje automático (ML) en la infraestructura deGoogle Cloud . Vertex AI también ofrece compatibilidad integrada con los siguientes frameworks de aprendizaje automático populares, lo que simplifica el proceso de preparación para el entrenamiento y el servicio de modelos:

En esta página se explican las ventajas del entrenamiento personalizado en Vertex AI, el flujo de trabajo que implica y las diferentes opciones de entrenamiento disponibles.

Vertex AI pone en práctica el entrenamiento a gran escala

Hay varios retos a la hora de poner en práctica el entrenamiento de modelos. Entre estos desafíos se incluyen el tiempo y el coste necesarios para entrenar modelos, la profundidad de las habilidades necesarias para gestionar la infraestructura de computación y la necesidad de proporcionar seguridad de nivel empresarial. Vertex AI aborda estos retos y ofrece otras ventajas.

Infraestructura de computación totalmente gestionada

Infraestructura gestionada

El entrenamiento de modelos en Vertex AI es un servicio totalmente gestionado que no requiere la administración de ninguna infraestructura física. Puedes entrenar modelos de aprendizaje automático sin necesidad de aprovisionar ni gestionar servidores. Solo pagas por los recursos de computación que consumes. Vertex AI también gestiona el registro, la puesta en cola y la monitorización de las tareas.

Alto rendimiento

Alto rendimiento

Los trabajos de entrenamiento de Vertex AI están optimizados para el entrenamiento de modelos de aprendizaje automático, lo que puede proporcionar un rendimiento más rápido que ejecutar directamente tu aplicación de entrenamiento en un clúster de Google Kubernetes Engine (GKE). También puedes identificar y depurar los cuellos de botella del rendimiento de tu tarea de entrenamiento con Cloud Profiler.

Preparación distribuida

Preparación distribuida

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

Optimización de hiperparámetros

Ajuste de hiperparámetros

Las tareas de ajuste de hiperparámetros ejecutan varias pruebas de tu aplicación de entrenamiento con diferentes valores de hiperparámetros. Especificas un intervalo de valores para probar y Vertex AI descubre los valores óptimos para tu modelo dentro de ese intervalo.

Seguridad empresarial

Seguridad empresarial

Vertex AI ofrece las siguientes funciones de seguridad empresarial:

Integraciones de operaciones de aprendizaje automático (MLOps)

Operaciones de aprendizaje automático

Vertex AI ofrece un conjunto de herramientas y funciones de MLOps integradas que puedes usar para lo siguiente:

  • Orquestar flujos de trabajo de aprendizaje automático integrales.
  • Realiza la ingeniería de funciones.
  • Realiza experimentos.
  • Gestiona tus modelos y repítelos.
  • Monitorizar metadatos de aprendizaje automático.
  • Monitoriza y evalúa la calidad del modelo.

Flujo de trabajo para el entrenamiento personalizado

En el siguiente diagrama se muestra una descripción general del flujo de trabajo de entrenamiento personalizado en Vertex AI. En las siguientes secciones se describe cada paso en detalle.

Flujo de trabajo para el entrenamiento personalizado

Cargar y preparar los datos de entrenamiento

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

Para ver una comparación de estos servicios, consulta el artículo Descripción general de la preparación de datos.

También puede especificar un conjunto de datos gestionado de Vertex AI como fuente de datos al usar una canalización de entrenamiento para entrenar su modelo. Entrenar un modelo personalizado y un modelo de AutoML con el mismo conjunto de datos te permite comparar el rendimiento de ambos modelos.

Prepara tu solicitud de formación

Para 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 vas a usar.
  • Empaqueta tu aplicación de entrenamiento en un formato compatible en función del tipo de imagen de contenedor seleccionado.

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

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

  • Acceder a los servicios de Google Cloud .
  • Carga los datos de entrada.
  • Habilita el registro automático para el seguimiento de experimentos.
  • Permiso para exportar artefactos de modelos.
  • Usa las variables de entorno de Vertex AI.
  • Asegura la resiliencia ante reinicios de máquinas virtuales.

Seleccione un tipo de contenedor

Vertex AI ejecuta tu aplicación de entrenamiento en una imagen de contenedor de Docker. Una imagen de contenedor Docker es un paquete de software independiente que incluye código y todas las dependencias, y que se puede ejecutar en casi cualquier entorno informático. Puedes especificar el URI de una imagen de contenedor predefinida que quieras usar o crear y subir una imagen de contenedor personalizada que tenga preinstalada tu aplicación de entrenamiento y sus dependencias.

En la siguiente tabla se muestran las diferencias entre las imágenes de contenedor prediseñadas y las personalizadas:

Especificaciones Imágenes de contenedor prediseñadas Imágenes de contenedor personalizadas
Framework de aprendizaje automático Cada imagen de contenedor es específica de un framework de aprendizaje automático. Puedes usar cualquier framework de aprendizaje automático o no usar ninguno.
Versión del framework de aprendizaje automático Cada imagen de contenedor es específica de una versión de framework de aprendizaje automático. Usa cualquier versión del framework de aprendizaje automático, incluidas las versiones secundarias y las compilaciones nocturnas.
Dependencias de la aplicación Las dependencias habituales del framework de aprendizaje automático están preinstaladas. Puedes especificar dependencias adicionales para instalar en tu aplicación de entrenamiento. Preinstala las dependencias que necesite tu aplicación de entrenamiento.
Formato de entrega de la aplicación
  • Distribución del código fuente de Python.
  • Un solo archivo de Python.
Preinstala la aplicación de entrenamiento en la imagen de contenedor personalizada.
Dificultad de configuración Bajo Alta
Recomendado para Aplicaciones de entrenamiento de Python basadas en un framework de aprendizaje automático y una versión del framework que tenga una imagen de contenedor prediseñada disponible.
  • Más personalización y control.
  • Aplicaciones de entrenamiento que no sean de Python.
  • Dependencias privadas o personalizadas.
  • Aplicaciones de entrenamiento que usan un framework o una versión de framework de aprendizaje automático para los que no hay disponible ninguna imagen de contenedor precompilada.

Empaqueta tu aplicación de entrenamiento

Una vez que hayas determinado el tipo de imagen de contenedor que vas a usar, empaqueta tu aplicación de entrenamiento en uno de los siguientes formatos en función del tipo de imagen de contenedor:

  • Archivo de Python único para usar en un contenedor prediseñado

    Escribe tu aplicación de entrenamiento como un único archivo de Python y usa el SDK de Vertex AI para Python para crear una clase CustomJob o CustomTrainingJob. El archivo de Python se empaqueta en una distribución de origen de Python y se instala en una imagen de contenedor prediseñada. Enviar tu aplicación de entrenamiento como un único archivo de Python es adecuado para crear prototipos. En el caso de las aplicaciones de entrenamiento de producción, es probable que la aplicación de entrenamiento esté organizada en más de un archivo.

  • Distribución de la fuente de Python para usarla en un contenedor prediseñado

    Empaqueta tu aplicación de entrenamiento en una o varias distribuciones de origen de Python y súbelas a un segmento de Cloud Storage. Vertex AI instala las distribuciones de origen en una imagen de contenedor prediseñada cuando creas una tarea de entrenamiento.

  • Imagen de contenedor personalizada

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

Configurar una tarea de entrenamiento

Una tarea de entrenamiento de Vertex AI realiza las siguientes acciones:

  • Proporciona una (entrenamiento de un solo nodo) o varias (entrenamiento distribuido) máquinas virtuales.
  • Ejecuta tu aplicación de entrenamiento en contenedores en las VMs aprovisionadas.
  • Elimina las VMs una vez 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

    Una tarea personalizada (CustomJob) ejecuta tu aplicación de entrenamiento. Si usas una imagen de contenedor prediseñada, los artefactos del modelo se enviarán al segmento de Cloud Storage especificado. En el caso de las imágenes de contenedor personalizadas, tu aplicación de entrenamiento también puede generar artefactos de modelo en otras ubicaciones.

  • Tarea de ajuste de hiperparámetros

    Una tarea de ajuste de hiperparámetros (HyperparameterTuningJob) ejecuta varias pruebas de tu aplicación de entrenamiento con diferentes valores de hiperparámetros hasta que genera artefactos de modelo con los valores de hiperparámetros de mejor rendimiento. Especifica el intervalo de valores de hiperparámetros que quieres probar y las métricas que quieres optimizar.

  • Flujo de procesamiento de entrenamiento

    Una canalización de entrenamiento (CustomTrainingJob) ejecuta una tarea personalizada o una tarea de ajuste de hiperparámetros y, opcionalmente, exporta los artefactos del modelo a Vertex AI para crear un recurso de modelo. Puedes especificar un conjunto de datos gestionado de Vertex AI como fuente de datos.

Cuando crees una tarea de entrenamiento, especifica los recursos de computación que se van a usar para ejecutar tu aplicación de entrenamiento y configura los ajustes del contenedor.

Configuraciones de procesamiento

Especifica los recursos de computación que se van a usar en una tarea de entrenamiento. Vertex AI admite el entrenamiento de un solo nodo, en el que la tarea de entrenamiento se ejecuta en una VM, y el entrenamiento distribuido, en el que la tarea de entrenamiento se ejecuta en varias VMs.

Los recursos de computación que puedes especificar para tu tarea de entrenamiento son los siguientes:

  • Tipo de máquina virtual

    Los distintos tipos de máquinas ofrecen diferentes CPUs, tamaños de memoria y anchos de banda.

  • Unidades de procesamiento gráfico (GPUs)

    Puedes añadir una o varias GPUs a las VMs de tipo A2 o N1. Si tu aplicación de entrenamiento está diseñada para usar GPUs, añadir GPUs puede mejorar significativamente el rendimiento.

  • Unidades de procesamiento de tensor (TPUs)

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

  • Discos de arranque

    Puedes usar unidades SSD (opción predeterminada) o HDD para tu disco de arranque. Si tu aplicación de entrenamiento lee y escribe en el disco, usar SSDs puede mejorar el rendimiento. También puedes especificar el tamaño del disco de arranque en función de la cantidad de datos temporales que tu aplicación de entrenamiento escriba en el disco. Los discos de arranque pueden tener entre 100 GiB (valor predeterminado) y 64.000 GiB. Todas las VMs de un grupo de trabajadores deben usar el mismo tipo y tamaño de disco de arranque.

Configuraciones de contenedores

Las configuraciones de contenedor que debes hacer dependen de si usas una imagen de contenedor prediseñada o personalizada.

  • Configuraciones de contenedores precompilados:

    • Especifica el URI de la imagen de contenedor prediseñada que quieras usar.
    • Si tu aplicación de entrenamiento se empaqueta como una distribución de origen de Python, especifica el URI de Cloud Storage donde se encuentra el paquete.
    • Especifica el módulo del punto de entrada de tu aplicación de entrenamiento.
    • Opcional: Especifica una lista de argumentos de línea de comandos que se pasarán al módulo del punto de entrada de tu aplicación de entrenamiento.
  • Configuraciones de contenedores personalizadas:

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

Crear una tarea de entrenamiento

Una vez que haya preparado los datos y la aplicación de entrenamiento, ejecute la aplicación de entrenamiento creando uno de los siguientes trabajos de entrenamiento:

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

Opcional: Importar artefactos de modelos a Vertex AI

Es probable que tu aplicación de entrenamiento genere uno o varios artefactos de modelo en una ubicación especificada, normalmente un segmento de Cloud Storage. Para obtener inferencias en Vertex AI a partir de los artefactos de tu modelo, primero debes importar los artefactos del modelo al registro de modelos de Vertex AI.

Al igual que con las imágenes de contenedor para el entrenamiento, Vertex AI te permite elegir entre imágenes de contenedor prediseñadas o personalizadas para las inferencias. Si hay disponible una imagen de contenedor prediseñada para las inferencias de tu framework de aprendizaje automático y de la versión del framework, te recomendamos que la uses.

Siguientes pasos