Compatibilidad de Dataflow para GPU

En esta página, se proporciona información general sobre el funcionamiento de las GPU con Dataflow. 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.

El uso de GPU en los trabajos de Dataflow te permite acelerar algunas tareas de procesamiento de datos. Las GPU pueden realizar ciertos cálculos más rápido que las CPU. Estos cálculos suelen ser de álgebra numérica o lineal, como los de procesamiento de imágenes y casos prácticos de 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

Las GPU son compatibles con los tipos de máquina N1, incluidos 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.

Debido a esta arquitectura de procesos múltiples y al hecho de que las GPU en los trabajadores de Dataflow están visibles para todos los procesos y subprocesos, a fin de evitar el exceso de suscripciones a la memoria GPU, es posible que se requiera una administración deliberada de acceso de 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 configurar esto, cuando inicies tu trabajo, usa la opción de canalización --experiments=no_use_multiple_sdk_containers.
  • 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, de modo que todos los procesos no se suscriban en exceso a la memoria de GPU. Debido a que crear esta configuración no es sencillo, te recomendamos limitar la cantidad de procesos de TensorFlow como se sugirió anteriormente.

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?