概要¶
特徴¶
BinaryBrain は主に当サイトが研究中の LUT(Look-Up Table)-Networkを実験することを目的に作成した ディープラーニング用のプラットフォームです。
LUT-Networkの評価を目的に作成しておりますが、それ以外の用途にも利用可能です。
以下の特徴があります
ニューラルネットのFPGA化をメインターゲットにしている
バイナリネットであるも関わらず変調技術によりAutoencodeや回帰分析が可能
独自のDifferentiable-LUTモデルにより、LUTの性能を最大限引き出したが学習できる
量子化&疎行列のネットワークでパフォーマンスの良い学習が出来る環境を目指している
C++で記述されている
GPU(CUDA)に対応している
高速でマニアックな自作レイヤーが作りやすい
Pythonからの利用も可能
基本的な使い方¶
基本的には C++ や Python で、ネットワークを記述し、学習を行った後に その結果を verilog などに埋め込んで、FPGA化することを目的に作成しています。
C++用のCPU版に関してはヘッダオンリーライブラリとなっているため、include 以下にある ヘッダファイルをインクルードするだけでご利用いただけます。
GPUを使う場合は、ヘッダ読み込みの際に BB_WITH_CUDA マクロを定義した上で、cuda 以下にある ライブラリをビルドした上でリンクする必要があります。
また、BB_WITH_CEREAL マクロを定義すると、途中経過の保存形式に json が利用可能となります。
Python版を使う場合は、一旦ビルドに成功すれば import するだけで利用可能です。
使い方はsamplesなどを参考にしてください。