Simple Science

最先端の科学をわかりやすく解説

# コンピューターサイエンス# ハードウェアアーキテクチャー# 人工知能# 分散・並列・クラスターコンピューティング

FPGA上でのCNNの効率的な展開

FPGA技術を使ってCNNのデプロイを効率化して、パフォーマンスを向上させよう。

― 1 分で読む


FPGAハードウェアにCNFPGAハードウェアにCNNを展開する化しよう。FPGAを使ってCNNを速度と効率で最適
目次

今日は、物体検出や追跡などの一般的なタスクのために、多くの事前学習済み畳み込みニューラルネットワーク(CNN)が存在しているよ。これのおかげで、開発者はモデルを一からトレーニングする必要がなくなったんだ。NVIDIAのJetsonシリーズのような商業的なエッジデバイスはいくつかあって、これらのモデルをハードウェアで迅速に使用するためのソフトウェアフレームワークを提供しているよ。

でも、これらの事前学習済みモデルを特別なハードウェアデバイス、例えば専門のアクセラレーターに適用するのは、結構時間と労力がかかるんだよね。ハードウェアとソフトウェアを組み合わせて最高のパフォーマンスを引き出すには、多様なスキルセットが必要なんだ。CNNの最適化に関する知識と、選んだハードウェアがどう機能するのかをしっかり理解する必要があるし、最終的なシステムが他のシステムと通信できるように、データを受け取ったり、結果を送ったりする標準的な方法を提供しなきゃいけないよ。

この記事では、FPGA(フィールドプログラマブルゲートアレイ)という特定のタイプのハードウェアを使って、CNNのデプロイを簡単にする方法を紹介するよ。このハードウェアでCNNをデプロイするために必要なステップを、必要な要素を考慮しながら説明するんだ。ハードウェアに合わせてモデルを調整したり、パフォーマンスを最適化したりするデプロイメントプロセス全体を詳しく解説するよ。そして、YOLOv7という特定のCNNモデルをFPGAで適用した結果も見せるからね。

関連研究

多くの研究者が、異なるフレームワークを使ってCNNをFPGAに適用することに焦点を当ててきたよ。一部のプロジェクトでは、CNNの各層を別々のハードウェアモジュールとして扱うことで、高速なアクセラレーターを構築してきた。この方法では、ストリーミング方式で一緒に動作して、高いパフォーマンスを達成できるけど、こうしたやり方で適用できるCNNのサイズはFPGAのリソースによって制限されちゃうんだ。

人気のツール、HLS4MLは、ニューラルネットワークの高レベルな説明をハードウェア作成に適した言語に変換してくれる。また、FINNというツールは、量子化されたニューラルネットワークのための特定のアクセラレーターを構築するんだ。他にも、CNN向けのハードウェアソリューションを作成するための違う方法を探る様々なプロジェクトがあって、それぞれに強みと弱みがあるよ。

CNNが大きくなって、計算が増えると、従来の方法では利用可能なFPGAリソースに収まりきらなくなることがあるんだ。ここで、シングルエンジンタイプのアクセラレーターが役立つことがあるんだ。これらのアクセラレーターは、一般的なCNN操作を実行するための組み込みハードウェアモジュールを持っていて、柔軟性があり、異なるCNNに合わせて調整できる。これにより、ソフトウェアフレームワークがCNNの層を管理できるようになるんだ。

以前の研究では、CNNをGemminiアクセラレーターに接続する方法が示されていて、このアクセラレーターはランタイムを使って層を管理するんだ。でも、このアプローチは特定のセットアップが必要で、各層のスケジューリングの可能性を最大限に活用できないから、パフォーマンスが大幅に向上することは難しいんだよね。

Gemminiアクセラレーター

Gemminiアクセラレーターは、CNNを効率的に実行できる柔軟なハードウェアオプションだよ。これは、メモリからデータをロードする部分、データを処理する部分、結果をメモリに戻す部分から構成されているんだ。Gemminiアクセラレーターを使うためには、RocketCore CPUと連携する必要があって、これがCNNの実行方法を決定するんだ。

CPUには2種類の命令があって、一つは一般的な操作(例えば行列乗算)のために事前に定義されたタスクを使うもの、もう一つはデータの出入りをもっと細かく制御することができるものなんだよね。

FPGA上でGemminiアクセラレーターを使うことで、柔軟性と効率のバランスが取れて、パフォーマンスを最適化するための調整が可能になるんだ。私たちは、XilinxのZynqアーキテクチャに基づいたFPGAを使うことに決めたよ。これにはARMプロセッサコアとFPGA自体が含まれていて、この構造によって、2つの部分間でタスクを共有して全体的なパフォーマンスが向上するんだ。

FPGA最適化

GemminiアクセラレーターをFPGA用に適合させるために、DSPパッキングという技術を実装したんだ。この方法は、FPGA上の利用可能な処理スライスを効果的に活用して、CNNに必要な操作を実行できるようにするんだ。アクセラレーターのデザインを調整することで、同じ処理ユニットに複数のタスクを詰め込むことができて、利用可能なハードウェアをより効率的に使えるようになったよ。

さらに、私たちは、特定のタスクに対して不要なGemminiアクセラレーターの機能を無効にすることもできたんだ。これにより、必要なハードウェアの量が減って、システムがよりスリムになり効率的になるよ。それに加えて、データのスケーリングの一部も変更して、結果の品質を大幅に落とさずにパフォーマンスを維持できるようになったんだ。

エンドツーエンドワークフロー

アクセラレーターが設定されたら、CNNの動作を管理するためのソフトウェアプロセスに従うよ。物体検出のための事前学習済みモデルから始めて、選択したハードウェアで動作するようにそれを洗練させる。これには、入力が適切なサイズであることを確認し、Gemminiアクセラレーターの特定の機能に合わせてモデルを調整することが含まれるんだ。

私たちのプロジェクトでは、物体を検出する能力で知られているYOLOv7モデルを選んだよ。モデルのサイズは調整できて、より小さなバージョンを選んでデプロイすることにした。多くの高度なCNNと同じように、YOLOv7はデータを処理する重い計算部分と、処理が終わった後の結果を管理する2つ目の部分に分けられるんだ。

入力画像のサイズなどのパラメーターを慎重に設定する必要があるよ。これが速度と品質の両方に影響を与えるからね。私たちの分析によれば、特定の入力サイズを使うことで、これらの要素を効果的にバランスさせることができたんだ。

モデル調整

特化型ハードウェアを使って作業しているときに、CNNで使われる特定の活性化関数が私たちのアクセラレーターに合わなかったことが分かったんだ。それで、遅れを防ぶために、より複雑な活性化関数を、ハードウェアがもっと扱いやすいシンプルなオプションに置き換えたよ。

モデル自体のサイズも重要で、メモリが限られたデバイスで作業する際には特に重要だよね。モデルの特定の部分を効率的にすることで、パフォーマンスを維持しつつ不要な要素を取り除くことができたんだ。これには、重要なパラメーターの数を減らすプルーニングと呼ばれるプロセスが関与していたよ。

異なるハードウェアプラットフォームでモデルをデプロイするために、いくつかのフォーマットに変換する必要があったんだ。モデルをGemminiアクセラレーターで使えるように正しく準備するために、いくつかの段階を通ってエクスポートするツールを使ったよ。このプロセスの各ステップで、モデルのパフォーマンスにおける品質の損失を最小限に抑えるように評価したんだ。

パフォーマンス評価

私たちのソリューションがどのように機能するかを確認するために、他のハードウェアに実装されたシステムと比較したよ。重点を置いたのはレイテンシー、つまりシステムがデータを処理する速さと、エネルギー効率、つまり各推論タスクにどれだけのエネルギーが使われたかということなんだ。

私たちは、ディープラーニングタスクで通常使用されるより強力なGPUを含む様々なプラットフォームに対して、すべての測定値を提示したよ。私たちの見解では、FPGAソリューションは、他の多くの組み込みシステムよりも速く、エネルギー消費も少なかったんだ。

ケーススタディ:トラフィック監視

リアルワールドのアプリケーションは、私たちのCNNモデルをより大きなシステムに統合する方法を理解するのに役立つんだ。私たちのケーススタディでは、トラフィック監視システムを実装して、FPGAベースのソリューションがどのように大きなオペレーションの一部になれるかを示したよ。

このシナリオでは、カメラの画像がメインコンピュータシステムからFPGAに送られて処理されたんだ。システムのさまざまなコンポーネントが、一体となってスムーズに動作したよ。FPGAがコアタスクを管理して、他のコンポーネントが追加の処理や分析を行ったんだ。この統合は、エッジデバイス上でCNNを扱うときの実際の課題を示していて、スムーズな通信のための標準インターフェースの重要性を強調しているんだ。

結論

この記事では、Gemminiアクセラレーターを中心に構築されたシステムに量子化されたCNNをデプロイするための新しいフレームワークを提案したよ。GemminiがFPGAハードウェアでどのように機能するかを向上させるためにいくつかの修正を行って、元の設計に比べて大幅な速度向上を実現したんだ。それに、調整プロセスを通じて、異なるモデルバージョンでパフォーマンスをさらに最適化できたんだ。

効果的なモデルのパーティショニングが全体の実行を改善できることを示したよ。必要な後処理タスクも含めてね。結果は、私たちのFPGAソリューションがエネルギー効率の面で競合するシステムを上回っていて、各推論に使われるエネルギーがかなり削減できることを示したんだ。

最後に、実際のケーススタディを通じて、こうしたソリューションが大きなシステムに統合できる方法を示したことで、FPGAハードウェアにCNNをデプロイする利点が明らかになったよ。

オリジナルソース

タイトル: Efficient Edge AI: Deploying Convolutional Neural Networks on FPGA with the Gemmini Accelerator

概要: The growing concerns regarding energy consumption and privacy have prompted the development of AI solutions deployable on the edge, circumventing the substantial CO2 emissions associated with cloud servers and mitigating risks related to sharing sensitive data. But deploying Convolutional Neural Networks (CNNs) on non-off-the-shelf edge devices remains a complex and labor-intensive task. In this paper, we present and end-to-end workflow for deployment of CNNs on Field Programmable Gate Arrays (FPGAs) using the Gemmini accelerator, which we modified for efficient implementation on FPGAs. We describe how we leverage the use of open source software on each optimization step of the deployment process, the customizations we added to them and its impact on the final system's performance. We were able to achieve real-time performance by deploying a YOLOv7 model on a Xilinx ZCU102 FPGA with an energy efficiency of 36.5 GOP/s/W. Our FPGA-based solution demonstrates superior power efficiency compared with other embedded hardware devices, and even outperforms other FPGA reference implementations. Finally, we present how this kind of solution can be integrated into a wider system, by testing our proposed platform in a traffic monitoring scenario.

著者: Federico Nicolas Peccia, Svetlana Pavlitska, Tobias Fleck, Oliver Bringmann

最終更新: Aug 14, 2024

言語: English

ソースURL: https://arxiv.org/abs/2408.07404

ソースPDF: https://arxiv.org/pdf/2408.07404

ライセンス: https://creativecommons.org/licenses/by/4.0/

変更点: この要約はAIの助けを借りて作成されており、不正確な場合があります。正確な情報については、ここにリンクされている元のソース文書を参照してください。

オープンアクセスの相互運用性を利用させていただいた arxiv に感謝します。

著者たちからもっと読む

類似の記事