Skip to main content
QUICK REVIEW

[논문 리뷰] The Indirect Convolution Algorithm

Marat Dukhan|arXiv (Cornell University)|2019. 07. 03.
Advanced Neural Network Applications참고 문헌 32인용 수 28
한 줄 요약

간접 컨볼루션 알고리즘은 GEMM 기반 컨볼루션에서 메모리 집약적인 im2col 변환을 입력 텐서 행에 대한 포인터 간접 참조 버퍼로 대체함으로써, 데이터 재정렬 없이도 GEMM 유사 성능을 달성한다. 이는 im2col 저장소를 제거함으로써 메모리 오버헤드를 줄이며, 1x1가 아닌 컨볼루션에서 최대 62% 빠른 성능을 내지만, 1x1 스트라이드-1 컨볼루션에서는 소량의 오버헤드만 발생시킨다.

ABSTRACT

Deep learning frameworks commonly implement convolution operators with GEMM-based algorithms. In these algorithms, convolution is implemented on top of matrix-matrix multiplication (GEMM) functions, provided by highly optimized BLAS libraries. Convolutions with 1x1 kernels can be directly represented as a GEMM call, but convolutions with larger kernels require a special memory layout transformation - im2col or im2row - to fit into GEMM interface. The Indirect Convolution algorithm provides the efficiency of the GEMM primitive without the overhead of im2col transformation. In contrast to GEMM-based algorithms, the Indirect Convolution does not reshuffle the data to fit into the GEMM primitive but introduces an indirection buffer - a buffer of pointers to the start of each row of image pixels. This broadens the application of our modified GEMM function to convolutions with arbitrary kernel size, padding, stride, and dilation. The Indirect Convolution algorithm reduces memory overhead proportionally to the number of input channels and outperforms the GEMM-based algorithm by up to 62% on convolution parameters which involve im2col transformations in GEMM-based algorithms. This, however, comes at cost of minor performance reduction on 1x1 stride-1 convolutions.

연구 동기 및 목표

  • GEMM 기반 컨볼루션 구현에서 im2col 변환의 높은 메모리 및 대역폭 비용을 해결하기 위해.
  • 비용이 많이 드는 데이터 재조직 없이 다양한 커널 크기, 패딩, 스트라이드, 확대 비율에 대해 효율적이고 통합된 컨볼루션 계산을 가능하게 하기 위해.
  • 높은 성능를 유지하면서도 메모리 프로파일을 줄이는 GEMM 호환 프리미티브를 제공하기 위해.
  • GEMM 기반 방법의 보편성을 유지하면서도 im2col 오버헤드를 제거하는 새로운 알고리즘적 접근을 탐색하기 위해.

제안 방법

  • 각 출력 픽셀에 해당하는 입력 패치의 시작 위치를 가리키는 포인터로 이루어진 간접 참조 버퍼를 도입한다.
  • 표준 GEMM 연산을 대체해 간접 참조 버퍼를 사용해 입력 데이터에 액세스하는 수정된 GEMM 프리미티브를 사용함으로써, im2col 메모리 레이아웃 변환을 피한다.
  • 표준 GEMM 커널을 간접 인덱싱과 함께 사용함으로써 고도로 최적화된 BLAS 라이브러리와의 호환성을 유지한다.
  • im2col이 메모리 대역폭에 의해 제한되는 것과는 달리, 다중 코어에서 잘 스케일링되는 계산 중심의 GEMM 프리미티브를 사용한다.
  • 커널 크기, 패딩, 스트라이드, 확대 비율에 관계없이 알고리즘 설계를 하여 광범위한 적용 가능성을 확보한다.
  • 컨볼루션 파라미터에 따라 기존 GEMM과 간접 GEMM 간에 전환하는 하이브리드 전략을 사용해 전체 성능을 최적화한다.

실험 결과

연구 질문

  • RQ1im2col 변환을 제거하면서도 성능나 보편성을 손상시키지 않는 GEMM 기반 컨볼루션 알고리즘을 설계할 수 있는가?
  • RQ2다양한 컨볼루션 하이퍼파라미터에서 간접 참조 기반 GEMM 프리미티브의 성능이 기존 GEMM 및 im2col 기반 GEMM과 비교해 어떻게 되는가?
  • RQ3im2col 버퍼 대비 간접 참조 버퍼를 유지하는 데 드는 메모리 및 계산 오버헤드는 얼마인가?
  • RQ4계산 중심의 성격 덕분에 다중 스레드 환경에서 GEMM 기반 방법보다 간접 컨볼루션 알고리즘이 더 잘 스케일링되는가?
  • RQ5특히 더 큰 커널에 대해 현재 im2col 변환이 필요한 컨볼루션에서 상당한 성능 향상을 달성할 수 있는가?

주요 결과

  • 간접 컨볼루션 알고리즘은 im2col 변환을 제거함으로써 입력 채널 수에 비례해 메모리 오버헤드를 감소시킨다.
  • im2col 변환이 필요한 컨볼루션에서 GEMM 기반 컨볼루션보다 최대 62% 빠른 성능을 내며, 특히 더 큰 커널에서 두드러진다.
  • 1x1보다 큰 커널을 가진 컨볼루션은 메모리 대역폭 압력 감소로 인해 2.7–23.3% 범위의 성능 향상을 경험한다.
  • im2col이 필요한 1x1 스트라이드-2 컨볼루션은 캐시 국지성의 이점이 적어 0.5–8.0%의 작은 향상만 경험한다.
  • im2col이 필요 없는 1x1 스트라이드-1 컨볼루션은 추가된 간접 참조 복잡성으로 인해 0.3–1.9%의 소량의 성능 저하를 겪는다.
  • 알고리즘의 성능 이점은 시스템 산술 강도가 높을수록 증가하므로, 향후 하드웨어 세대에서 점점 더 큰 이점을 얻을 수 있다.

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

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

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

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