FC2カウンター FPGAの部屋 DPU on PYNQ のMNIST 推論と自分で作ったテンプレートを使用した CNN の MNIST 推論の速度を比較する
fc2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

DPU on PYNQ のMNIST 推論と自分で作ったテンプレートを使用した CNN の MNIST 推論の速度を比較する

DPU on PYNQ をやってみる3(dpu_mnist_classifier.ipynb をやってみた)”で DPU on PYNQ を使用した時の MNIST の推論速度を計測した。それは 1 文字辺り約 599 us だった。
それでは、自分で Vivado HLS を使用して作ったテンプレートを使用した CNN の MNIST の推論速度と比べてみようと思う。

自分で Vivado HLS を使用して作ったテンプレートを使用した CNN の MNIST の推論は、”DMA付きテンプレートを使用したMNISTのCNN4(Cコードの合成、Export RTL)”を使用する。
DPU-PYNQ_30_200515.png

これは、Vivado HLS でデータは任意精度固定小数点データ型を使用して、conv_layer_template.h や affine_layer_template.h などの各層やアクティベーションのテンプレートを使用して、層をつないで行く構造になっている。

具体的にどのような構造かと言うと、全結合層で説明すると、 affine_layer_template.h がテンプレートとなっている。 affine_layer_template.h の一部を下に示す。
DPU-PYNQ_31_200515.png

テンプレートのパラメータをいろいろと指定してあるので、そこに自分で学習した全結合層の値を入れれば、いろいろな全結合層を表現することができる。関数の引数には、入力ストリームと出力ストリーム、そして、重みの配列とバイアスの配列を指定する。

テンプレートを使用して全結合層をインスタンスしているのが、 affine_layer1.cpp と affine_layer2.cpp だ。これは全結合層の 1 層目と 2 層目に相当する。
affine_layer1.cpp を示す。こちらは畳み込み層+マックス・プーリングからの入力で、100 出力となっている。
DPU-PYNQ_32_200515.png

affine_layer2.cpp は最後なので、100 入力 10 出力だ。
DPU-PYNQ_33_200515.png

畳み込み層テンプレートもあるし、アクティベーションは別なので、relu_template.h もある。

これらの層を接続するのがトップの mnist_conv_nn3_hlss_dma.cpp だ。
下に示すように、各層を HLS ストリームで接続する。そして、DATAFLOW 指示子を指定して、並列動作させるのだ。
DPU-PYNQ_34_200515.png

DMA付きテンプレートを使用したMNISTのCNN4(Cコードの合成、Export RTL)”の推論速度は、C コードの合成時のレポートのレイテンシの max で 100 MHz クロック動作の場合に、約 1.03 ms だった。これは、 ZYBO Z7-20 での推論速度のレポートなので、Ultra96-V2 の Zynq UltraScale+ MPSoC に設定を変更して、 300 MHz の動作周波数で合成してみた。
結果を示す。
DPU-PYNQ_35_200515.png
DPU-PYNQ_36_200515.png

300 MHz の動作周波数で、 Latency の max は 102951 クロックなので、推論速度は、 3.333 ns X 102951 クロック ≒ 343 us ということになる。
自分で Vivado HLS を使用して作ったテンプレートを使用した CNN の MNIST の推論速度はVivado HLS の合成レポートの値で、実際に推論した値ではないので、割り引いて考える必要があると思うが、DPU on PYNQ の MNIST 1 文字の推論速度 599 us の対して約 1.75 倍の性能になった。勝った。。。嬉しい。
DPU.bit の仕様が分からないがリソース使用量も少ないのでは無いだろうか?

ただし、汎用?のDPU に対して、こっちは専用ハードウェアだ。FPGA に全部のネットワークを入れてしまうので、小さいネットワークしか入らないという欠点がある。
  1. 2020年05月15日 04:59 |
  2. Ultra96
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
https://marsee101.blog.fc2.com/tb.php/4883-27730e5c
この記事にトラックバックする(FC2ブログユーザー)