Migliora le prestazioni su una GPU condivisa utilizzando NVIDIA MPS

Se esegui più processi dell'SDK su una GPU Dataflow condivisa, può migliorare l'efficienza e l'utilizzo della GPU abilitando l'architettura multi-processo NVIDIA servizio (MPS). MPS supporta l'elaborazione simultanea su una GPU consentendo ai processi di condividere contesti CUDA e risorse di pianificazione. L'MPS può ridurre i costi di commutazione del contesto, aumentare il parallelismo e ridurre i requisiti di archiviazione.

I flussi di lavoro di destinazione sono pipeline Python che vengono eseguite su worker con più di una di memoria per vCPU.

MPS è una tecnologia NVIDIA che implementa l'API CUDA, una piattaforma NVIDIA che supporta il computing GPU per uso generico. Per ulteriori informazioni, consulta Guida dell'utente del servizio multi-processo NVIDIA.

Vantaggi

  • Migliora l'elaborazione parallela e la velocità effettiva complessiva per le pipeline GPU, in particolare per carichi di lavoro con un ridotto utilizzo di risorse GPU.
  • Migliora l'utilizzo della GPU, il che potrebbe ridurre i costi.

Supporto e limitazioni

  • MPS è supportato solo sui worker Dataflow che utilizzano una singola GPU.
  • La pipeline non può utilizzare opzioni che limitano il parallelismo.
  • Evita di superare la memoria GPU disponibile, in particolare per i casi d'uso che richiedono il caricamento di modelli di machine learning di grandi dimensioni. Bilancia il numero di vCPU e i processi SDK con la memoria GPU disponibile necessaria per questi processi.
  • MPS non influisce sulla contemporaneità delle operazioni non GPU.
  • Dataflow Prime non supporta MPS.

Abilita MPS

Quando esegui una pipeline con GPU, abilita MPS nel seguente modo:

  • Nell'opzione pipeline --dataflow_service_options, aggiungi use_nvidia_mps al parametro worker_accelerator.
  • Imposta count su 1.
  • Non utilizzare l'opzione pipeline --experiments=no_use_multiple_sdk_containers.

L'opzione pipeline --dataflow_service_options è simile alla seguente:

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

Se usi TensorFlow e abiliti MPS, segui questi passaggi:

  1. Abilita l'allocazione della memoria dinamica sulla GPU. Utilizza una delle seguenti opzioni di TensorFlow:
    • Attiva la crescita della memoria chiamando il numero tf.config.experimental.set_memory_growth(gpu, True).
    • Imposta la variabile di ambiente TF_FORCE_GPU_ALLOW_GROWTH su true.
  2. Utilizza dispositivi logici con limiti di memoria appropriati.
  3. Per un rendimento ottimale, se possibile, forza l'uso della GPU utilizzando il posizionamento dei dispositivi flessibile o il posizionamento manuale.

Passaggi successivi