Los contenedores de AI Platform Training son una función que te permite ejecutar tu aplicación dentro de una imagen de Docker. Puedes crear tu propio contenedor personalizado para ejecutar trabajos en AI Platform Training, mediante versiones y frameworks de AA, además de objetos binarios, bibliotecas y dependencias que no son de AA y, que de otro modo, no serían compatibles con AI Platform Training.
Cómo funciona el entrenamiento con contenedores
Tu aplicación de entrenamiento, implementada en el marco de trabajo de AA que hayas elegido, es el núcleo del proceso de entrenamiento.
- Crea una aplicación que entrene a tu modelo, con el marco de trabajo de AA que elijas.
- Decide si usarás un contenedor personalizado. Podría haber una versión del entorno de ejecución que ya sea compatible con tus dependencias. De lo contrario, deberás compilar un contenedor personalizado para tu trabajo de entrenamiento. En el contenedor personalizado, instala previamente la aplicación de entrenamiento y todas sus dependencias en una imagen que usarás para ejecutar el trabajo de entrenamiento.
- Almacena los datos de entrenamiento y verificación en una fuente a la que pueda acceder AI Platform Training. Por lo general, esto significa ponerlos en Cloud Storage, Bigtable o cualquier otro servicio de almacenamiento de Google Cloud asociado con el mismo proyecto de Google Cloud que usas para AI Platform Training.
- Cuando la aplicación esté lista para ejecutarse, debes compilar la imagen de Docker y enviarla a Container Registry. Asegúrate de que el servicio de AI Platform Training pueda acceder al registro.
- Envía el trabajo mediante
gcloud ai-platform jobs submit training
y especifica los argumentos en un archivoconfig.yaml
o con las marcas degcloud
correspondientes. - El servicio de entrenamiento de AI Platform Training configura recursos para tu trabajo. Asigna una o más máquinas virtuales (llamadas instancias de entrenamiento) en función de la configuración del trabajo. Para configurar una instancia de entrenamiento, usa el contenedor personalizado que especificas como parte del objeto
TrainingInput
cuando envías tu trabajo de entrenamiento. - El servicio de entrenamiento ejecuta tu imagen de Docker y pasa cualquier argumento de la línea de comandos que especifiques cuando crees el trabajo de entrenamiento.
- Puedes obtener información sobre tu trabajo en ejecución de las siguientes maneras:
- En Cloud Logging Puedes encontrar un vínculo a los registros del trabajo en la página de detalles Trabajos de AI Platform Training en la consola de Google Cloud.
- Cuando solicitas detalles del trabajo o ejecutas la transmisión de registros con la herramienta de línea de comandos de
gcloud
(en particular,gcloud ai-platform jobs stream-logs
). - Cuando haces solicitudes de estado de manera programática al servicio de entrenamiento con el método
projects.jobs.get
. Obtén más información sobre cómo supervisar los trabajos de entrenamiento.
- Cuando el trabajo de entrenamiento es correcto o encuentra un error irrecuperable, AI Platform Training detiene todos los procesos de trabajo y limpia los recursos.
Ventajas de los contenedores personalizados
Los contenedores personalizados te permiten especificar y también instalar previamente todas las dependencias que necesitas para tu aplicación.
- Menor tiempo de inicio. Si usas un contenedor personalizado con tus dependencias instaladas previamente, puedes ahorrar el tiempo que tu aplicación de entrenamiento tardaría en instalar las dependencias al momento del inicio.
- Usa el framework de AA que prefieras. Si no puedes encontrar una versión de entorno de ejecución de AI Platform Training que admita el framework de AA que deseas usar, puedes compilar un contenedor personalizado que instale el framework elegido y usarlo para ejecutar trabajos en AI Platform Training. Por ejemplo, puedes entrenar con PyTorch.
- Compatibilidad extendida con el entrenamiento distribuido. Con los contenedores personalizados, puedes realizar un entrenamiento distribuido con cualquier marco de trabajo de AA.
- Utiliza la versión más reciente. También puedes usar la última versión de compilación o menor de un marco de trabajo de AA. Por ejemplo, puedes compilar un contenedor personalizado para entrenar con
tf-nightly
.
Ajuste de hiperparámetros con contenedores personalizados
Para realizar el ajuste de hiperparámetros en AI Platform Training, debes especificar una métrica de objetivo, junto con la posibilidad de minimizarla o maximizarla. Por ejemplo, es posible que desees maximizar la exactitud del modelo o minimizar la pérdida del modelo. También puedes enumerar los hiperparámetros que deseas ajustar, junto con un valor objetivo para cada hiperparámetro. AI Platform Training realiza varias pruebas de la aplicación de entrenamiento, además de realizar el seguimiento y el ajuste de los hiperparámetros después de cada prueba. Cuando se completa el trabajo de ajuste de hiperparámetros, AI Platform Training informa los valores de la configuración más efectiva de los hiperparámetros y proporciona un resumen de cada prueba.
Para realizar ajustes de hiperparámetros con contenedores personalizados, debes hacer lo siguiente:
- En tu Dockerfile, instala
cloudml-hypertune
. - En tu código de entrenamiento:
- Usa
cloudml-hypertune
a fin de informar los resultados de cada prueba. Para ello, llama a su función auxiliar,report_hyperparameter_tuning_metric
. - Agrega argumentos de línea de comandos para cada hiperparámetro y controla el análisis de argumentos con un analizador de argumentos como
argparse
.
- Usa
- En la solicitud de trabajo, agrega un
HyperparameterSpec
al objetoTrainingInput
.
Consulta un ejemplo de entrenamiento con contenedores personalizados mediante el ajuste de hiperparámetros, o bien obtén más información sobre cómo funciona el ajuste de hiperparámetros en AI Platform Training.
Usa GPU con contenedores personalizados
Para el entrenamiento con GPU, tu contenedor personalizado debe cumplir con algunos requisitos especiales. Debes compilar una imagen de Docker diferente de la que usarías para entrenar con CPU.
- Instala previamente el kit de herramientas CUDA y cuDNN en tu imagen de Docker. El uso de la imagen
nvidia/cuda
como tu imagen base es la forma recomendada de manejar esto. Tiene las versiones coincidentes del kit de herramientas CUDA y cuDNN preinstaladas, y te ayuda a configurar las variables de entorno relacionadas de manera correcta. - Instala tu aplicación de entrenamiento, junto con tu marco de trabajo de AA requerido y otras dependencias, en tu imagen de Docker.
Consulta un ejemplo de Dockerfile para el entrenamiento con GPU.
¿Qué sigue?
- Aprende a usar contenedores personalizados para tus trabajos de entrenamiento.
- Aprende acerca del entrenamiento distribuido con contenedores personalizados.