[論文レビュー] A flexible FPGA accelerator for convolutional neural networks
本稿では、再構成を必要とせず、変動するCNNレイヤー形状に動的に適応可能な柔軟なFPGAベースのCNNアクセラレータを提示する。1次元の処理要素(PE)のスティリックアレイを用い、全次元にわたるデータ再利用を実現することで、オンチップメモリアクセスを最小限に抑え、未利用リソースを低減する。実際のXilinx VC709 FPGA上で高い性能を発揮し、理論ピークの顕著な割合を維持する。TensorFlowとの完全な統合は、共同設計されたソフトウェアスタックにより実現される。
Though CNNs are highly parallel workloads, in the absence of efficient on-chip memory reuse techniques, an accelerator for them quickly becomes memory bound. In this paper, we propose a CNN accelerator design for inference that is able to exploit all forms of reuse available to minimize off-chip memory access while increasing utilization of available resources. The proposed design is composed of cores, each of which contains a one-dimensional array of processing elements. These cores can exploit different types of reuse available in CNN layers of varying shapes without requiring any reconfiguration; in particular, our design minimizes underutilization due to problem sizes that are not perfect multiples of the underlying hardware array dimensions. A major obstacle in the adoption of FPGAs as a platform for CNN inference is the difficulty to program these devices using hardware description languages. Our end goal is to also address this, and we develop preliminary software support via a codesign in order to leverage the accelerator through TensorFlow, a dominant high-level programming model. Our framework takes care of tiling and scheduling of neural network layers and generates necessary low-level commands to execute the CNN. Experimental evaluation on a real system with a PCI-express based Xilinx VC709 board demonstrates the effectiveness of our approach. As a result of an effective interconnection, the design maintains a high frequency when we scale the number of PEs. The sustained performance overall is a good fraction of the accelerator's theoretical peak performance.
研究の動機と目的
- FPGAベースのCNNアクセラレータにおけるメモリバウンド性能の課題に取り組み、複数次元にわたるオンチップデータ再利用を最大化する。
- 固定2次元PEアレイの制限を克服するため、任意のレイヤー形状に適応可能な柔軟な1次元スティリックコアを採用し、再構成を回避する。
- アレイ次元の非完全倍数に起因する未利用リソースを低減するため、動的タイリングおよびCNNレイヤー断片のマッピングを可能にする。
- 低レベルのFPGA複雑性を抽象化するため、TensorFlowなどのハイレベルフレームワークとのシームレスな統合を実現する共同設計ソフトウェアスタックを提供する。
- 実FPGAハードウェア上で、処理要素(PE)の数を変化させても高いクロック周波数と性能スケーラビリティを達成する。
提案手法
- 任意のタイル形状のCNNレイヤーに対応する1次元PEアレイを採用したコアレベルアーキテクチャを設計し、畳み込み演算を実現する。
- 入力特徴マップ再利用、重み再利用、部分和再利用、畳み込み再利用を、入力、出力、チャネル次元の全方向で活用するためのカスタムインタコネクトおよびデータフロー機構を実装する。
- コードサイトソフトウェアフレームワーク内でのタイリングおよびスケジューリングヒューリスティクスを用い、レイヤーをアクセラレータにマッピングすることで、オフチップメモリ帯域幅を最小限に抑える。
- FPGA上でCNNモデルを低レベルハードウェアコーディングなしでエンドツーエンド実行可能にするために、TensorFlow XLAバックエンドおよびデバイス登録を実装する。
- ハイレベル合成とハードウェアに配慮したスケジューリングを活用し、PEの利用率がほぼ最大に近い状態でも高いクロック周波数を維持する。
- 高レベルのグラフ表現から低レベルのコマンドを生成し、実行時にFPGAアクセラレータを駆動する。
実験結果
リサーチクエスチョン
- RQ1再構成を必要とせず、多様なCNNレイヤー形状において、入力、重み、部分和のすべての種類のデータ再利用を効率的に活用できるFPGAベースのCNNアクセラレータの設計方法は何か?
- RQ22次元アレイと比較して、1次元スティリックアレイアーキテクチャは、不規則なレイヤー次元に起因する未利用リソースをどの程度低減できるか?
- RQ3柔軟かつ再構成可能なFPGAアクセラレータは、PE数をスケーリングしても高い性能と周波数を維持できるか?
- RQ4TensorFlowのようなハイレベルディープラーニングフレームワークは、共同設計されたソフトウェアスタックを通じて、低レベルのFPGAアクセラレータとどの程度効果的に統合できるか?
- RQ5理論ピーク性能に対して、実現可能な性能はどの程度で、先行するオープンソースのFPGA CNNアクセラレータと比較してどうか?
主な発見
- 1次元スティリックアレイアーキテクチャは、類似したハードウェア環境を有する以前に発表されたオープンソースFPGA CNNアクセラレータと比較して、理論ピーク性能の顕著に高い割合を維持している。
- PE数をスケーリングしても高いクロック周波数を維持しており、リソースの効果的利用とインタコネクト複雑性に起因する面積オーバーヘッドの最小化を示している。
- ソフトウェアスタックにより、TensorFlow経由でのCNNモデル実行が透明に可能となり、自動タイリングおよびスケジューリングはコードサイトフローで処理される。
- 本設計は652個のDSPスライスを消費し、Zhangら[36](61.2 GFLOPs)やCaffeine[35](488 GOPs)と比較して、より低い精度のint8演算を用いながらも高い性能を達成している。
- 非倍数のアレイ次元に起因する未利用リソースを、1次元コアに断片を動的にマッピングすることで低減し、多様なレイヤー形状においてすべてのPEを効率的に活用できる。
- PCI-Express接続のXilinx VC709 FPGA上での実験結果から、オフチップメモリアクセスの低減と高いスループットの維持の有効性が確認された。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。