Améliorer les performances sur un GPU partagé à l'aide de NVIDIA MPS

Si vous exécutez plusieurs processus de SDK sur un GPU Dataflow partagé, vous pouvez améliorer l'efficacité et l'utilisation du GPU en activant le service multiprocessus NVIDIA (MPS). MPS accepte le traitement simultané sur un GPU en permettant aux processus de partager des contextes CUDA et de planifier des ressources. MPS peut réduire les coûts de changement de contexte, augmenter le parallélisme et réduire les besoins en stockage.

Les workflows cibles sont des pipelines Python exécutés sur des nœuds de calcul avec plusieurs processeurs virtuels.

MPS est une technologie NVIDIA qui implémente l'API CUDA, une plate-forme NVIDIA compatible avec le calcul GPU à usage général. Pour en savoir plus, consultez le guide de l'utilisateur du service multi-processus NVIDIA.

Avantages

  • Améliore le traitement parallèle et le débit global des pipelines GPU, en particulier pour les charges de travail avec une utilisation faible des ressources GPU.
  • Amélioration de l'utilisation du GPU, ce qui peut réduire vos coûts

Compatibilité et limites

  • MPS n'est compatible qu'avec les nœuds de calcul Dataflow utilisant un seul GPU.
  • Le pipeline ne peut pas utiliser d'options qui limitent le parallélisme.
  • Évitez de dépasser la mémoire GPU disponible, en particulier pour les cas d'utilisation impliquant le chargement de grands modèles de machine learning. Équilibrez le nombre de vCPU et de processus de SDK avec la mémoire GPU disponible dont ces processus ont besoin.
  • MPS n'affecte pas la simultanéité des opérations autres que GPU.
  • Dataflow Prime n'est pas compatible avec MPS.

Activer le service MPS

Lorsque vous exécutez un pipeline avec des GPU, activez MPS en procédant comme suit :

  • Dans l'option de pipeline --dataflow_service_options, ajoutez use_nvidia_mps au paramètre worker_accelerator.
  • Définissez count sur 1.
  • N'utilisez pas l'option de pipeline --experiments=no_use_multiple_sdk_containers.

L'option de pipeline --dataflow_service_options se présente comme suit :

--dataflow_service_options="worker_accelerator=type:GPU_TYPE;count:1;install-nvidia-driver;use_nvidia_mps"

Si vous utilisez TensorFlow et activez MPS, procédez comme suit:

  1. Activez l'allocation de mémoire dynamique sur le GPU. Utilisez l'une des options TensorFlow suivantes :
    • Activez la croissance de la mémoire en appelant tf.config.experimental.set_memory_growth(gpu, True).
    • Définissez la variable d'environnement TF_FORCE_GPU_ALLOW_GROWTH sur "true".
  2. Utilisez des périphériques logiques avec des limites de mémoire appropriées.
  3. Pour des performances optimales, imposez l'utilisation du GPU si possible en utilisant l'emplacement sur l'appareil souple ou l'emplacement manuel.

Étapes suivantes