概要

特徴

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などを参考にしてください。