Descripción general de los contenedores

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.

  1. Crea una aplicación que entrene el modelo, con el framework de AA que elijas.
  2. 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.
  3. Almacena los datos de entrenamiento y verificación en una fuente a la que pueda acceder AI Platform Training. Por regla general, esto significa ponerlos en Cloud Storage, Cloud Bigtable o algún otro servicio de almacenamiento de Google Cloud asociado con el mismo proyecto de Google Cloud que usas para AI Platform Training.
  4. 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.
  5. Envía el trabajo mediante gcloud ai-platform jobs submit training y especifica los argumentos en un archivo config.yaml o con las marcas de gcloud correspondientes.
  6. 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.
  7. 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.
  8. Puedes obtener información sobre tu trabajo en ejecución de las siguientes maneras:
  9. 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 las dependencias preinstaladas, puedes ahorrar el tiempo que la aplicación de entrenamiento tardaría en instalar las dependencias cuando se inicia.
  • 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 una versión anterior de un marco de trabajo de AA. Por ejemplo, puedes compilar un contenedor personalizado para entrenar con tf-nightly o, también, obtener una vista previa de TensorFlow 2.0.

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 la línea de comandos para cada hiperparámetro y controla el análisis de argumentos con un analizador de argumentos como argparse.
  • En la solicitud de trabajo, agrega un HyperparameterSpec al objeto TrainingInput.

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 la aplicación de entrenamiento, junto con el marco de trabajo de AA necesario y otras dependencias, en la imagen de Docker.

Consulta un ejemplo de Dockerfile para el entrenamiento con GPU.

Próximos pasos