FC2カウンター FPGAの部屋 2020年06月01日
FC2ブログ

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

FPGAの部屋

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

finn をやってみる6(tfc_end2end_example.ipynb その1)

finn をやってみる5(1_brevitas_network_import.ipynb その2)”の続き。

前回は、 basics の 1_brevitas_network_import.ipynb の 3. Import into FINN and call cleanup transformations をやってみた。今回は、end2end_example の tfc_end2end_example.ipynb をやってみよう。これは全結合ネットワークを PYNQ ボードのビットファイルと制御用 Python コードに変換する手順を示した Jupyter Notebook のようだ。

end2end_example の tfc_end2end_example.ipynb のコンテンツを引用する。

FINN - End-to-End Flow
このノートブックでは、MNISTデータセットでトレーニングされた全結合2値化ネットワークを PYNQ ボードのビットファイルにする方法をやっていくそうだ。

Overview
finn-design-flow-example.svg を引用する。これは、ネットワークをトレーニングしてから、PYNQ ボードのビットファイルと Python ファイルを得るまでの手順を示しているようだ。
finn_32_200601.png

最初に緑の Brevitas のセクションがあって、その後、青の Vivado HLS に書けるための変換、オレンジのVivado HLS 処理、黄色のPYNQ ボードのビットファイルと Python コードを生成するフェーズがある。赤の項目は、 tfc_end2end_verification.ipynb でやるそうだ。

最初に showSrc, showInNetron をインポートする。
finn_33_200601.png

Outline

1. Brevitas export
2. Network preparation
3. Vivado HLS and IPI
4. PYNQ hardware generation and deployment


1. Brevitas export
FINN は ONNX モデルを入力することを想定しているようだ。よって、Brevitas で学習したモデルを使うことができる。FINN の Docker イメージにも Brevitas ネットワークの例が入っている。ここでは、TFC-w1a1 モデルをネットワークの例として使用する。
finn_34_200601.png

これで、トレーニングされた重みを持ったモデルがエクスポートされて、 tfc_w1_a1.onnx という名前でセーブされた。 tfc_w1_a1.onnx を見るのに Netron で視覚化する。
finn_35_200601.png

tfc_w1_a1.onnx の Netron で視覚化した図を示す。
finn_36_200601.png

.onnx フォーマットのモデルができたので、FINN を使うことができるようになった。FINN ModelWrapper を使ってモデルでの作業をしていく。

finn_37_200601.png

FINN には解析パスと変換パスがあるようだ。解析パスはモデルの情報を取り出してディクショナリ型にして返す。変換パスはモデルを変更して、変更されたモデルを FINN フローに返す。
  1. 2020年06月01日 05:38 |
  2. finn
  3. | トラックバック:0
  4. | コメント:0