Se esegui più processi SDK su una GPU Dataflow condivisa, puoi migliorare l'efficienza e l'utilizzo della GPU abilitando NVIDIA Multi-Process Service (MPS). MPS supporta l'elaborazione simultanea su una GPU, consentendo ai processi di condividere contesti CUDA e pianificazione delle risorse. MPS può ridurre i costi del cambio di contesto, aumentare il parallelismo e ridurre i requisiti di archiviazione.
I flussi di lavoro di destinazione sono pipeline Python in esecuzione su worker con più di una vCPU.
MPS è una tecnologia NVIDIA che implementa l'API CUDA, una piattaforma NVIDIA che supporta il GPU computing generico. Per ulteriori informazioni, consulta la 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 i carichi di lavoro con un utilizzo ridotto delle risorse GPU.
- Migliora l'utilizzo della GPU, che potrebbe ridurre i costi.
Assistenza e limitazioni
- MPS è supportato solo sui worker Dataflow che utilizzano una singola GPU.
- La pipeline non può utilizzare opzioni di pipeline che limitano il parallelismo.
- Evita di superare la memoria GPU disponibile, soprattutto per i casi d'uso che prevedono il caricamento di modelli di machine learning di grandi dimensioni. Bilancia il numero di vCPU e di 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 procedendo nel seguente modo:
- Nell'opzione della pipeline
--dataflow_service_options
, aggiungiuse_nvidia_mps
al parametroworker_accelerator
. - Imposta
count
su 1. - Non utilizzare l'opzione pipeline
--experiments=no_use_multiple_sdk_containers
.
L'opzione pipeline --dataflow_service_options
ha il seguente aspetto:
--dataflow_service_options="worker_accelerator=type:GPU_TYPE;count:1;install-nvidia-driver;use_nvidia_mps"
Se utilizzi TensorFlow e abiliti MPS:
- Abilita l'allocazione della memoria dinamica sulla GPU. Utilizza una delle seguenti opzioni di TensorFlow:
- Attiva l'aumento della memoria chiamando
tf.config.experimental.set_memory_growth(gpu, True)
. - Imposta la variabile di ambiente
TF_FORCE_GPU_ALLOW_GROWTH
su true.
- Attiva l'aumento della memoria chiamando
- Usa dispositivi logici con limiti di memoria appropriati.
- Per ottenere prestazioni ottimali, quando possibile applica l'utilizzo della GPU mediante il posizionamento del soft device o il posizionamento manuale.
Passaggi successivi
- Per esaminare altre best practice, consulta GPU e parallelismo dei worker.