如果您在共用的 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,請執行下列操作:
- 在 GPU 上啟用動態記憶體分配。使用下列任一 TensorFlow 選項:
- 呼叫
tf.config.experimental.set_memory_growth(gpu, True)
開啟記憶體成長。 - 將環境變數
TF_FORCE_GPU_ALLOW_GROWTH
設為 true。
- 呼叫
- 使用適當記憶體限制的邏輯裝置。
- 為獲得最佳效能,請盡可能使用 soft device placement 或手動放置,強制使用 GPU。
後續步驟
- 如要瞭解更多最佳做法,請參閱「GPU 和工作人員平行處理」。