[論文レビュー] Automatic Compiler Based FPGA Accelerator for CNN Training
本論文は、16ビット固定小数点精度を用いたエンド・ツー・エンドのCNN学習を実現する、コンパイラベースの自動FPGAアクセラレータを提示する。カスタマイズ可能なRTLコンパイラと最適化されたハードウェアライブラリを採用し、全学習(順方向、逆方向、重み更新)のFPGA最適化アクセラレータを生成する。CIFAR-10ネットワーク(200万パラメータ)に対して、Intel Stratix 10 GX FPGAで最大479 GOPSの性能を達成した。
Training of convolutional neural networks (CNNs)on embedded platforms to support on-device learning is earning vital importance in recent days. Designing flexible training hard-ware is much more challenging than inference hardware, due to design complexity and large computation/memory requirement. In this work, we present an automatic compiler-based FPGA accelerator with 16-bit fixed-point precision for complete CNNtraining, including Forward Pass (FP), Backward Pass (BP) and Weight Update (WU). We implemented an optimized RTL library to perform training-specific tasks and developed an RTL compiler to automatically generate FPGA-synthesizable RTL based on user-defined constraints. We present a new cyclic weight storage/access scheme for on-chip BRAM and off-chip DRAMto efficiently implement non-transpose and transpose operations during FP and BP phases, respectively. Representative CNNs for CIFAR-10 dataset are implemented and trained on Intel Stratix 10-GX FPGA using proposed hardware architecture, demonstrating up to 479 GOPS performance.
研究の動機と目的
- リソース制限のある組み込みプラットフォームに、柔軟でエネルギー効率の高いCNN学習を実装する課題に対処すること。
- 電力効率とデバイス内学習能力の点で、GPUベースの学習の限界を克服すること。
- さまざまなCNNアーキテクチャに対応できる、完全に自動化されたFPGAベースのアクセラレータを設計し、確率的勾配降下(SGD)学習の全段階をサポートすること。
- 順方向、逆方向、重み更新段階における効率的なメモリアクセスと計算マッピングを実現するため、サイクリックなストレージ方式を採用すること。
- 浮動小数点学習と同等の精度を維持しながら、高いスループットとエネルギー効率を達成すること。
提案手法
- 順方向、逆方向、重み更新処理のためのパラメータ化されたVerilogモジュールを備えた、学習に特化したRTLモジュールライブラリを開発した。
- 高レベルのCNN設定と設計制約から、FPGA合成可能なRTLを自動生成するRTLコンパイラを構築した。
- オンチップのBRAMとオフチップのDRAMを用いたサイクリックな重みストレージ/アクセス方式を実装し、非転置(順方向)および転置(逆方向)処理を効率的に処理した。
- タイリングとデュアルバッファリング技術を採用し、DRAMのレイテンシを隠蔽するとともに、オンチップバッファ使用量を削減した。
- MACアレイにおける負荷分散を実装し、重み更新レイヤーの論理レイテンシを4倍低減した。
- FPGA実装の関数的正しさを検証するため、PyTorchにカスタム固定小数点学習モデルを実装した。

実験結果
リサーチクエスチョン
- RQ1さまざまなネットワークサイズに対応できる、FPGAベースのアクセラレータを自動生成する方法は何か?
- RQ2順方向、逆方向、重み更新段階におけるレイテンシを最小限に抑えるために、最も効果的なメモリアクセスパターンとデータフロー最適化は何か?
- RQ3提示されたサイクリックストレージ方式は、転置および非転置処理におけるメモリ帯域幅の利用効率をどのように向上させるか?
- RQ4GPUベースのソリューションと比較して、完全に自動化されたFPGAベースのCNN学習アクセラレータの実現可能なスループットとエネルギー効率はどの程度か?
- RQ5固定小数点精度は、FPGA上で高スループット学習を可能にする一方で、どの程度のモデル精度を維持できるか?
主な発見
- FPGAアクセラレータは、Intel Stratix 10 GX FPGA上で240 MHzで動作する4X CIFAR-10 CNNモデルに対して、最大479 GOPSのスループットを達成した。
- バッチサイズ40の場合、アクセラレータは13.45 GOPS/Wのエネルギー効率を達成し、小規模バッチサイズにおいてTitan XP GPUを上回った。
- 重み更新レイヤーは、1バッチイテレーションあたりの合計レイテンシの51%を占めており、主に過去の勾配と重みのDRAMアクセスに起因する。
- デュアルバッファリングにより、重み更新レイヤーのレイテンシが11%削減され、メモリアクセスレイテンシが隠蔽された。
- 1X CNNモデルは、学習率0.002、バッチサイズ40で50エポック後に73%のCIFAR-10精度を達成し、浮動小数点ベースラインと同等の性能を示した。
- 本システムは、より最新の勾配推定が得られる小規模バッチサイズでも、安定的かつ信頼性の高い学習を実現した。

より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。