FPGAの部屋 2020年05月28日
FC2ブログ

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

FPGAの部屋

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

finn をやってみる4(1_brevitas_network_import.ipynb その1)

finn をやってみる3(Jupyter Notebook2)”の続き。

前回は、Round を削除して basics の 0_how_to_work_with_onnx.ipynb をやってみたところ、すべて実行することができた。今回は、次に basics の 1_brevitas_network_import.ipynb をやってみよう。

記事中に basics の 1_brevitas_network_import.ipynb のコードや文章を全面的に引用する。

Importing Brevitas networks into FINN
Brevitas で訓練された QNN を FINN にインポートする方法を紹介する。
手順は、

1. Load up the trained PyTorch model
2. Call Brevitas FINN-ONNX export and visualize with Netron
3. Import into FINN and call cleanup transformations


onnx, showSrc, showInNetron をインポートする。

1. Load up the trained PyTorch model
example Brevitas networks の中の全結合ネットワークで 1 ビットの MNIST データセットの LFC-w1a1 モデルをやってみる。
showSrc(LFC) でソースコードを表示した。ソースコードは basics の 1_brevitas_network_import.ipynb のコード参照。
finn_22_200528.png

ネットワークトポロジは、量子化線形層と量子化アクティベーションを生成するいくつかのヘルパー関数を使用して構築されていることがわかります。レイヤーのビット幅は実際にはコンストラクターでパラメーター化されているので、このネットワークの1ビットの重みとアクティベーションバージョンをインスタンス化しましょう。モデルにロードするこのネットワークの事前トレーニング済みの重みもあります。


finn_23_200528.png

finn/src/finn/data/onnx/mnist-conv/test_data_set_0/input_0.pb をロードして、28 x 28 に reshape して表示した。 2 の画像だ。 2 の画像を推論すると 2 の確率が高い。 2 を表示するコードは 2 回実行しないと 2 が表示されない。
finn_24_200528.png

2 の画像を推論結果をグラフにする。
finn_25_200528.png

2. Call Brevitas FINN-ONNX export and visualize with Netron

Brevitasには、FINN-ONNXエクスポート機能が組み込まれています。これは、PyTorchの通常のONNXエクスポート機能に似ていますが、いくつかの違いがあります。
1. 重み量子化ロジックはグラフの一部としてエクスポートされません。むしろ、量子化された重み自体がエクスポートされます。
2. 特別な量子化アノテーションは、低ビット量子化情報を保持するために使用されます。ONNX(執筆時)は、最小ビット幅として8ビットの量子化をサポートしていますが、FINN-ONNXの量子化アノテーションは、バイナリ/バイポーラ量子化に分類できます。
3. 低ビット量子化アクティベーション関数は、MultiThresholdオペレーターとしてエクスポートされます。
実際、次のようにBrevitasモデルからONNXをエクスポートするのは非常に簡単です。


finn_26_200528.png

このノートブックをFINN Dockerコンテナーで実行すると、上記のインポートされたネットワークのインタラクティブな視覚化を確認し、個々のノードをクリックしてパラメーターを調べることができます。MatMulノードのいずれかを見ると、重みがすべて{-1、+1}の値であり、アクティベーションがSign関数であることがわかります。


LFCW1A1.onnx ネットワークを PNG ファイルにしたので貼っておく。
finn_27_200528.png
  1. 2020年05月28日 05:31 |
  2. finn
  3. | トラックバック:0
  4. | コメント:0