finn
finn
をやってみる1(インストール)
Xilinx 社の GitHub の finn をやってみることにした。finn は
Xilinx Research Labs の実験的なフレームワークで、FPGA を使用した DNN
の推論を研究している。特に、各ネットワーク用にカスタマイズされたデータフロースタイルのアーキテクチャの生成に重点を置いて、量子化ニューラルネットワークを対象とし
ているようだ。
finn は Docker を使用してインストールを行う。Docker
のインストールが必要だ。”Ubuntu 18.04 に Docker CE をインストールする”を参照のこと。なお FPGA の部屋のDocker
カテゴリの Web サイトも参照されたい。
finn
をやってみる2(Jupyter Notebook)
前回は、Docker を使って finn のインストールを行い、Jupyter
Notebook を起動した。今回は、Jupyter Notebook でサンプルをやってみよう。
finn
をやってみる3(Jupyter Notebook2)
前回は、Jupyter Notebook でサンプルをやってみたが、Round
がバージョン 10 には存在しないということでエラーになってしまった。今回は、Round を削除して basics の
0_how_to_work_with_onnx.ipynb をやってみよう。
finn
をやってみる4(1_brevitas_network_import.ipynb その1)
前回は、Round を削除して basics の
0_how_to_work_with_onnx.ipynb をやってみたところ、すべて実行することができた。今回は、次に basics の
1_brevitas_network_import.ipynb をやってみよう。
finn
をやってみる5(1_brevitas_network_import.ipynb その2)
前回は、 basics の
1_brevitas_network_import.ipynb の 2. Call Brevitas FINN-ONNX export and
visualize with Netron までをやってみた。今回は、 basics の
1_brevitas_network_import.ipynb の 3. Import into FINN and call cleanup
transformations をやってみよう。
finn
をやってみる6(tfc_end2end_example.ipynb その1)
前回は、 basics の
1_brevitas_network_import.ipynb の 3. Import into FINN and call cleanup
transformations をやってみた。今回は、end2end_example の tfc_end2end_example.ipynb
をやってみよう。これは全結合ネットワークを PYNQ ボードのビットファイルと制御用 Python コードに変換する手順を示した Jupyter
Notebook のようだ。
finn
をやってみる7(tfc_end2end_example.ipynb その2)
前回は、end2end_example の
tfc_end2end_example.ipynb をやってみようということで、Overview と 1. Brevitas export
をやってみた。今回は、end2end_example の tfc_end2end_example.ipynb の 2. Network
preparation をやってみよう。
finn
をやってみる8(tfc_end2end_example.ipynb その3)
前回は、end2end_example の
tfc_end2end_example.ipynb の 2. Network preparation の FINN-style Dataflow
Architectures, Tidy-up transformations, Streamlining
をやってみた。今回は、end2end_example の tfc_end2end_example.ipynb の Conversion to HLS
layers, Creating a Dataflow Partition, Folding and Datawidth Converter,
FIFO and TLastMarker Insertion をやってみた。
finn
をやってみる9(tfc_end2end_example.ipynb その4)
前回は、end2end_example の
tfc_end2end_example.ipynb の Conversion to HLS layers, Creating a Dataflow
Partition, Folding and Datawidth Converter, FIFO and TLastMarker Insertion
をやってみた。今回は、end2end_example の tfc_end2end_example.ipynb の 3. Vivado HLS and
IPI からやってみよう。
finn
をやってみる10(tfc_end2end_example.ipynb その5)
前回は、 end2end_example の
tfc_end2end_example.ipynb の 3. Vivado HLS and IPI の Synthesizing HLS to IP
Blocks まで実行して、docker でコンテナに入り、Vivado HLS プロジェクトを覗き始めた。今回は、その続きで、Vivado HLS
のプロジェクトを見ていこう。
finn
をやってみる11(tfc_end2end_example.ipynb その6)
前回は、 end2end_example の
tfc_end2end_example.ipynb の 3. Vivado HLS and IPI の Synthesizing HLS to IP
Blocks まで実行して、docker でコンテナに入り、Vivado HLS プロジェクトをみた。今回は、続きの end2end_example
の tfc_end2end_example.ipynb の 3. Vivado HLS and IPI の IP Stitching
からやっていこう。
finn をやってみる12(tfc_end2end_example.ipynb その7)
前回は、end2end_example の
tfc_end2end_example.ipynb 3. Vivado HLS and IPI の IP Stitching をやって、Vivado
のプロジェクトを確認した。今回は、end2end_example の tfc_end2end_example.ipynb の 4. PYNQ
hardware generation and deployment からやってみよう。
finn
をやってみる13(tfc_end2end_example.ipynb その8)
前回は、end2end_example の
tfc_end2end_example.ipynb の 4. PYNQ hardware generation and deployment の
Inserting the IP into a PYNQ Overlay Shell で Vivado
プロジェクトが生成されていなかった。トラブルシューティングをしたところ、Vivado の 2019.2 バージョンを使用していてはダメで、
2019.1 を使う必要があるということが分かった。今回は、Vivado 2019.1 を使用して、もう一度、end2end_example の
tfc_end2end_example.ipynb をやり直してみようと思う。
finn
をやってみる14(tfc_end2end_example.ipynb その9)
前回は、Vivado 2019.1 を使用して、もう一度、end2end_example
の tfc_end2end_example.ipynb をやり直したところ、 4. PYNQ hardware generation and
deployment の Inserting the IP into a PYNQ Overlay Shell で Vivado
プロジェクトが生成された。今回は、 4. PYNQ hardware generation and deployment の Driver
Generation からやってみよう。