LUT-NetのFPGAリソースについて
久しく作業が止まっていましたが、今日はLUT-Netと従来のネットワークとのFPGA化したときのリソース規模の違いを俯瞰しておきたいと思います。
あらかじめ断っておきますが、ここで行う比較は認識率が異なるので公平な比較ではありません。通常のNN(Neural Network)は、まずやりたいことができる認識率を確保して、その後に、「それをいかにして速く小さくインプリメントするか?」が命題となります。
一方で、LUT-Net は初めからFPGA内で使えるリソースとハードリアルタイムな時間要件を先に決めてから、「そのリソース範囲でどこまで認識率が上がるか?」というアプローチをとっています。したがってそもそも土台が違うので一概に比較できません。
しかしながら、LUT-Net がどういうオーダーでリソース追求型のネットワークであるかの規模間を可視化するうえで役立つと考えますので、このような比較を載せておきます。
まず、先にLUT-Netでの畳み込みによる32x32サイズの画像分類に用いているネットワークの概算が下記です。
トータルとして、LUT数 153k, BRAM21個 のみですので、既存のFPGAに入れ込むことが可能です。
特徴として、スループットが1であり、1cycle毎に1認識の結果を出力可能です。つまり画像処理において、FPGAの動作周波数=カメラピクセルクロックとすれば、リアルタイムにすべての画素一の認識が完了します。VGA程度であれば1000fps(1kHz)動作も可能であり、認識処理のリアルタイム活用が可能です。
次に、この1cycle毎に1認識の性能を、通常の INT8 の CNN などで、同じ構造のネットワークを組んだらどうなるかの試算です。
基本的にConv(畳み込み)もFC(全結合層)も、行列演算ですので、N×M個の乗算機が必要になります。そしてそれらを積算するのに接続数に比例する加算器が必要となります。ですので、計算上は、現存するどんなFPGAにも入りきれない、超巨大なリソース規模になります。
次にXNOR-Netの場合です。XNOR-Netは接続も重みもバイナリなので、リソースを大きく削減してくれます。
しかしながら、基本的に 乗算機がXOR演算となり、各種演算が INT8 から 1bit 化しただけなので、オーダー的には各演算が 1/8 になった程度の効果しか得られません。
もちろんスループット1なんて考えなければこんなことにはならないわけですが、それでもFPGAを使うメリットとしてはこの領域が必要な信号処理は多いわけで、そういったケースにAI的な適用ができれば非常に面白いのではないかと思う次第です。
« MNIST認識のリアルタイム動作環境更新 | トップページ | FPGAでのDNN(Deep Neural Network)の整理(LUT-Netまとめ) »
「FPGA」カテゴリの記事
- LUT-Networkの蒸留とMobileNet風構成とセマンティックセグメンテーション(2020.03.09)
- LUT-Networkの蒸留(Distillation)について(2019.12.29)
- FPGAでのDNN(Deep Neural Network)の整理(LUT-Netまとめ)(2019.12.15)
- LUT-NetのFPGAリソースについて(2019.12.08)
- MNIST認識のリアルタイム動作環境更新(2019.09.02)
「Deep Learning」カテゴリの記事
- Deep Learning の開発フロー(2020.03.23)
- LUT-Networkの蒸留とMobileNet風構成とセマンティックセグメンテーション(2020.03.09)
- LUT-Networkの蒸留(Distillation)について(2019.12.29)
- FPGAでのDNN(Deep Neural Network)の整理(LUT-Netまとめ)(2019.12.15)
- LUT-NetのFPGAリソースについて(2019.12.08)
この記事へのコメントは終了しました。
コメント