Mejora el rendimiento en una GPU compartida mediante NVIDIA MPS

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, agrega use_nvidia_mps al parámetro worker_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:

  1. 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.
  2. Usa dispositivos lógicos con límites de memoria adecuados.
  3. 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?