使用 NVIDIA MPS 提升共用 GPU 的效能

如果您在共用的 Dataflow GPU 上執行多個 SDK 程序,可以啟用 NVIDIA 多程序服務 (MPS),提高 GPU 效率和使用率。MPS 可讓程序共用 CUDA 環境和排程資源,支援在 GPU 上並行處理作業。MPS 可減少環境切換成本、提高平行處理能力,並降低儲存空間需求。

目標工作流程是 Python 管道,會在具有多個 vCPU 的工作站上執行。

MPS 是 NVIDIA 技術,可實作 CUDA API (NVIDIA 平台,支援一般用途的 GPU 運算)。詳情請參閱 NVIDIA Multi-Process Service 使用者指南

優點

  • 提升 GPU 管道的平行處理和整體輸送量,特別是 GPU 資源用量較低的工作負載。
  • 提高 GPU 使用率,進而降低成本。

支援與限制

  • MPS 僅支援使用單一 GPU 的 Dataflow 工作站。
  • 管道無法使用會限制平行處理的管道選項。
  • 避免超出可用 GPU 記憶體,尤其是載入大型機器學習模型的用途。根據這些程序所需的可用 GPU 記憶體,平衡 vCPU 數量和 SDK 程序。
  • MPS 不會影響非 GPU 作業的並行。
  • Dataflow Prime 不支援 MPS。

啟用 MPS

使用 GPU 執行管道時,請執行下列操作來啟用 MPS:

  • 在管道選項 --dataflow_service_options 中,將 use_nvidia_mps 附加至 worker_accelerator 參數。
  • count 設為 1。
  • 請勿使用管道選項 --experiments=no_use_multiple_sdk_containers

管道選項 --dataflow_service_options 如下所示:

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

如果您使用 TensorFlow 並啟用 MPS,請執行下列操作:

  1. 在 GPU 上啟用動態記憶體分配。使用下列任一 TensorFlow 選項:
    • 呼叫 tf.config.experimental.set_memory_growth(gpu, True) 開啟記憶體成長。
    • 將環境變數 TF_FORCE_GPU_ALLOW_GROWTH 設為 true。
  2. 使用適當記憶體限制的邏輯裝置。
  3. 為獲得最佳效能,請盡可能使用 soft device placement手動放置,強制使用 GPU。

後續步驟