[논문 리뷰] daBNN: A Super Fast Inference Framework for Binary Neural Networks on ARM devices
daBNN은 ARM 디바이스에서 이진 신경망(BNNs)을 위한 고도로 최적화된 오픈소스 추론 프레임워크로, C++ 및 ARM 어셈블리에서 커스텀 비트 패킹, 이진 직접 컨볼루션, 메모리 레이아웃 최적화를 활용한다. daBNN은 단일 이진 컨볼루션에서 BMXNet 대비 7×–23× 빠르고, TensorFlow Lite 대비 8×–10× 빠르며, Bi-Real Net 18에서는 아키텍처적 개선 덕분에 30%의 성능 향상을 기록한다. 이는 높은 효율성 덕분에 가능했다.
It is always well believed that Binary Neural Networks (BNNs) could drastically accelerate the inference efficiency by replacing the arithmetic operations in float-valued Deep Neural Networks (DNNs) with bit-wise operations. Nevertheless, there has not been open-source implementation in support of this idea on low-end ARM devices (e.g., mobile phones and embedded devices). In this work, we propose daBNN --- a super fast inference framework that implements BNNs on ARM devices. Several speed-up and memory refinement strategies for bit-packing, binarized convolution, and memory layout are uniquely devised to enhance inference efficiency. Compared to the recent open-source BNN inference framework, BMXNet, our daBNN is $7\ imes$$\\sim$$23\ imes$ faster on a single binary convolution, and about $6\ imes$ faster on Bi-Real Net 18 (a BNN variant of ResNet-18). The daBNN is a BSD-licensed inference framework, and its source code, sample projects and pre-trained models are available on-line: https://github.com/JDAI-CV/dabnn.
연구 동기 및 목표
- 모바일 기기 및 임베디드 시스템과 같은 저성능 ARM 디바이스에 대해 빠르고 오픈소스인 BNN 추론 프레임워크가 부족한 문제를 해결하기 위해.
- BMXNet과 같은 기존 BNN 프레임워크가 ARM에서 정밀도가 전체인 추론보다 느린 성능 장벽을 극복하기 위해.
- 고속, 오픈소스 추론 백엔드를 제공함으로써 BNN의 효율적 배포 및 아키텍처 탐색을 가능하게 하기 위해.
- 수동 최적화된 어셈블리와 SIMD 명령어를 사용해 ARM CPU 전용으로 비트 패킹, 이진 컨볼루션, 메모리 액세스 패턴을 최적화하기 위해.
- ONNX에서 daBNN 형식으로의 모델 변환을 지원함으로써, 커스텀 연산자 없이도 프레임워크 간 호환성 있는 BNN 배포를 가능하게 하기 위해.
제안 방법
- 32비트 정수의 부호 비트와 SIMD 오른쪽 시프트 및 오버라이트 명령어를 활용해 다수의 1비트 요소를 동시에 패킹하는 업그레이드된 비트 패킹 기법을 제안하여, 난이도 높은 방법 대비 약 4배의 지연 감소를 달성한다.
- BGEMM에서 불필요한 'addv' 명령어를 제거하기 위해 '이진 직접 컨볼루션'을 도입하여, XNOR 및 popcount 연산을 통해 직접 이진 내적을 계산한다.
- 이진 텐서의 데이터 국소성과 정렬을 향상시켜 메모리 액세스 오버헤드를 줄이는 새로운 메모리 레이아웃을 구현한다.
- 핵심 연산자를 C++로 구현하고 수동 최적화된 ARM 어셈블리로 구현하며, Java 바인딩과 안드로이드 패키징을 통해 모바일 배포를 지원한다.
- 비트 패킹된 가중치를 가진 ONNX 모델을 daBNN 형식으로 변환하는 onnx2bnn 도구를 개발하여 Sign 연산자를 통해 이진 텐서를 탐지하고, 표준 ONNX 연산자만을 사용해 프레임워크 종속적 커스텀 레이어 없이도 변환 가능하도록 한다.
- 융합된 BatchNorm 및 이진화 레이어를 지원하며, 표준 ONNX 연산자만을 사용해 프레임워크 간 상호운용성을 확보한다.
실험 결과
연구 질문
- RQ1고도로 최적화된 오픈소스 BNN 추론 프레임워크는 저성능 ARM 디바이스에서 초고속 추론을 달성할 수 있는가?
- RQ2부호 비트와 SIMD 명령어를 활용한 최적화된 비트 패킹은 난이도 높은 순차적 패킹 대비 BNN 추론 속도를 얼마나 향상시키는가?
- RQ3이진 직접 컨볼루션은 BGEMM 구현에서 'addv' 명령어를 사용하는 전통적 방식보다 성능이 뛰어나게 되는가?
- RQ4고성능 백엔드를 사용할 경우, 아키텍처 수정(예: 7×7 컨볼루션 교체)이 BNN 추론 속도에 얼마나 기여하는가?
- RQ5빠른 추론 프레임워크는 기존에 느린 백엔드에서는 구현이 어려운 새로운 효율적인 BNN 아키텍처 설계를 가능하게 하는가?
주요 결과
- daBNN은 단일 이진 컨볼루션에서 BMXNet 대비 7×–23× 빠르며, BMXNet이 유일한 오픈소스 BNN 프레임워크임을 감안할 때 놀라운 성능 향상을 보였다.
- daBNN은 단일 이진 컨볼루션에서 정밀도가 전체인 TensorFlow Lite 대비 8×–10× 빠르며, 이는 ARM에서 BNN이 정밀도가 전체인 모델보다도 빠를 수 있음을 입증한다.
- Bi-Real Net 18에서 daBNN은 BMXNet 대비 약 6배, TensorFlow Lite 대비 3배 빠르며, 실제 BNN에서의 우수성을 확인한다.
- Bi-Real Net 18의 첫 번째 7×7 컨볼루션을 STEM 모듈로 교체하면 Google Pixel 1에서 정확도 저하 없이 약 30%의 성능 향상이 가능하며, 이는 daBNN의 고성능 덕분에만 실현 가능했다.
- onnx2bnn 변환 도구를 통해 텐서플로우 및 파이토치에서 훈련한 BNN을 daBNN로 원활하게 배포할 수 있으며, BMXNet처럼 커스텀 연산자에 의존하지 않는다.
- daBNN의 오픈소스 BSD 라이선스, 사전 빌드된 바이너리, 안드로이드 샘플 프로젝트 덕분에 산업적 배포 및 학술 연구의 진입 장벽이 낮아졌다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.