Skip to main content
QUICK REVIEW

[논문 리뷰] cuDNN: Efficient Primitives for Deep Learning

Sharan Chetlur, Cliff Woolley|arXiv (Cornell University)|2014. 10. 03.
Parallel Computing and Optimization Techniques참고 문헌 16인용 수 1,026
한 줄 요약

cuDNN는 딥러닝 워크로드를 위한 고성능 GPU 최적화 라이브러리로, 컨볼루션, 풀링, 활성화 함수 등의 저수준 프리미티브를 제공합니다. 고도로 최적화된 커널과 최소한의 보조 메모리 메모리를 활용함으로써 학습과 추론을 가속화하며, Caffe에서 36%의 성능 향상을 달성하고 메모리 사용량을 줄이며, 기존 딥러닝 프레임워크인 Caffe와 PaddlePaddle에 쉽게 통합할 수 있습니다.

ABSTRACT

We present a library of efficient implementations of deep learning primitives. Deep learning workloads are computationally intensive, and optimizing their kernels is difficult and time-consuming. As parallel architectures evolve, kernels must be reoptimized, which makes maintaining codebases difficult over time. Similar issues have long been addressed in the HPC community by libraries such as the Basic Linear Algebra Subroutines (BLAS). However, there is no analogous library for deep learning. Without such a library, researchers implementing deep learning workloads on parallel processors must create and optimize their own implementations of the main computational kernels, and this work must be repeated as new parallel processors emerge. To address this problem, we have created a library similar in intent to BLAS, with optimized routines for deep learning workloads. Our implementation contains routines for GPUs, although similarly to the BLAS library, these routines could be implemented for other platforms. The library is easy to integrate into existing frameworks, and provides optimized performance and memory usage. For example, integrating cuDNN into Caffe, a popular framework for convolutional networks, improves performance by 36% on a standard model while also reducing memory consumption.

연구 동기 및 목표

  • HPC 분야의 BLAS와 유사한 표준화되고 고도로 최적화된 딥러닝 프리미티브 라이브러리의 부재를 해결하기 위해.
  • 컨볼루션과 풀링과 같은 핵심 연산의 이식 가능하고 고성능의 구현을 제공함으로써 딥러닝 프레임워크의 부담을 줄이기 위해.
  • 프레임워크 개발자가 커널을 수동으로 재최적화할 필요 없이 변화하는 GPU 아키텍처 간의 성능 이식성(Performance Portability)을 가능하게 하기 위해.
  • 다양한 워크로드, 특히 작은 미니배치 크기의 경우에도 메모리 오버헤드를 최소화하고 처리량을 극대화하기 위해.
  • 유연한 데이터 레이아웃과 기존 딥러닝 프레임워크에 모델 스키마나 데이터 구조를 변경하지 않고도 원활한 통합을 가능하게 하기 위해.

제안 방법

  • 라이브러리는 텐서와 필터에 대한 추상화된 디스크립터를 제공하는 C 언어 API를 제공하여, 다양한 프레임워크와의 통합을 가능하게 합니다. 이는 임의의 스트라이드와 데이터 레이아웃을 지원합니다.
  • 단일 정밀도와 双정밀도 모두에서 컨볼루션, 풀링, 활성화 함수의 순방향 및 역방향 전파를 최적화된 루틴으로 노출합니다.
  • 컨볼루션 연산의 기초로 고도로 최적화된 GEMM(일반 행렬 곱셈) 커널을 사용함으로써 GPU 아키텍처에서 높은 성능을 달성합니다.
  • 보조 버퍼를 방지함으로써 메모리 사용량을 최소화하고, 데이터는 사용자 제어의 GPU 메모리 버퍼를 직접 관리합니다.
  • 유연한 텐서 변환과 서브텐서 인덱싱을 지원하여, 비정사각형 입력과 비대칭 패딩의 효율적 처리가 가능합니다.
  • 표준 프레임워크 레이어의 드롭인 대체를 통해 통합이 이루어지며, 필요에 따라 자동으로 네이티브 구현으로의 포워드백을 지원합니다.

실험 결과

연구 질문

  • RQ1최적화된 딥러닝 프리미티브 라이브러리는 어떻게 딥러닝 프레임워크의 성능과 메모리 효율성을 향상시킬 수 있는가?
  • RQ2기존 모델 아키텍처나 데이터 레이아웃을 변경하지 않고도 GPU 최적화 라이브러리가 다양한 딥러닝 워크로드에서 상당한 성능 향상을 달성할 수 있는가?
  • RQ3이러한 라이브러리가 변화하는 GPU 하드웨어 플랫폼 간의 성능 이식성을 어느 정도 향상시킬 수 있는가?
  • RQ4라이브러리의 최소한의 메모리 사용량이 더 큰 모델과 더 큰 미니배치 크기의 학습 능력에 어떤 영향을 미치는가?
  • RQ5Caffe와 PaddlePaddle와 같은 기존 프레임워크에 최소한의 엔지니어링 오버헤드로 효과적으로 통합될 수 있는가?

주요 결과

  • NVIDIA Tesla K40 GPU를 사용하여 bvlc_reference_caffenet 모델에 cuDNN을 통합함으로써 Caffe의 전체 학습 시간이 36% 향상되었습니다.
  • 순방향 전파에서 1.45배, 역방향 전파에서 1.30배, 테스트에서 1.49배의 성능 향상이 있었으며, 학습 단계 전반에 걸쳐 일관된 성능 향상을 보였습니다.
  • 행렬 곱셈 기반 구현 대비 메모리 소비가 감소하여 더 큰 모델과 더 큰 미니배치 크기를 지원할 수 있게 되었습니다.
  • Tesla K10 GPU에서 Baidu의 PaddlePaddle 프레임워크에서 행렬 곱셈 기반 컨볼루션 구현 대비 평균 30%의 성능 향상을 달성했습니다.
  • 탄성 디스크립터 기반 인터페이스 덕분에 모델 스키마나 데이터 구조 레이아웃을 변경하지 않고도 기존 프레임워크에 원활하게 통합될 수 있었습니다.
  • 비정사각형 입력과 비대칭 패딩을 포함한 다양한 입력 크기와 구성에 대해 넓은 범위를 지원하며, 특히 음성 및 자연어 처리 분야에서 유용합니다.

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

연구 설계부터 논문 작성까지, 연구 시간을 획기적으로 줄여보세요.

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

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