Wenn Sie mehrere SDK-Prozesse auf einer freigegebenen Dataflow-GPU ausführen, können Sie die GPU-Effizienz und -Auslastung verbessern, indem Sie den NVIDIA Multi-Process-Dienst (MPS) aktivieren. MPS unterstützt die gleichzeitige Verarbeitung auf einer GPU, da Prozesse die Freigabe von CUDA-Kontexten und die Planung von Ressourcen aktivieren. MPS kann die Kosten für den Kontextwechsel, die Parallelität und die Senkung des Speicherbedarfs reduzieren.
Zielworkflows sind Python-Pipelines, die auf Workern mit mehr als einer vCPU ausgeführt werden.
MPS ist eine NVIDIA-Technologie, die die CUDA API implementiert, eine NVIDIA-Plattform, die allgemeines GPU-Computing unterstützt. Weitere Informationen finden Sie im NVIDIA Multi-Process Service-Nutzerhandbuch.
Vorteile
- Verbessert die parallele Verarbeitung und den Gesamtdurchsatz für GPU-Pipelines, insbesondere für Arbeitslasten mit niedriger GPU-Ressourcennutzung.
- Verbessert die GPU-Auslastung, wodurch Ihre Kosten gesenkt werden können.
Unterstützung und Einschränkungen
- MPS wird nur auf Dataflow-Workern unterstützt, die eine einzelne GPU verwenden.
- Die Pipeline kann keine Pipelineoptionen verwenden, die die Parallelität einschränken.
- Vermeiden Sie die Überschreitung des verfügbaren GPU-Arbeitsspeichers, insbesondere für Anwendungsfälle, bei denen große Modelle für maschinelles Lernen geladen werden. Wägen Sie die Anzahl der vCPUs und SDK-Prozesse mit dem verfügbaren GPU-Speicher ab, den diese Prozesse benötigen.
- MPS wirkt sich nicht auf die Gleichzeitigkeit von Nicht-GPU-Vorgängen aus.
- Dataflow Prime unterstützt MPS nicht.
MPS aktivieren
Wenn Sie eine Pipeline mit GPUs ausführen, aktivieren Sie MPS so:
- Hängen Sie in der Pipeline-Option
--dataflow_service_options
use_nvidia_mps
an den Parameterworker_accelerator
an. - Legen Sie den Wert
count
auf 1 fest. - Verwenden Sie nicht die Pipeline-Option
--experiments=no_use_multiple_sdk_containers
.
Die Pipelineoption --dataflow_service_options
sieht so aus:
--dataflow_service_options="worker_accelerator=type:GPU_TYPE;count:1;install-nvidia-driver;use_nvidia_mps"
Wenn Sie TensorFlow verwenden und MPS aktivieren, gehen Sie so vor:
- Aktivieren Sie die dynamische Speicherzuweisung auf der GPU. Verwenden Sie eine der folgenden TensorFlow-Optionen:
- Aktivieren Sie das Arbeitsspeicherwachstum durch Aufrufen von
tf.config.experimental.set_memory_growth(gpu, True)
. - Setzen Sie die Umgebungsvariable
TF_FORCE_GPU_ALLOW_GROWTH
auf "true".
- Aktivieren Sie das Arbeitsspeicherwachstum durch Aufrufen von
- Verwenden Sie logische Geräte mit entsprechenden Speicherlimits.
- Für eine optimale Leistung sollten Sie die Verwendung der GPU nach Möglichkeit mithilfe der weichen Geräteplatzierung oder der manuellen Platzierung erzwingen.
Nächste Schritte
- Weitere Best Practices finden Sie unter GPUs und Worker-Parallelität.