Skip to main content
QUICK REVIEW

[논문 리뷰] Nimble: Lightweight and Parallel GPU Task Scheduling for Deep Learning

Woosuk Kwon, Gyeong-In Yu|arXiv (Cornell University)|2020. 12. 04.
Advanced Neural Network Applications인용 수 15
한 줄 요약

Nimble는 딥러닝을 위한 경량이며 병렬 처리 가능한 GPU 작업 스케줄러로, 사전 스케줄링(AoT)을 통해 스케줄링 오버헤드를 제거하고, 자동 다중 스트림 스케줄링을 통해 독립적인 GPU 작업을 동시 실행할 수 있도록 한다. 다양한 모델에서 추론과 학습을 각각 최대 22.34배와 3.61배 빠르게 하여 PyTorch, TensorRT, TVM를 뛰어넘는 성능을 발휘한다.

ABSTRACT

Deep learning (DL) frameworks take advantage of GPUs to improve the speed of DL inference and training. Ideally, DL frameworks should be able to fully utilize the computation power of GPUs such that the running time depends on the amount of computation assigned to GPUs. Yet, we observe that in scheduling GPU tasks, existing DL frameworks suffer from inefficiencies such as large scheduling overhead and unnecessary serial execution. To this end, we propose Nimble, a DL execution engine that runs GPU tasks in parallel with minimal scheduling overhead. Nimble introduces a novel technique called ahead-of-time (AoT) scheduling. Here, the scheduling procedure finishes before executing the GPU kernel, thereby removing most of the scheduling overhead during run time. Furthermore, Nimble automatically parallelizes the execution of GPU tasks by exploiting multiple GPU streams in a single GPU. Evaluation on a variety of neural networks shows that compared to PyTorch, Nimble speeds up inference and training by up to 22.34$ imes$ and 3.61$ imes$, respectively. Moreover, Nimble outperforms state-of-the-art inference systems, TensorRT and TVM, by up to 2.81$ imes$ and 1.70$ imes$, respectively.

연구 동기 및 목표

  • 작은 GPU 작업에 대해 런타임에서 지배적인 스케줄링 오버헤드를 유발하는 기존 딥러닝 프레임워크의 문제를 해결하기 위해.
  • NAS 및 병렬 레이어 아키텍처와 같은 현대 신경망에서의 상호 연산자 병렬성을 활용하기 위해, 현재 프레임워크에서 미사용되고 있는 잠재력을 극대화하기 위해.
  • 실행 이전에 GPU 작업을 사전 스케줄링하여 런타임 스케줄링 오버헤드를 제거하기 위해.
  • 단일 GPU 내에서 다수의 CUDA 스트림을 사용해 효율적이고 자동으로 GPU 작업을 병행 실행할 수 있도록 하기 위해.
  • 특히 스케줄링 오버헤드가 가장 영향을 미치는 소형 배치 또는 저해상도 입력 환경에서 추론 및 학습 성능을 향상시키기 위해.

제안 방법

  • 사전 스케줄링(AoT) 도입: GPU 작업 스케줄링을 실행 이전에 한 번만 수행하여 런타임과 분리한다.
  • 사전 처리 단계에서 모든 GPU 작업의 제출 순서, 함수 인자, 자원 의존성을 인코딩한 작업 스케줄을 생성한다.
  • 런타임에선 사전에 생성된 스케줄에 기반해 GPU 작업을 직접 제출함으로써 스케줄링 로직을 건너뛰고 오버헤드를 감소시킨다.
  • 의존성 인식 기반의 스트림 할당 알고리즘을 사용해 독립적인 GPU 작업을 자동으로 다수의 CUDA 스트림에 할당한다.
  • 트레이스 기반 분석을 활용해 독립적인 연산자를 식별하고, 스트림 간 동시 실행을 위한 스케줄링을 수행한다.
  • 정적 신경망 아키텍처 및 입력 크기 정보를 활용해 최적의 스케줄링 및 스트림 매핑을 사전에 계산한다.

실험 결과

연구 질문

  • RQ1사전 스케줄링(AoT)이 딥러닝 프레임워크에서 런타임 스케줄링 오버헤드를 제거할 수 있는가?
  • RQ2현대 신경망에서 상호 연산자 병렬성을 얼마나 잘 활용할 수 있는가? 이는 GPU 작업 실행 가속에 얼마나 기여하는가?
  • RQ3다중 CUDA 스트림을 통한 병행 실행은 현대 GPU에서 추론 및 학습 성능에 어떻게 기여하는가?
  • RQ4스케줄링 오버헤드는 소형 배치 및 저해상도 학습 워크로드에 어떤 영향을 미치는가?
  • RQ5경량이며 자동화된 스케줄러는 기존 최첨단 추론 및 학습 시스템을 뛰어넘을 수 있는가?

주요 결과

  • Nimble는 PyTorch 대비 딥러닝 추론에서 최대 22.34배의 성능 향상을 기록하며, 많은 소형 GPU 작업을 포함한 모델에서 뚜렷한 성능 향상을 보였다.
  • 학습 워크로드에서는 CIFAR-10과 같은 곳에서 스케줄링 오버헤드가 가장 두드러지는 소형 배치 및 저해상도 입력에 대해 최대 3.61배의 성능 향상을 달성했다.
  • 추론 워크로드에서 Nimble는 TensorRT 대비 최대 2.81배, TVM 대비 최대 1.70배 빠르게 하여 뛰어난 스케줄링 효율성을 입증했다.
  • AoT 스케줄링 기법은 스케줄링 오버헤드를 거의 제로 수준으로 낮춰 짧은 지속 시간의 GPU 작업에도 영향을 거의 주지 않는다.
  • 다중 스트림 실행은 독립적인 연산자 간의 효과적인 병렬화를 가능하게 하며, NASNet-A 및 DARTS와 같이 높은 상호 연산자 동시성 특성을 지닌 모델에서 특히 유리하다.
  • ImageNet 및 BERT와 같은 대용량 배치 학습 워크로드에서는 성능 향상이 다소 미약한 편이었으며, 이는 이러한 워크로드에서는 스케줄링 오버헤드가 덜 지배적이므로 확인된다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.