Skip to main content
QUICK REVIEW

[논문 리뷰] Low-memory GEMM-based convolution algorithms for deep neural networks

Andrew Anderson, Aravind Vasudevan|arXiv (Cornell University)|2017. 09. 08.
Advanced Neural Network Applications참고 문헌 7인용 수 44
한 줄 요약

이 논문은 깊이 신경망을 위한 두 가지 새로운 GEMM 기반 컨볼루션 알고리즘을 제안하며, 컨볼루션을 더 작은 1×1 컨볼루션의 누적으로 재구성하여 메모리 오버헤드를 극적으로 감소시킵니다. 이 방법들은 표준 im2col의 O(CHWK²) 또는 이전의 GEMM 기반 접근법의 O(CHWK)에 비해 훨씬 적은 O(MHW) 및 O(KW)의 추가 메모리만 필요하면서도 유사하거나 더 뛰어난 성능을 달성합니다. 특히 다중 코어 시스템에서 데이터 국소성의 우수함으로 인해 뛰어난 성능을 발휘합니다.

ABSTRACT

Deep neural networks (DNNs) require very large amounts of computation both for training and for inference when deployed in the field. A common approach to implementing DNNs is to recast the most computationally expensive operations as general matrix multiplication (GEMM). However, as we demonstrate in this paper, there are a great many different ways to express DNN convolution operations using GEMM. Although different approaches all perform the same number of operations, the size of temporary data structures differs significantly. Convolution of an input matrix with dimensions $C imes H imes W$, requires $O(K^2CHW)$ additional space using the classical im2col approach. More recently memory-efficient approaches requiring just $O(KCHW)$ auxiliary space have been proposed. We present two novel GEMM-based algorithms that require just $O(MHW)$ and $O(KW)$ additional space respectively, where $M$ is the number of channels in the result of the convolution. These algorithms dramatically reduce the space overhead of DNN convolution, making it much more suitable for memory-limited embedded systems. Experimental evaluation shows that our low-memory algorithms are just as fast as the best patch-building approaches despite requiring just a fraction of the amount of additional memory. Our low-memory algorithms have excellent data locality which gives them a further edge over patch-building algorithms when multiple cores are used. As a result, our low memory algorithms often outperform the best patch-building algorithms using multiple threads.

연구 동기 및 목표

  • 기존의 GEMM 기반 DNN 컨볼루션 방법에서 발생하는 높은 메모리 오버헤드 문제를 해결하기 위해, 널리 사용되는 im2col 방법이 요구하는 O(CHWK²)의 공간을 줄이는 것.
  • 임베디드 및 메모리가 제한된 시스템에 적합한 메모리 효율적인 GEMM 기반 컨볼루션 알고리즘을 설계하기 위해.
  • GEMM 기반 DNN 컨볼루션 구현에서 메모리 사용량, 계산량, 데이터 국소성 간의 상호 상충 관계를 탐색하기 위해.
  • 저메모리 GEMM 기반 알고리즘이 다중 스레딩 환경에서 고메모리 패치 빌드 방법과 비교해 성능을 동등하거나 초월할 수 있는지 평가하기 위해.

제안 방법

  • 다중 채널 다중 커널(MCMK) 컨볼루션을 K²개의 별도된 1×1 컨볼루션으로 재구성하여 각각 GEMM을 통해 처리합니다.
  • 입력 및 커널 텐서의 작은, 다루기 쉬운 블록을 처리하기 위한 타일링 전략을 사용하여 일시적 저장소 필요량을 줄입니다.
  • GEMM 호출이 전체 im2col 행렬이 아닌, 압축되고 국소화된 데이터 구조에서 작동할 수 있도록 데이터 레이아웃 변환을 적용합니다.
  • 캐시 국소성을 향상시키고 L1/L3 캐시 스탠드 사이클을 줄이기 위해 메모리 접근 패턴을 최적화합니다. 특히 다중 코어 환경에서 효과적입니다.
  • 두 가지 변형을 구현합니다: 하나는 MHW 크기의 누적에 대해 행 우선 레이아웃을 사용하는 경우(O(MHW) 공간), 다른 하나는 KW 크기의 누적에 대해 열 우선 레이아웃을 사용하는 경우(O(KW) 공간).
  • 기존의 고도로 최적화된 BLAS/GEMM 라이브러리를 활용하여 커스텀 커널 개발을 최소화하면서도 높은 계산 성능를 유지합니다.

실험 결과

연구 질문

  • RQ1고성능을 유지하면서도 일시적 메모리 사용을 크게 줄일 수 있는 GEMM 기반 컨볼루션 구현이 가능한가요?
  • RQ2메모리 프로파일을 줄이면 DNN 컨볼루션에서 데이터 국소성과 다중 코어 성능에 어떤 영향을 미치나요?
  • RQ3저메모리 GEMM 기반 알고리즘이 다중 코어 아키텍처에서 전통적인 패치 빌드 방법보다 빠르고 효율적인가요?
  • RQ4GEMM 기반 MCMK 컨볼루션에서 메모리 사용량을 최소화하기 위한 최적의 데이터 레이아웃과 타일링 전략은 무엇인가요?
  • RQ5다양한 하드웨어 플랫폼에서 im2col 및 레이지 im2col과 같은 기존 접근법과 비교해 제안된 알고리즘의 메모리 및 성능 특성은 어떻게 되나요?

주요 결과

  • 제안된 O(MHW) 및 O(KW) 메모리 알고리즘들은 일시적 메모리 사용량이 수 개의 주기 차이로 훨씬 적은데도 불구하고, 최고의 패치 빌드 기반 GEMM 기반 방법과 유사하거나 더 뛰어난 성능을 달성합니다.
  • Intel Core i7 및 ARM Cortex A57 프로세서에서 저메모리 알고리즘은 경쟁 방법보다 L1 및 L3 캐시 스탠드 사이클 수가 적었으며, 특히 kn2row-aa가 평균 스탠드 수가 가장 낮았습니다.
  • 다중 코어 환경에서는 저메모리 알고리즘의 향상된 데이터 국소성 덕분에 패치 빌드 방법보다 더 뛰어난 성능을 보였으며, 메모리 대역폭 압력 감소로 인해 종종 그들을 능가했습니다.
  • O(KW) 변형은 VGG16의 상위 레이어에서 특히 뛰어난 성능을 보였으며, 캐시 효율성 측면에서 최고의 성능을 보인 대안보다도 뛰어났습니다.
  • 실험 결과는 메모리 감소가 속도 감소를 동반하지 않으며, 메모리 효율성이 임베디드 시스템에서 고성능 추론을 가능하게 하는 핵심 요소가 될 수 있음을 확인합니다.

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

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

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

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