Crea una imagen de contenedor personalizado para el entrenamiento

El uso de una imagen de contenedor personalizada proporciona la mayor flexibilidad para el entrenamiento en Vertex�AI. Para aprender c�mo usar una imagen de contenedor personalizado difiere de usar una aplicaci�n de entrenamiento de Python con un contenedor compilado previamente, consulta los Requisitos del c�digo de entrenamiento.

En la gu�a se explican los siguientes pasos:

  1. Crear un contenedor personalizado:
    1. Escribe un Dockerfile que configure tu contenedor de modo que funcione con Vertex AI y, adem�s, incluya las dependencias necesarias para la aplicaci�n de entrenamiento.
    2. Compilar y ejecutar tu contenedor de Docker de forma local
  2. Env�a la imagen del contenedor a Artifact�Registry.

Antes de comenzar

Para configurar un repositorio de la API de Artifact�Registry y configurar Docker en tu entorno de desarrollo, sigue la Gu�a de inicio r�pido de Artifact�Registry para Docker. En particular, aseg�rate de completar los siguientes pasos de la gu�a de inicio r�pido:

  • Antes de comenzar
  • Elige una shell
  • Crea un repositorio de Docker
  • Configura la autenticaci�n

Crea una imagen de contenedor personalizada

Recomendamos dos flujos de trabajo posibles para crear una imagen de contenedor personalizada:

  • Escribe el c�digo de entrenamiento. Luego, usa el comando local-run de la CLI de gcloud para compilar y probar una imagen de contenedor personalizada seg�n el c�digo de entrenamiento sin escribir un Dockerfile.

    Este flujo de trabajo puede ser m�s directo si no est�s familiarizado con Docker. Si sigues este flujo de trabajo, puedes omitir el resto de esta secci�n.

  • Escribe el c�digo de entrenamiento. Luego, escribe un Dockerfile y compila una imagen de contenedor a partir de �l. Por �ltimo, pruebe el contenedor de forma local.

    Este flujo de trabajo ofrece m�s flexibilidad, ya que puedes personalizar la imagen de contenedor tanto como desees.

En el resto de esta secci�n, se muestra un ejemplo del �ltimo flujo de trabajo.

C�digo de capacitaci�n

Puedes escribir c�digo de entrenamiento con cualquier dependencia en cualquier lenguaje de programaci�n. Aseg�rate de que tu c�digo cumpla con los requisitos del c�digo de entrenamiento. Si planeas usar ajuste de hiperpar�metros, GPU o entrenamiento distribuido, aseg�rate de leer las secciones correspondientes de ese documento; En estas secciones, se describen las consideraciones espec�ficas para usar las funciones con contenedores personalizados.

Crea un Dockerfile

Crea un Dockerfile a fin de especificar todas las instrucciones necesarias para compilar la imagen de contenedor.

En esta secci�n, se explica c�mo crear un ejemplo gen�rico de un Dockerfile que se usa en el entrenamiento personalizado. Para obtener m�s informaci�n sobre c�mo crear una imagen de contenedor, lee la Gu�a de inicio r�pido de la documentaci�n de Docker.

Para usar con Vertex�AI, tu Dockerfile debe incluir comandos que cubran las siguientes tareas:

  • Elegir una imagen base
  • Instalar dependencias adicionales
  • Copiar tu c�digo de entrenamiento en la imagen
  • Configurar el punto de entrada para Vertex AI a fin de invocar tu c�digo de entrenamiento

Tu Dockerfile podr�a incluir l�gica adicional, seg�n tus necesidades. Para obtener m�s informaci�n sobre cada instrucci�n espec�fica, consulta la referencia de Dockerfile.

Comando Dockerfile Descripci�n Ejemplos
FROM image:tag Especifica una imagen b�sica y su etiqueta.

Im�genes base de ejemplo con etiquetas:

  • pytorch/pytorch:latest
  • tensorflow/tensorflow:nightly
  • python:2.7.15-jessie
  • nvidia/cuda:9.0-cudnn7-runtime
WORKDIR /path/to/directory Especifica el directorio en la imagen en la que se ejecutan las instrucciones posteriores. /root
RUN pip install pkg1 pkg2 pkg3 Instala paquetes adicionales con pip.

Nota: Si tu imagen base no tiene pip, debes incluir un comando para instalarla antes de instalar otros paquetes.

Paquetes de ejemplo:

  • google-cloud-storage
  • cloudml-hypertune
  • pandas
COPY src/training-app.py dest/training-app.py Copia el c�digo para tu aplicaci�n de entrenamiento en la imagen. Seg�n c�mo est� estructurada tu aplicaci�n de entrenamiento, es probable que esto incluya varios archivos.

Ejemplos de nombres de archivos en tu aplicaci�n de entrenamiento:

  • model.py
  • task.py
  • data_utils.py
ENTRYPOINT ["exec", "file"] Configura el punto de entrada para invocar el c�digo de entrenamiento que se debe ejecutar. Cuando comienzas un entrenamiento personalizado, puedes anular este punto de entrada si especificas el campo command en tu ContainerSpec. Tambi�n puedes especificar el campo args en ContainerSpec para proporcionar argumentos adicionales al punto de entrada (y anular la instrucci�n CMD de la imagen del contenedor). si lo tiene). ["python", "task.py"]

La l�gica en tu Dockerfile puede variar seg�n tus necesidades, pero en general se parece al siguiente ejemplo:

# Specifies base image and tag
FROM image:tag
WORKDIR /root

# Installs additional packages
RUN pip install pkg1 pkg2 pkg3

# Downloads training data
RUN curl https://example-url/path-to-data/data-filename --output /root/data-filename

# Copies the trainer code to the docker image.
COPY your-path-to/model.py /root/model.py
COPY your-path-to/task.py /root/task.py

# Sets up the entry point to invoke the trainer.
ENTRYPOINT ["python", "task.py"]

(Opcional) C�mo ajustar tu Dockerfile para VMs de TPU

Si deseas entrenar en Vertex AI con una VM de TPU, debes ajustar tu Dockerfile para instalar versiones compiladas especialmente de las bibliotecas tensorflow y libtpu. Obt�n m�s informaci�n para ajustar tu contenedor para usarlo con una VM de TPU.

Compila la imagen del contenedor

Crea el URI de imagen correcto con las variables de entorno y, a continuaci�n, compila la imagen de Docker:

export PROJECT_ID=$(gcloud config list project --format "value(core.project)")
export REPO_NAME=REPOSITORY_NAME
export IMAGE_NAME=IMAGE_NAME
export IMAGE_TAG=IMAGE_TAG
export IMAGE_URI=us-central1-docker.pkg.dev/${PROJECT_ID}/${REPO_NAME}/${IMAGE_NAME}:${IMAGE_TAG}

docker build -f Dockerfile -t ${IMAGE_URI} ./

En estos comandos, reemplaza lo siguiente:

  • REPOSITORY_NAME: El nombre del repositorio de Artifact�Registry que creaste en la secci�n Antes de comenzar
  • IMAGE_NAME: Un nombre que elijas para la imagen de contenedor
  • IMAGE_TAG: Una etiqueta que elijas para esta versi�n de tu imagen de contenedor.

Obt�n m�s informaci�n sobre los requisitos de Artifact�Registry para nombrar tu imagen de contenedor.

Ejecuta el contenedor de forma local (opcional)

Verifica la imagen del contenedor mediante su ejecuci�n como un contenedor de forma local. Es posible que desees ejecutar tu c�digo de entrenamiento en un conjunto de datos m�s peque�o o para una cantidad de iteraciones m�s corta que la que planeas ejecutar en la IA de Vertex. Por ejemplo, si la secuencia de comandos de punto de entrada de la imagen de tu contenedor acepta una marca --epochs para controlar cu�ntos ciclos de entrenamiento se ejecutan, puedes ejecutar el siguiente comando:

docker run ${IMAGE_URI} --epochs 1

Env�a el contenedor a Artifact�Registry

Si la ejecuci�n local funciona, puedes enviar el contenedor a Artifact�Registry.

Primero, ejecuta gcloud auth configure-docker us-central1-docker.pkg.dev si a�n no lo has hecho en tu entorno de desarrollo. Luego, ejecuta el comando siguiente:

docker push ${IMAGE_URI}

Permisos de Artifact�Registry

Si usas una imagen de Artifact Registry del mismo proyecto de Google Cloud en el que usas Vertex AI, no es necesario configurar permisos. Puedes crear un trabajo de entrenamiento personalizado que use la imagen de contenedor de inmediato.

Sin embargo, si enviaste tu imagen de contenedor a Artifact Registry en un proyecto de Google Cloud diferente del proyecto en el que planeas usar Vertex AI, debes otorgar el agente del servicio de Vertex AI. para que tu proyecto de Vertex IA extraiga la imagen del otro proyecto. Obt�n m�s informaci�n sobre el agente de servicios de Vertex�AI y c�mo otorgarlo.

Artifact�Registry

Para saber c�mo otorgar acceso a tu agente de servicio de AI�Vertex a tu repositorio de Artifact�Registry, lee la documentaci�n de Artifact�Registry sobre c�mo otorgar permisos espec�ficos de repositorio.

�Qu� sigue?