Bridge over troubled Techs.

オープンストリーム CTO 寺田英雄の個人的ブログ

(遅報告)FPGA+ディープラーニングの論文を書きました。

なかなかコンスタントにブログを更新することの難しさを実感しています。
前回記事以降、2〜3月は論文を書くのに必死でした。
ようやく完成して arXiv.org に投稿しました。(
[1803.10930] B-DCGAN:Evaluation of Binarized DCGAN for FPGA
)
FPGAディープラーニングを動かしてみようという実証実験についての論文です。
この実験は、当社と電気通信大学さんとで実施している共同研究の1テーマとしてやったものです。

FPGAの中にDCGANのジェネレータを詰め込むのが最大の課題で、いろんな工夫を凝らして完成しました。
最大のポイントは、ニューラルネット(NN)のバイナリ化(binarize)です。
NNの計算フローのどこをどれぐらいビット削減して良いのか、試行錯誤でベストな構成を見つけました。

FPGAのロジックは、高位合成(HLS)という技術を使って、C++でスクラッチ開発しました。
NNのデコンボリューションの実装が一番大変でした。2重巡回行列の計算が必要なのです。
さらに、このC++ロジックの計算結果は、寸分違わず GPU上の Python/Theano 学習モデルと合致しなければなりません。
PythonC++ を行ったり来たりしながら計算の課程を合わせこむ作業です。
他人様が作ったTheanoライブラリの中身を解読しながらの C++プログラミングとなり、結構大変でした。