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 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:
- Los controladores de GPU se instalan en las VM de trabajador y son accesibles para el contenedor de Docker. Para obtener más información, lee la documentación Instala controladores de GPU.
- Las bibliotecas de GPU que requiere tu canalización, como las bibliotecas de NVIDIA CUDA-X o el kit de herramientas de CUDA de NVIDIA, se instalan en la imagen del contenedor personalizada. Para obtener más información, lee Configura tu imagen de contenedor.
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?
- Obtén más información sobre las tareas para usar GPU.
- Trabaja con el procesamiento de imágenes satelitales de Landsat con GPU.