Descripción general del entrenamiento

Cuando uses Cloud Machine Learning Engine, puedes ejecutar tus aplicaciones de entrenamiento cd TensorFlow en la nube. En esta página, se describen los conceptos clave que necesitas para aprovechar al máximo tu modelo de entrenamiento. Si prefieres ingresar de inmediato al proceso de entrenamiento, consulta cómo comenzar un trabajo de entrenamiento.

Funcionamiento del entrenamiento

Tu aplicación de entrenamiento, implementada en Python y TensorFlow, es el núcleo del proceso de entrenamiento. Cloud ML Engine ejecuta tu trabajo de entrenamiento en recursos de computación en la nube. A continuación, se muestra una descripción general del proceso:

  1. Creas una aplicación TensorFlow que entrena tu modelo. Cloud ML Engine casi no tiene requisitos específicos de tu aplicación durante el proceso de entrenamiento, por lo que la compilas como lo harías para ejecutarse localmente en tu entorno de desarrollo.
  2. Obtienes tus datos de entrenamiento y verificación en una fuente a la que Cloud ML Engine puede acceder. Por lo general, esto significa ponerla en Cloud Storage, Cloud Bigtable o algún otro servicio de almacenamiento de Google Cloud Platform asociado con el mismo proyecto de GCP que estás usando para Cloud ML Engine.
  3. Cuando tu aplicación está lista para ejecutarse, debes empaquetarla y transferirla a un depósito de Cloud Storage al que pueda acceder tu proyecto. Esto se automatiza cuando usas la herramienta de línea de comandos de gcloud para ejecutar un trabajo de entrenamiento.
  4. El servicio de entrenamiento de Cloud ML Engine configura recursos para tu trabajo. Asigna una o más máquinas virtuales (llamadas instancias de entrenamiento) según la configuración de tu trabajo. Cada instancia de entrenamiento está configurada por las siguientes acciones:
    • Aplica la imagen de máquina estándar para la versión de Cloud ML Engine que usa tu trabajo.
    • Carga tu paquete de aplicación y después instálalo con pip.
    • Instala cualquier paquete adicional que especifiques como dependencias.
  5. El servicio de entrenamiento ejecuta tu aplicación y pasa a través de los argumentos de la línea de comandos que especifiques cuando crees el trabajo de entrenamiento.
  6. Puedes obtener información sobre tu trabajo en ejecución de las siguientes formas:
    • En Stackdriver Logging.
    • Cuando solicitas detalles del trabajo o ejecutas la transmisión de registros con la herramienta de línea de comandos de gcloud.
    • Cuando haces solicitudes de estado de manera programática al servicio de entrenamiento.
  7. Cuando tu trabajo de entrenamiento es correcto o encuentra un error irrecuperable, Cloud ML Engine detiene todos los procesos de trabajo y limpia los recursos.
Si ejecutas un TensorFlow distribuido con Cloud ML Engine, especificas varias máquinas (nodos) en un clúster de entrenamiento. El servicio de entrenamiento asigna los recursos para los tipos de máquina que especificaste y realiza el paso 4 anterior en cada uno. Tu trabajo en ejecución en un nodo dado se llama una réplica. De acuerdo con el modelo distribuido de TensorFlow, a cada réplica en el clúster de entrenamiento se le asigna una función o tarea única en el entrenamiento distribuido:

  • Exactamente una réplica se designa la instancia principal. Esta tarea administra las demás y también informa el estado del trabajo como un conjunto. El servicio de entrenamiento se ejecuta hasta que tu trabajo se complete correctamente o encuentres un error irrecuperable. En el caso distribuido, es el estado de la réplica de instancia principal la que señala el estado general del trabajo.

    Si estás ejecutando un trabajo de un solo proceso, la única réplica es la instancia principal para el trabajo.

  • Una o más réplicas pueden ser designadas como trabajadores. Estas réplicas hacen su parte del trabajo según lo designes en la configuración de tu trabajo.

  • Una o más réplicas se pueden designar como servidores de parámetros. Estas réplicas coordinan el estado del modelo compartido entre los trabajadores.

Una aplicación típica de aprendizaje automático

El servicio de entrenamiento de Cloud ML Engine está diseñado para tener el menor impacto posible en tu aplicación. Esto significa que puedes enfocarte en tu código TensorFlow para definir el modelo que deseas en lugar de limitarte a una estructura rígida.

La mayoría de las aplicaciones de aprendizaje automático realizan las siguientes acciones:

  • Proporcionan una forma de obtener datos de entrenamiento y datos de evaluación.
  • Procesan instancias de datos en lotes.
  • Usan los datos de evaluación para probar la exactitud del modelo (con qué frecuencia predice el valor correcto).
  • Proporcionan una forma de generar puntos de control a intervalos en el proceso para obtener una instantánea del progreso del modelo.
  • Proporcionan una forma de exportar el modelo entrenado cuando finaliza la aplicación.

Empaqueta tu aplicación

Antes de que puedas ejecutar tu aplicación de entrenamiento con Cloud Machine Learning Engine, debes empaquetar tu aplicación y las dependencias adicionales que necesites y subir el paquete en el depósito de Cloud Storage al que puede acceder tu proyecto de Google Cloud Platform.

La herramienta de línea de comandos de gcloud automatiza gran parte del proceso. Específicamente, puedes usar gcloud ml-engine jobs submit training para subir tu paquete de solicitud y enviar tu trabajo de entrenamiento.

Consulta las instrucciones detalladas sobre empaqueta una aplicación de entrenamiento.

Envía tu trabajo de entrenamiento

Cloud Machine Learning Engine proporciona entrenamiento de modelos como un servicio asíncrono (por lotes). Puedes enviar un trabajo de entrenamiento si ejecutas gcloud ml-engine jobs submit training desde la línea de comandos o si envías una solicitud a la API en projects.jobs.create.

Consulta las instrucciones detalladas en inicia un trabajo de entrenamiento.

ID de trabajo

Debes darle a tu trabajo de entrenamiento un nombre que cumpla con estas reglas:

  • Debe ser único dentro de tu proyecto de Google Cloud Platform.
  • Solo puede contener letras de mayúsculas y minúsculas, dígitos y guiones bajos.
  • Debe comenzar con una letra.
  • No debe tener más de 128 caracteres.

Puedes usar cualquier convención de nomenclatura de trabajo que desees. Si no ejecutas muchos trabajos, el nombre que elijas puede no ser muy importante. Si ejecutas muchos trabajos, es posible que debas encontrar tu ID de trabajo en grandes listas. Es una buena idea hacer que tus ID de trabajo sean fáciles de distinguir unos de otros.

Una técnica común es definir un nombre base para todos los trabajos asociados con un modelo dado y luego agregar una string de fecha/hora. Esta convención facilita la clasificación de las listas de trabajos por nombre, ya que todos los trabajos para un modelo se agrupan en orden ascendente.

Niveles de escala

Cuando ejecutas un trabajo de entrenamiento en Cloud ML Engine, debes especificar la cantidad y los tipos de máquinas que necesitas. Para facilitar el proceso, puedes elegir entre un conjunto de especificaciones de clúster predefinidas llamadas niveles de escala. De forma alternativa, puedes elegir un nivel personalizado y especificar los tipos de máquina tú mismo.

Para especificar un nivel de escala, agrégalo al objeto TrainingInput de la configuración de tu trabajo. Si usas el comando de gcloud para enviar tu trabajo de entrenamiento, puedes usar los mismos identificadores.

Consulta las definiciones detalladas en niveles de escala y tipos de máquinas.

Ajuste de hiperparámetros

Si deseas usar el ajuste de hiperparámetro, debes incluir los detalles de configuración cuando crees tu trabajo de entrenamiento. Consulta una guía conceptual sobre el ajuste de hiperparámetro y usa el ajuste del hiperparámetro.

Regiones y zonas

GCP usa regiones, subdivididas en zonas, para definir la ubicación geográfica de los recursos de computación físicos. Cuando ejecutas un trabajo de entrenamiento en Cloud ML Engine, especifica la región en la que deseas que se ejecute.

Si almacenas tu conjunto de datos de entrenamiento en Cloud Storage, debes ejecutar tu trabajo de entrenamiento en la misma región que el depósito de Cloud Storage que estás usando para los datos de entrenamiento. Si debes ejecutar tu trabajo en una región diferente de tu depósito de datos, tu trabajo puede tardar más.

Para ver las regiones disponibles de los servicios de Cloud ML Engine, incluido el entrenamiento de modelos y la predicción en línea o por lotes, lee la guía de regiones.

Usa job-dir como un directorio de salida común

Puedes especificar el directorio de salida para tu trabajo mediante la configuración de un directorio de trabajo cuando configuras el trabajo. Cuando envías el trabajo, Cloud ML Engine realiza las siguientes acciones:

  • Valida el directorio para que puedas solucionar cualquier problema antes de que se ejecute el trabajo.
  • Pasa la ruta de acceso a tu aplicación como un argumento de línea de comandos llamado --job-dir.

Toma en cuenta el argumento --job-dir en tu aplicación. Captura el valor del argumento cuando analices tus otros parámetros y úsalo cuando guardes el resultado de tu aplicación. Consulta la guía comienza un trabajo de entrenamiento.

Versión del entorno de ejecución

Debes especificar una versión del entorno de ejecución compatible con Cloud ML Engine para usar en tu trabajo de entrenamiento La versión de entorno de ejecución dicta las versiones de TensorFlow y otros paquetes de Python que se instalan en tus instancias de entrenamiento asignadas. Especifica una versión que te brinde la funcionalidad que necesitas. Si ejecutas el trabajo de entrenamiento tanto localmente como en la nube, asegúrate de que ambos trabajos usen la misma versión de entorno de ejecución.

Datos de entrada

Los datos que puedes usar en tu trabajo de entrenamiento deben cumplir las siguientes reglas para ejecutarse en Cloud ML Engine:

  • Los datos deben estar en un formato que puedas leer y alimentar a tu código TensorFlow.
  • Los datos deben estar en una ubicación a la que pueda acceder tu código. Generalmente, esto significa que se debe almacenar con uno de los servicios de almacenamiento de GCP o de macrodatos.

Datos salientes

Es común que las aplicaciones generen datos, incluidos los puntos de control durante el entrenamiento y un modelo guardado cuando se completa el entrenamiento. Puedes generar otros datos según lo requiera tu aplicación. Es más fácil guardar tus archivos de salida en un depósito de Cloud Storage en el mismo proyecto de GCP que tu trabajo de entrenamiento.

Crea trabajos de entrenamiento que sean resistentes a los reinicios de VM

Las VM de GCP se pueden reiniciar ocasionalmente. Debes asegurarte de que tu trabajo de entrenamiento sea resistente a estos reinicios, para ello guarda puntos de control del modelo regularmente y configura tu trabajo a fin de restablecer el punto de control más reciente.

Por lo general, los puntos de control del modelo se guardan en la ruta de acceso de Cloud Storage que especificas con el argumento --job-dir en el comando gcloud ml-engine jobs submit training.

Entrenamiento con GPU

Puedes ejecutar tus trabajos de entrenamiento en Cloud ML Engine con unidades de procesamiento de gráficos (GPU). Las GPU están diseñadas para realizar operaciones matemáticamente intensivas a alta velocidad. Pueden ser más efectivas para ejecutar ciertas operaciones en datos del tensor que agregar otra máquina con uno o más núcleos de CPU.

El servicio de entrenamiento de Cloud ML Engine no proporciona ninguna interfaz especial para trabajar con GPU. Puedes especificar máquinas habilitadas de GPU en dónde puedes ejecutar tu trabajo y el servicio las asigna para ti. Cuando especificas un tipo de máquina con acceso GPU para un tipo de tarea, cada instancia asignada a ese tipo de tarea se configura de manera idéntica (como siempre): El servicio ejecuta una única réplica de tu código en cada máquina.

Algunos modelos no se benefician de ejecutarse en GPU. Recomendamos GPU para modelos grandes y complejos que tienen muchas operaciones matemáticas. Incluso en ese caso, deberías probar el beneficio de la asistencia de GPU si ejecutas una pequeña muestra de tus datos a través del entrenamiento.

Consulta usa GPU para tu trabajo de entrenamiento.

Entrenamiento con TPU (Beta)

Puedes ejecutar tus trabajos de entrenamiento en Cloud ML Engine con Cloud TPU.

Consulta usa TPU para tu trabajo de entrenamiento.

¿Qué sigue?

¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…

Cloud ML Engine para TensorFlow