ハードウェア概要

BNN-PYNQのアクセラレータの概要を記載する

  • BNN-PYNQのアクセラレータは、C++のコードからVivado HLSで高位合成で生成

  • 学習済みの重みは、全てon-chip(モデルの初期化時にロードする)

  • アクセラレータへの入出力データはストリーム処理(AXI4-Stream)
    • DRAMとの接続、レイヤー間の接続は全て64bit幅のストリーム
    • 各レイヤの入出力のI/FはAXI4-Stream
  • Binarized Neural NetworkをFPGA最適化するために、計算をビット演算等で近似している

  • アクセラレータのコアは、行列xベクトルを計算するMVTUというユニット
    • Fully ConnectedレイヤーもConvolutionレイヤーも、内部ではMVTUを使う

    • レイヤー毎に最適化されたMVTUを持つ
      • MTVUは、内部に複数のPE(Processing Element)をもつ

      • PEは、ビット演算を並列化できる(SIMD)

      • MVTUは、PEの数とPE内の並列度(SIMD幅)を高位合成時に変更できる
        • レイヤー毎に最適化することで、モデル全体のボトルネックをなくしてレイテンシを少なくする
  • Folding
    • 完全に並列化するのが理想だが、FPGAのリソースには制限がある
    • そのため、リソース内で最大のハードウェアを用意して、使いまわす仕組み