NVIDIA MPS를 사용하여 공유 GPU 성능 개선

공유 Dataflow GPU에서 다중 SDK 프로세스를 실행하는 경우 NVIDIA Multi-Process Service(MPS)를 사용 설정하여 GPU 효율성 및 사용률을 개선할 수 있습니다. MPS는 프로세스가 CUDA 컨텍스트를 공유하고 리소스를 예약할 수 있도록 하여 GPU의 동시 실행을 지원합니다. MPS는 컨텍스트 전환 비용을 줄이고 동시 로드를 늘리며 스토리지 요구사항을 줄일 수 있습니다.

타겟 워크플로는 vCPU가 2개 이상 있는 작업자에서 실행되는 Python 파이프라인입니다.

MPS는 범용 GPU 컴퓨팅을 지원하는 NVIDIA 플랫폼인 CUDA API를 구현하는 NVIDIA 기술입니다. 자세한 내용은 NVIDIA Multi-Process Service 사용자 가이드를 참조하세요.

이점

  • 특히 GPU 리소스 사용량이 낮은 워크로드에서 GPU 파이프라인의 병렬 처리 및 전반적인 처리량이 개선됩니다.
  • GPU 사용률이 개선되어 비용을 절감할 수 있습니다.

지원 및 제한 사항

  • MPS는 단일 GPU를 사용하는 Dataflow 작업자에서만 지원됩니다.
  • 파이프라인은 병렬 처리를 제한하는 파이프라인 옵션을 사용할 수 없습니다.
  • 특히 대규모 머신러닝 모델을 로드하는 작업을 포함하는 사용 사례의 경우 사용 가능한 GPU 메모리 초과를 피하세요. vCPU 및 SDK 프로세스 수와 이러한 프로세스에 필요한 사용 가능 GPU 메모리 간의 균형을 맞춥니다.
  • MPS는 GPU가 아닌 작업 동시 실행에는 영향을 미치지 않습니다.
  • Dataflow Prime은 MPS를 지원하지 않습니다.

MPS 사용 설정

GPU로 파이프라인을 실행하는 경우 다음을 수행하여 MPS를 사용 설정합니다.

  • 파이프라인 옵션 --dataflow_service_options에서 use_nvidia_mpsworker_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. 성능 최적화를 위해 가능한 경우 소프트 기기 배치 또는 수동 배치를 사용하여 GPU 사용을 시행합니다.

다음 단계