[論文レビュー] TinyCNN: A Tiny Modular CNN Accelerator for Embedded FPGA
この論文では、埋め込みFPGA上でのリソースに配慮した小さなCNNアクセラレータの設計およびデプロイを可能にするモジュラーなフレームワーク、TinyCNNを提案する。ソフトウェアバックエンドを介したハードウェアに配慮したCNN設計、CHISELを用いた自動RTL生成、およびシミュレーションによる精度チューニングにより、32ビット浮動小数点と比較して16ビット固定小数点演算を用いる場合、最大15.75倍の高速化を達成し、精度の低下をたった3%に抑える。
In recent years, Convolutional Neural Network (CNN) based methods have achieved great success in a large number of applications and have been among the most powerful and widely used techniques in computer vision. However, CNN-based methods are computational-intensive and resource-consuming, and thus are hard to be integrated into embedded systems such as smart phones, smart glasses, and robots. FPGA is one of the most promising platforms for accelerating CNN, but the limited on-chip memory size limit the performance of FPGA accelerator for CNN. In this paper, we propose a framework for designing CNN accelerator on embedded FPGA for image classification. The proposed framework provides a tool for FPGA resource-aware design space exploration of CNNs and automatically generates the hardware description of the CNN to be programmed on a target FPGA. The framework consists of three main backends; software, hardware generation, and simulation/precision adjustment. The software backend serves as an API to the designer to design the CNN and train it according to the hardware resources that are available. Using the CNN model, hardware backend generates the necessary hardware components and integrates them to generate the hardware description of the CNN. Finaly, Simulation/precision adjustment backend adjusts the inter-layer precision units to minimize the classification error. We used 16-bit fixed-point data in a CNN accelerator (FPGA) and compared it to the exactly similar software version running on an ARM processor (32-bit floating point data). We encounter about 3% accuracy loss in classification of the accelerated (FPGA) version. In return, we got up to 15.75x speedup by classifying with the accelerated version on the FPGA.
研究の動機と目的
- リソース制限のある埋め込みFPGA上に計算負荷の高いCNNをデプロイする課題に対処すること。
- 自動化により、FPGA上でのカスタムCNNアクセラレータの設計複雑さとデプロイまでの時間を低減すること。
- FPGA上でのCNN推論において、低精度の固定小数点演算(16ビット)を用いる場合の精度損失を最小限に抑えること。
- ハードウェアリソース制約を考慮した一般用途で使用可能なモジュラーなフレームワークを提供すること。
- CNNトレーニング、RTL生成、精度チューニングを統合したパイプラインとしてのハードウェア・ソフトウェア共同設計を効率的に行えるようにすること。
提案手法
- ソフトウェアバックエンドは、Pythonを用いてCNNを設計およびトレーニングし、アーキテクチャ選定を支援するためのリアルタイムのハードウェアリソース推定を実行する。
- ハードウェアバックエンドは、CHISELを用いてRTLコードを自動生成し、CNNアーキテクチャに従って畳み込み層、プーリング層、全結合層を自動的に組み立てる。
- シミュレーションおよび精度調整バックエンドは、分類誤差を最小限に抑えるために、層間データパスのビット幅(整数部および小数部)を反復的にチューニングする。
- フレームワークは2つのハードウェアモードをサポートする:共有モード(全層に1つの畳み込みユニットを共有)と専用モード(各層に専用ユニットを割り当て)で、後者はアクセス競合を低減する。
- 全パイプラインはXilinx SDSoC 2016.4を用いて統合され、Zynq SoC FPGAのHLSベースの合成およびプログラミングを可能にする。
- フレームワークは、PYNQ Zynq-7000ボード上で性能を検証するため、グレースケール入力を用いたCIFAR-10と小さな5層CNNを用いる。
実験結果
リサーチクエスチョン
- RQ1完全自動化されたフレームワークは、埋め込みFPGA上でのCNNアクセラレータの設計作業とデプロイまでの時間を著しく削減できるか?
- RQ2FPGAベースのCNN推論において、16ビット固定小数点演算は32ビット浮動小数点と比較して、分類精度をどの程度維持できるか?
- RQ3特にBRAMの利用状況が、小さなFPGA上でのCNN設計にどのような制約を与えるか。また、フレームワークはその制約を緩和できるか?
- RQ4埋め込みFPGAアクセラレータにおいて、専用畳み込みユニットの割り当ては共有割り当てよりも性能を向上させるか?
- RQ5データパスのビット幅に対する反復的精度チューニングは、低精度CNNにおける精度損失を顕著に低減できるか?
主な発見
- TinyCNNフレームワークは、16ビット固定小数点演算を用いた場合、ARM Cortex-A9のソフトウェア実装(1枚あたり42.54 ms 対 2.70 ms)に対して最大15.75倍の高速化を達成した。
- 専用モードで実行したFPGAアクセラレータの精度は62.28%であり、32ビット浮動小数点ソフトウェアベースラインの65.54%と比較してわずか3.26%の低下に抑えられた。
- 共有モードのハードウェアアクセラレータ(HW-SM)は、推論時間8.12 ms、精度62.28%を達成し、専用モードがアクセス競合を排除することで性能が向上することを示した。
- BRAMの利用状況が主なハードウェア制約であったが、フレームワークのソフトウェアバックエンドがリソース制限内に収まるようにCNN設計を効果的にガイドした。
- 精度チューニングバックエンドは、層ごとの整数部および小数部のビット幅を調整することで分類誤差を効果的に最小化し、低精度演算でも高い精度を維持できた。
- フレームワークは、最小限の手動介入でPythonベースのCNNモデルから動作可能で最適化されたCNNアクセラレータを正常に生成した。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。