Compatibilidad de Dataflow para GPU

En esta página, se proporciona información general sobre el funcionamiento de las GPU con Dataflow.

Antes de comenzar tu trabajo de desarrollo con GPU, revisa el flujo de trabajo de los desarrolladores y las sugerencias para compilar canalizaciones con GPU descritas en Desarrolla con GPU.

Para obtener información y ejemplos sobre cómo habilitar las GPU en tus trabajos de Dataflow, consulta Usa GPU y Procesa imágenes satelitales de Landsat con GPU. Para obtener ejemplos adicionales, consulta los siguientes vínculos:

El uso de GPU en los trabajos de Dataflow te permite acelerar algunas tareas de procesamiento de datos. Las GPUs pueden realizar ciertos cálculos más rápido que las CPUs. Por lo general, estos cálculos son de álgebra numérica o lineal, a menudo usados en casos de uso de procesamiento de imágenes y aprendizaje automático. La extensión de la mejora del rendimiento varía según el caso práctico, el tipo de procesamiento y la cantidad de datos procesados.

Requisitos previos para usar GPU en Dataflow

Dataflow ejecuta el código de usuario en las VM de trabajador dentro de un contenedor de Docker. Estas VM de trabajador ejecutan Container-Optimized OS. Para que los trabajos de Dataflow usen GPU, las siguientes instalaciones deben ocurrir:

Precios

Los trabajos que usan GPU generan cargos, como se especifica en la página de precios de Dataflow.

Consideraciones

Especificaciones de tipos de máquinas

Si deseas obtener detalles sobre la compatibilidad de tipos de máquinas para cada modelo de GPU, consulta Plataformas de GPU. Las GPU compatibles con los tipos de máquinas N1 también admiten los tipos personalizados de máquinas N1.

El tipo y la cantidad de GPU definen las restricciones de límite superior para la cantidad de CPU virtuales y memoria disponibles que pueden tener los trabajadores. Consulta la sección Disponibilidad para encontrar las restricciones correspondientes.

Especificar una mayor cantidad de CPU o memoria puede requerir que especifiques una mayor cantidad de GPU.

Para obtener más detalles, lee GPU en Compute Engine.

GPU y paralelismo de trabajadores

Para las canalizaciones de Python que usan la arquitectura Runner v2, Dataflow inicia un proceso del SDK de Apache Beam por núcleo de VM. Cada proceso del SDK se ejecuta en su propio contenedor de Docker y, a su vez, genera muchos subprocesos, cada uno de los cuales procesa datos entrantes.

Las GPUs usan varias arquitecturas de procesos, y las GPUs en los trabajadores de Dataflow están visibles para todos los procesos y subprocesos. Por lo tanto, para evitar el exceso de suscripciones a la memoria de GPU, es posible que debas administrar el acceso a la GPU. Si usas TensorFlow, cualquiera de las siguientes sugerencias pueden ayudarte a evitar el exceso de suscripciones a la memoria de GPU:

  • Configura los trabajadores de Dataflow para que inicien solo un proceso en Python alojado en contenedores, sin importar el recuento de CPU virtuales de trabajador. Para realizar esta configuración cuando inicias tu trabajo, usa las siguientes opciones de canalización:

    • --experiments=no_use_multiple_sdk_containers
    • --number_of_worker_harness_threads

    Para obtener más información sobre cuántos subprocesos usar, consulta Reduce la cantidad de subprocesos.

  • Usa un tipo de máquina con una sola CPU virtual.

Cuando varios procesos de TensorFlow usan la misma GPU, es posible que debas configurar cada proceso para tomar solo una parte de la memoria de GPU. Esta configuración ayuda a evitar que todos los procesos reemplacen la memoria de GPU. Debido a que hacer que esa configuración no sea sencilla, limita la cantidad de procesos de TensorFlow.

Disponibilidad

Si deseas obtener información sobre los tipos de GPU disponibles y la configuración de VM de trabajador, consulta las ubicaciones de Dataflow.

¿Qué sigue?