[논문 리뷰] Salus: Fine-Grained GPU Sharing Primitives for Deep Learning Applications
Salus는 수정되지 않은 딥러닝 워크로드를 공유 GPU에서 효율적으로 통합 실행할 수 있도록, 빠른 작업 전환과 메모리 공유라는 두 가지 세밀한 GPU 공유 원리를 도입한다. 동적 스케줄링과 메모리 팩킹을 지원함으로써 Salus는 평균 학습 작업 완료 시간을 3.19× 향상시키고, 하이퍼파rameter 튜닝의 GPU 활용도를 비공유 대비 2.38×, NVIDIA MPS 대비 7× 향상시키며, 추론 활용도를 비공유 대비 42× 향상시키며 최소한의 오버헤드를 유발한다.
GPU computing is becoming increasingly more popular with the proliferation of deep learning (DL) applications. However, unlike traditional resources such as CPU or the network, modern GPUs do not natively support fine-grained sharing primitives. Consequently, implementing common policies such as time sharing and preemption are expensive. Worse, when a DL application cannot completely use a GPU's resources, the GPU cannot be efficiently shared between multiple applications, leading to GPU underutilization. We present Salus to enable two GPU sharing primitives: fast job switching and memory sharing, in order to achieve fine-grained GPU sharing among multiple DL applications. Salus implements an efficient, consolidated execution service that exposes the GPU to different DL applications, and enforces fine-grained sharing by performing iteration scheduling and addressing associated memory management issues. We show that these primitives can then be used to implement flexible sharing policies such as fairness, prioritization, and packing for various use cases. Our integration of Salus with TensorFlow and evaluation on popular DL jobs show that Salus can improve the average completion time of DL training jobs by $3.19\ imes$, GPU utilization for hyper-parameter tuning by $2.38\ imes$, and GPU utilization of DL inference applications by $42\ imes$ over not sharing the GPU and $7\ imes$ over NVIDIA MPS with small overhead.
연구 동기 및 목표
- 딥러닝 워크로드에서 거대한 GPU 할당 방식으로 인한 GPU 저활용 문제를 해결하기 위해.
- 다양한 수정되지 않은 딥러닝 애플리케이션 간에 효율적인 시간 공유와 프리에프empt를 가능하게 하기 위해.
- 단일 GPU에 다양한 메모리 사용 패턴을 가진 작업들을 동적 메모리 분할 및 팩킹을 통해 메모리 활용도를 향상시키기 위해.
- 공유 GPU 환경에서 공정성, 우선순위 지정, 팩킹과 같은 다양한 스케줄링 정책을 유연하게 지원하기 위해.
- TensorFlow와 같은 기존 딥러닝 프레임워크와의 통합을 원활히 하되 성능 오버헤드를 최소화하기 위해.
제안 방법
- 응용 프로그램 수정 없이도 여러 딥러닝 작업 간 GPU 접근을 관리하는 통합 실행 서비스를 도입한다.
- 빠른 작업 전환 기법을 활용해 저지연성 컨텍스트 스위칭을 가능하게 하여 시간 공유 및 프리에프empt를 지원한다.
- GPU 레인 추상화를 설계해 동적 메모리 분할과 다양한 메모리 사용 패턴을 가진 작업 간 효율적인 메모리 공유를 가능하게 한다.
- 딥러닝 메모리 사용을 세 가지 유형으로 분류하고 각 유형에 맞는 맞춤형 메모리 관리 정책을 적용해 할당 효율성을 향상시킨다.
- 반복 단위 스케줄링을 사용해 작업 실행을 조율하고 GPU 자원에 대한 부하 균형을 맞춘다.
- TensorFlow와 통합하여 경량 런타임 계층을 통해 원리를 노출함으로써 성능 영향을 최소화한다.
실험 결과
연구 질문
- RQ1기존 프레임워크 수정 없이 딥러닝 워크로드에서 세밀한 GPU 공유를 효율적으로 구현할 수 있는가?
- RQ2공유 GPU에서 동적 작업 전환과 메모리 공유를 활성화할 경우 성능 및 활용도에 어떤 이점이 있는가?
- RQ3GPU 수준의 원리를 사용해 공정성, 우선순위 지정, 팩킹과 같은 민감한 스케줄링 정책을 효과적으로 구현할 수 있는가?
- RQ4기존 솔루션인 NVIDIA MPS 및 컨테이너 기반 GPU 할당과 비교했을 때 제안된 공유 메커니즘은 어떠한가?
- RQ5복잡한 딥러닝 프레임워크와의 호환성을 유지하면서 세밀한 공유를 활성화할 경우 오버헤드는 어느 정도인가?
주요 결과
- Salus는 비공유 및 비프리에프empt 스케줄링 대비 딥러닝 학습 작업의 평균 완료 시간을 3.19× 향상시킨다.
- 하이퍼파rameter 튜닝 워크로드의 GPU 활용도는 비공유 대비 2.38× 향상되었고, NVIDIA MPS 대비 7× 향상되었다.
- 추론 워크로드는 비공유 대비 42× 높은 GPU 활용도를 달성했으며, NVIDIA MPS 대비 7× 높은 활용도를 보였고, 최소한의 성능 오버헤드를 유발했다.
- Salus는 가장 나머지 시간이 짧은 작업 우선 순서(SRTF)와 같은 스케줄링 정책을 효율적으로 구현할 수 있었으며, 헤드온라인 차단 현상을 줄였다.
- TensorFlow와의 통합은 안정적이었으며, 다중 인스턴스 환경에서 NVIDIA MPS가 TensorFlow와 함께 사용할 경우 발생하는 크래시 현상과는 달리 문제가 없었다.
- Salus는 성능 평가에서 사용할 수 없을 정도로 열악한 성능을 보인 SP+MPS+OC 구성보다 뛰어난 성능을 보였다.
더 나은 연구,지금 바로 시작하세요
연구 설계부터 논문 작성까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.