Skip to main content
QUICK REVIEW

[논문 리뷰] Neural networks on microcontrollers: saving memory at inference via operator reordering

Edgar Liberis, Nicholas D. Lane|arXiv (Cornell University)|2019. 10. 02.
Advanced Memory and Neural ComputingEngineering인용 수 20
한 줄 요약

이 논문은 모델 아키텍처나 가중치를 변경하지 않고, 연산자 실행 순서를 재정렬함으로써 마이크로컨트롤러에서 신경망 추론 시 최대 메모리 사용량을 줄이는 소프트웨어 수준 최적화를 제안한다. 각 연산자 실행 후 메모리의 결함 제거를 통해 동적 메모리 할당을 관리함으로써 최대 메모리 사용량을 50KB(351KB에서 301KB) 감소시켰으며, 이로 인해 250KB 크기의 모델이 512KB SRAM 장치에도 배포 가능해졌다.

ABSTRACT

Designing deep learning models for highly-constrained hardware would allow imbuing many edge devices with intelligence. Microcontrollers (MCUs) are an attractive platform for building smart devices due to their low cost, wide availability, and modest power usage. However, they lack the computational resources to run neural networks as straightforwardly as mobile or server platforms, which necessitates changes to the network architecture and the inference software. In this work, we discuss the deployment and memory concerns of neural networks on MCUs and present a way of saving memory by changing the execution order of the network's operators, which is orthogonal to other compression methods. We publish a tool for reordering operators of TensorFlow Lite models and demonstrate its utility by sufficiently reducing the memory footprint of a CNN to deploy it on an MCU with 512KB SRAM.

연구 동기 및 목표

  • 제한된 片상 SRAM과 중간 메모리 계층이 없는 마이크로컨트롤러(MCU)에 딥러닝 모델을 배포하는 데 도전 과제를 해결한다.
  • 모든 텐서 버퍼를 위한 정적 메모리가 부족하므로 MCU 추론 소프트웨어가 동적 메모리 할당을 지원해야 한다는 제약 조건을 극복한다.
  • 모델 아키텍처나 가중치를 수정하지 않고 추론 중 최대 메모리 사용량을 최소화하여 이전에는 구현이 불가능했던 모델의 배포를 가능하게 한다.
  • 자원이 제한된 하드웨어에서 메모리 프로파일을 줄이기 위해 텐서플로우 라이트 모델의 연산자 순서를 재정렬하는 실용적인 도구를 개발한다.

제안 방법

  • 모델의 계산 그래프에서 연산자 실행 순서를 재정렬하여 최대 작업 세트 크기(동시에 메모리에 존재하는 텐서의 최대 수)를 최소화한다.
  • 각 연산자 실행 후 메모리의 끝부분에 텐서 버퍼를 이동시킴으로써 결함 제거가 가능한 동적 메모리 할당기 구현을 위한 텐서플로우 라이트 마이크로 인터프리터에 통합한다.
  • 메모리 사용량이 최소인 연산자 우선순위를 정하고, 중간 텐서를 필요한 이상으로 오래 보관하지 않도록 하는 위상 순서 전략을 사용한다.
  • 예를 들어 잔류 연결이 있는 복잡한 아키텍처에서 메모리 압력을 줄이기 위해 분기 구조를 가진 계산 그래프에 재정렬 알고리즘을 적용한다.
  • 메모리 이동 중 안전성을 확보하기 위해 텐서 버퍼에 대한 C/C++ 포인터를 이동 후에도 유지하지 않는다.
  • 재정렬 논리를 텐서플로우 라이트 모델을 위한 도구에 통합하여 모델 개발자에게 투명하고, 다른 압축 기법과 독립적으로 작동하도록 한다.

실험 결과

연구 질문

  • RQ1모델 아키텍처를 변경하지 않고 신경망의 연산자 실행 순서를 재정렬함으로써 마이크로컨트롤러에서 최대 메모리 사용량을 줄일 수 있는가?
  • RQ2복잡한 분기 구조를 가진 계산 그래프를 가진 모델에서 연산자 재정렬을 통해 얼마나 많은 메모리 절감을 기대할 수 있는가?
  • RQ3마이크로컨트롤러 환경에서 동적 메모리 할당 및 결함 제거의 성능 오버헤드는 얼마나 되는가?
  • RQ4메모리 사용량이 큰 모델을 512KB SRAM을 가진 MCU에 배포할 수 있도록 연산자 재정렬이 가능하게 하는가? (기존에는 불가능한 경우)
  • RQ5MCU 플랫폼에서 정적 메모리 할당과 비교해 본다면, 제안된 방법은 메모리 효율성과 런타임 비용 측면에서 어떤가?

주요 결과

  • SwiftNet Cell의 경우 연산자 재정렬로 최대 메모리 사용량이 351KB에서 301KB로 50KB(14.2%) 감소하여 512KB SRAM MCU에 배포 가능해졌다.
  • MobileNet-v1에 대해 동적 메모리 할당기 도입으로 실행 시간이 0.68% 증가(10243ms → 1316ms), 에너지 소비는 0.97% 증가(8775mJ → 728mJ)되었으며, 메모리 프로파일은 186KB 감소했다.
  • 이 방법은 양자화, 정규화, 지식 정복과 같은 다른 압축 기법과 완전히 독립적이므로, 이를 함께 사용할 수 있다.
  • 각 연산자 실행 후의 결함 제거가 효과적이며, 최소한의 런타임 오버헤드를 유발하여 마이크로컨트롤러에서의 동적 메모리 관리가 가능하다.
  • 도구는 기존에 기본 연산자 순서로는 불가능했던 250KB 크기의 모델을 오직 512KB SRAM을 가진 마이크로컨트롤러에 성공적으로 배포하는 데 기여했다.
  • 이 방법은 일반화 가능하며, 예를 들어 입력 버퍼를 출력용으로 재사용하는 인라인 계산 최적화와 같은 기법을 지원할 수 있어, 향후 메모리 사용량을 추가로 줄일 수 있다.

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

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

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

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