Si ejecutas varios procesos del SDK en una GPU de Dataflow compartida, puedes mejorar la eficiencia y el uso de la GPU mediante la habilitación del servicio de procesos múltiples (MPS) de NVIDIA. MPS admite el procesamiento simultáneo en una GPU, ya que permite que los procesos compartan contextos de CUDA y programen recursos. MPS puede reducir los costos de cambio de contexto, aumentar el paralelismo y reducir los requisitos de almacenamiento.
Los flujos de trabajo de destino son canalizaciones de Python que se ejecutan en trabajadores con más de una CPU virtual.
MPS es una tecnología NVIDIA que implementa la API de CUDA, una plataforma de NVIDIA que admite computación de GPU de uso general. Para obtener más información, consulta la guía del usuario del servicio de procesos múltiples de NVIDIA.
Ventajas
- Mejora el procesamiento paralelo y la capacidad de procesamiento general de las canalizaciones de GPU, en especial para las cargas de trabajo con un uso bajo de recursos de GPU.
- Mejora el uso de GPU, lo que puede reducir los costos.
Asistencia y limitaciones
- MPS solo es compatible con los trabajadores de Dataflow que usan una sola GPU.
- La canalización no puede usar opciones de canalización que restringen el paralelismo.
- Evita exceder la memoria de GPU disponible, en especial para los casos de uso que implican cargar modelos de aprendizaje automático grandes. Equilibra la cantidad de procesos de CPU virtuales y SDK con la memoria de GPU disponible que necesitan estos procesos.
- MPS no afecta la simultaneidad de las operaciones que no son de GPU.
- Dataflow Prime no es compatible con MPS.
Habilita MPS
Cuando ejecutas una canalización con GPU, haz lo siguiente para habilitar MPS:
- En la opción de canalización
--dataflow_service_options
, agregause_nvidia_mps
al parámetroworker_accelerator
. - Establece
count
en 1. - No uses la opción de canalización
--experiments=no_use_multiple_sdk_containers
.
La opción de canalización --dataflow_service_options
se ve de la siguiente manera:
--dataflow_service_options="worker_accelerator=type:GPU_TYPE;count:1;install-nvidia-driver;use_nvidia_mps"
Si usas TensorFlow y habilitas MPS, haz lo siguiente:
- Habilita la asignación dinámica de memoria en la GPU. Usa cualquiera de las siguientes opciones de TensorFlow:
- Llama al
tf.config.experimental.set_memory_growth(gpu, True)
para activar el crecimiento de la memoria. - Configura la variable de entorno
TF_FORCE_GPU_ALLOW_GROWTH
como verdadera.
- Llama al
- Usa dispositivos lógicos con límites de memoria adecuados.
- Para obtener un rendimiento óptimo, aplica el uso de la GPU cuando sea posible mediante la posición de dispositivo flexible o la posición manual.
¿Qué sigue?
- Para revisar más prácticas recomendadas, consulta Paralelismo de trabajadores y GPU.