Skip to main content
QUICK REVIEW

[논문 리뷰] Automating Generation of Low Precision Deep Learning Operators

Meghan Cowan, Thierry Moreau|arXiv (Cornell University)|2018. 10. 25.
Advanced Neural Network Applications참고 문헌 18인용 수 7
한 줄 요약

이 논문은 TVM의 자동 튜닝과 코드 생성 기능을 활용하여 CPU용 고성능 저정밀도 딥러닝 연산자를 자동으로 생성하는 워크플로우를 제안한다. 라즈베리 파이 3B에서 1비트 가중치와 2비트 활성화 합성곱에 대해 16비트 정수 기준 기준보다 최대 16배 빠르며, 수작업 최적화된 ARM 커널보다 2.3배 뛰어난 성능을 기록한다.

ABSTRACT

State of the art deep learning models have made steady progress in the fields of computer vision and natural language processing, at the expense of growing model sizes and computational complexity. Deploying these models on low power and mobile devices poses a challenge due to their limited compute capabilities and strict energy budgets. One solution that has generated significant research interest is deploying highly quantized models that operate on low precision inputs and weights less than eight bits, trading off accuracy for performance. These models have a significantly reduced memory footprint (up to 32x reduction) and can replace multiply-accumulates with bitwise operations during compute intensive convolution and fully connected layers. Most deep learning frameworks rely on highly engineered linear algebra libraries such as ATLAS or Intel's MKL to implement efficient deep learning operators. To date, none of the popular deep learning directly support low precision operators, partly due to a lack of optimized low precision libraries. In this paper we introduce a work flow to quickly generate high performance low precision deep learning operators for arbitrary precision that target multiple CPU architectures and include optimizations such as memory tiling and vectorization. We present an extensive case study on low power ARM Cortex-A53 CPU, and show how we can generate 1-bit, 2-bit convolutions with speedups up to 16x over an optimized 16-bit integer baseline and 2.3x better than handwritten implementations.

연구 동기 및 목표

  • 딥러닝 프레임워크에서 CPU용 최적화된 저정밀도 연산자가 부족한 문제를 해결한다.
  • 임의의 저정밀도(1~4비트)에 적합한 효율적인 비트시리얼 연산자를 생성하여 저전력 장치에서 고성능 추론을 가능하게 한다.
  • 기본적인 비트시리얼 구현이 8비트 정수 연산조차 뒤지게 되는 성능 저하 문제를 해결한다.
  • 자동 코드 생성과 자동 튜닝이 ARM 및 X86 아키텍처에서 수작업 최적화된 커널을 뛰어넘을 수 있음을 입증한다.
  • 최소한의 엔지니어링 노력과 최대한의 이식성으로 매우 양자화된 모델(예: 1비트 가중치, 2비트 활성화)의 배포를 가능하게 한다.

제안 방법

  • TVM에 정량화된 데이터 타입과 비트 수준 연산(예: 비트 팩킹, 비트시리얼 행렬 곱셈)을 지원하도록 확장한다.
  • CPU 아키텍처 전반에서 최적의 메모리 타일링 및 벡터화 파라미터를 탐색하기 위해 TVM의 자동 튜닝 인프라를 활용한다.
  • 정량화, 비트 팩킹, 저정밀도 합성곱을 위한 융통성 있는 연산자 라이브러리와 사용자 정의 스케줄링을 구현한다.
  • 벡터화된 명령어(예: ARM NEON, X86 AVX2)와 인-place 합성곱을 활용하여 메모리 대역폭과 중복을 줄인다.
  • 저정밀도 연산을 기초 하드웨어 명령어 세트에 효율적으로 매핑하기 위해 텐서라이즈드 내부 루프 스케줄링을 적용한다.
  • X86에는 일반적인 CPU 스케줄을, ARM에는 맞춤형 스케줄을 사용하여 대상 장치에서 최고의 성능을 확보한다.

실험 결과

연구 질문

  • RQ1자동 코드 생성과 자동 튜닝을 통해 저전력 CPU에서 수작업 최적화된 구현을 뛰어넘는 저정밀도 딥러닝 연산자를 생성할 수 있는가?
  • RQ2메모리 타일링과 벡터화는 1~4비트 정밀도의 비트시리얼 합성곱 커널에서 성능에 어떤 영향을 미치는가?
  • RQ3ARM 및 X86 아키텍처에서 다양한 비트폭 조합(예: W1A1, W2A2, W4A4)에 대해 저정밀도 합성곱의 성능 스케일링 행동은 어떠한가?
  • RQ4벡터화된 popcount 및 명령어 수준의 병렬성과 같은 아키텍처 기능은 저정밀도 추론에서 달성 가능한 속도 향상에 얼마나 기여하는가?
  • RQ5단일 코드 생성 워크플로우가 최소한의 수동 튜닝으로 여러 CPU 아키텍처를 효과적으로 대상으로 삼을 수 있는가?

주요 결과

  • 제안된 워크플로우는 ARM Cortex-A53에서 1비트 가중치와 2비트 활성화 합성곱에 대해 16비트 정수 기준 기준보다 최대 16배 빠른 성능을 기록했다.
  • 라즈베리 파이 3B에서 단일 스레드 구현은 수작업 최적화된 Caffe2 초저정밀도 라이브러리보다 2.3배 빠르며, 특히 스트라이드 2인 1x1 합성곱에서 두각을 나타냈다.
  • TVM의 자동 튜닝을 통해 최적화된 타일링 파라미터 적용으로, 성능이 열악하게 최적화된 레이어를 제외한 기준 대비 1.6배 향상된 성능을 기록했다.
  • X86 아키텍처에서는 일반적인 CPU 스케줄이 32비트 부동소수점 기준 기준으로 평균 5.38배 빠른 성능(W1A1), 2.73배(W1A2), 1.69배(W2A2)의 속도 향상을 달성했다.
  • 동일한 계산 복잡도임에도 W2A2는 W1A4보다 1.3배 높은 성능을 기록하여 비트 평면 간 데이터 재사용 개선의 이점이 있음을 입증했다.
  • 라즈베리 파이에서 생성된 1비트 가중치와 2비트 활성화 연산자를 사용한 ResNet18의 엔드 투 엔드 추론은 전체 정밀도 추론 대비 3.3배 빠른 성능을 기록했다.

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

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

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

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