Si ejecutas varios procesos del SDK en una GPU de Dataflow compartida, puedes mejorar la eficiencia y el uso de la GPU habilitando el servicio multiproceso (MPS) de NVIDIA. MPS admite el procesamiento simultáneo en una GPU al permitir que los procesos compartan contextos de CUDA y recursos de programación. MPS puede reducir los costes de cambio de contexto, aumentar el paralelismo y reducir los requisitos de almacenamiento.
Los flujos de trabajo de destino son pipelines de Python que se ejecutan en trabajadores con más de una vCPU.
MPS es una tecnología de NVIDIA que implementa la API de CUDA, una plataforma de NVIDIA que admite la computación con GPUs de uso general. Para obtener más información, consulta la guía de usuario del servicio multiproceso de NVIDIA.
Ventajas
- Mejora el procesamiento paralelo y el rendimiento general de las canalizaciones de GPU, especialmente en cargas de trabajo con un uso bajo de recursos de GPU.
- Mejora el uso de la GPU, lo que puede reducir los costes.
Compatibilidad y limitaciones
- MPS solo se admite en los trabajadores de Dataflow que usan una sola GPU.
- El flujo de trabajo no puede usar opciones que restrinjan el paralelismo.
- Evita superar la memoria de GPU disponible, sobre todo en los casos prácticos que impliquen cargar modelos de aprendizaje automático grandes. Equilibra el número de vCPUs y procesos del SDK con la memoria de GPU disponible que necesitan estos procesos.
- MPS no afecta a la simultaneidad de las operaciones que no son de GPU.
- Dataflow Prime no admite MPS.
Habilitar MPS
Cuando ejecutas una canalización con GPUs, habilita MPS haciendo lo siguiente:
- En la opción de la cadena
--dataflow_service_options
, añadeuse_nvidia_mps
al parámetroworker_accelerator
. - Define
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
tiene el siguiente aspecto:
--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 una de las siguientes opciones de TensorFlow:
- Activa el crecimiento de la memoria llamando al
tf.config.experimental.set_memory_growth(gpu, True)
. - Define la variable de entorno
TF_FORCE_GPU_ALLOW_GROWTH
como true.
- Activa el crecimiento de la memoria llamando al
- Usa dispositivos lógicos con límites de memoria adecuados.
- Para obtener un rendimiento óptimo, fuerza el uso de la GPU siempre que sea posible mediante la colocación flexible de dispositivos o la colocación manual.
Siguientes pasos
- Para consultar más prácticas recomendadas, consulta GPUs and worker parallelism (GPUs y paralelismo de los trabajadores).