Mit NVIDIA MPS die Leistung einer gemeinsam genutzten GPU verbessern

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 Parameter worker_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:

  1. 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".
  2. Verwenden Sie logische Geräte mit entsprechenden Speicherlimits.
  3. 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