Información general sobre los contenedores personalizados

Un contenedor personalizado es una imagen de Docker que creas para ejecutar tu aplicación de entrenamiento. Si ejecutas tu tarea de entrenamiento de aprendizaje automático (ML) en un contenedor personalizado, puedes usar frameworks de aprendizaje automático, dependencias que no sean de aprendizaje automático, bibliotecas y archivos binarios que no se admitan en otras circunstancias en Vertex AI.

Cómo funciona el entrenamiento con contenedores

Tu aplicación de entrenamiento, implementada en el framework de aprendizaje automático que elijas, es el núcleo del proceso de entrenamiento.

  1. Crea una aplicación que entrene tu modelo con el framework de aprendizaje automático que elijas.

  2. Decide si quieres usar un contenedor personalizado. Puede que haya un contenedor precompilado que ya admita tus dependencias. De lo contrario, debes crear un contenedor personalizado para tu tarea de entrenamiento. En el contenedor personalizado, preinstala tu aplicación de entrenamiento y todas sus dependencias en una imagen que se utilice para ejecutar tu tarea de entrenamiento.

  3. Almacena tus datos de entrenamiento y verificación en una fuente a la que pueda acceder Vertex AI. Para simplificar la autenticación y reducir la latencia, almacena tus datos en Cloud Storage, Bigtable u otroGoogle Cloud servicio de almacenamiento del mismo Google Cloud proyecto y región que estés usando en Vertex AI. Consulta más información sobre las formas en las que Vertex AI puede cargar tus datos.

  4. Cuando tu aplicación esté lista para ejecutarse, debes compilar tu imagen de Docker y enviarla a Artifact Registry o Docker Hub. Asegúrate de que Vertex AI pueda acceder a tu registro.

  5. Envía tu tarea de entrenamiento personalizado creando una tarea personalizada o creando un flujo de procesamiento de entrenamiento personalizado.

  6. Vertex AI configura los recursos de tu tarea. Asigna una o varias máquinas virtuales (llamadas instancias de entrenamiento) en función de la configuración de tu tarea. Para configurar una instancia de entrenamiento, utilice el contenedor personalizado que especifique como parte del objeto WorkerPoolSpec cuando envíe su trabajo de entrenamiento personalizado.

  7. Vertex AI ejecuta tu imagen de Docker y transfiere los argumentos de línea de comandos que especifiques al crear la tarea de entrenamiento.

  8. Cuando una tarea de entrenamiento se completa correctamente o se produce un error irrecuperable, Vertex AI detiene todos los procesos de la tarea y limpia los recursos.

Ventajas de los contenedores personalizados

Los contenedores personalizados te permiten especificar y preinstalar todas las dependencias que necesita tu aplicación.

  • Tiempo de inicio más rápido. Si usas un contenedor personalizado con tus dependencias preinstaladas, puedes ahorrar el tiempo que tardaría tu aplicación de entrenamiento en instalar las dependencias al iniciarse.
  • Usa el framework de aprendizaje automático que quieras. Si no encuentras un contenedor predefinido de Vertex AI con el framework de aprendizaje automático que quieres usar, puedes crear un contenedor personalizado con el framework que elijas y usarlo para ejecutar trabajos en Vertex AI. Por ejemplo, puedes usar un contenedor de cliente para entrenar con PyTorch.
  • Compatibilidad ampliada con el entrenamiento distribuido. Con los contenedores personalizados, puedes hacer entrenamientos distribuidos con cualquier framework de aprendizaje automático.
  • Usa la versión más reciente. También puedes usar la compilación o la versión secundaria más recientes de un framework de aprendizaje automático. Por ejemplo, puedes crear un contenedor personalizado para entrenar con tf-nightly.

Ajuste de hiperparámetros con contenedores personalizados

Para ajustar los hiperparámetros en Vertex AI, debes especificar las métricas de objetivo y si quieres minimizar o maximizar cada métrica. Por ejemplo, puede que quiera maximizar la precisión del modelo o minimizar la pérdida del modelo. También debes indicar los hiperparámetros que quieras ajustar, así como el intervalo de valores aceptables de cada uno. Vertex AI hace varias pruebas de tu aplicación de entrenamiento, rastreando y ajustando los hiperparámetros después de cada prueba. Cuando se completa la tarea de ajuste de hiperparámetros, Vertex AI informa de los valores de la configuración más eficaz de tus hiperparámetros y de un resumen de cada prueba.

Para ajustar los hiperparámetros con contenedores personalizados, debes hacer los siguientes cambios:

  • En tu Dockerfile, instala cloudml-hypertune.
  • En tu código de entrenamiento:
    • Usa cloudml-hypertune para informar de los resultados de cada prueba llamando a su función auxiliar, report_hyperparameter_tuning_metric.
    • Añade argumentos de línea de comandos para cada hiperparámetro y gestiona el análisis de argumentos con un analizador de argumentos como argparse.

Consulta cómo configurar una tarea de ajuste de hiperparámetros que utilice contenedores personalizados o descubre más información sobre cómo funciona el ajuste de hiperparámetros en Vertex AI.

GPUs en contenedores personalizados

Para entrenar modelos con GPUs, tu contenedor personalizado debe cumplir algunos requisitos especiales. Debes compilar una imagen Docker diferente de la que usarías para entrenar con CPUs.

  • Preinstala el kit de herramientas CUDA y cuDNN en tu imagen de Docker. La forma recomendada de compilar un contenedor personalizado compatible con GPUs es usar la imagen nvidia/cuda como imagen base del contenedor personalizado. La imagen de contenedor nvidia/cuda tiene versiones coincidentes del kit de herramientas de CUDA y cuDNN preinstaladas, y te ayuda a configurar las variables de entorno relacionadas correctamente.
  • Instala tu aplicación de entrenamiento, junto con el framework de aprendizaje automático y otras dependencias necesarias, en tu imagen de Docker.

Consulta un ejemplo de Dockerfile para entrenar modelos con GPUs.

Siguientes pasos