264 Views
October 22, 18
スライド概要
2018/10/15
Deep Learning JP:
http://deeplearning.jp/hacks/
DL輪読会資料
FPGAで Reservoir Computing 情報理工学系研究科システム情報学専攻M2 上野 洋典
自己紹介 • システム情報学専攻M2 • 転移学習の研究をやっているが,しんどいので別の研究したい • ハードウェアとか • 自動運転ベンチャーでインターンしてます • 修論中間発表2時間前に学振に落ちました • そういうD進もある
概要 • FPGAの簡単な説明 • 以前の発表資料から一部抜粋 • https://www.slideshare.net/DeepLearningJP2016/dl-hacksfpga • Pynqボードの簡単な紹介とデモ • 公式で用意されているCifar-10 • Reservoir Computingの概要とハードウェアの関係 • ハードウェア記述言語(HDL)での実装を試みた
FPGAとは • Field Programmable Gate Array • 動作を書き換えられるデジタル回路の集合体 • 大雑把に言うとANDとかORとかが数万個~数百万個詰まってる • 並列計算が得意 • 自分だけの高速並列計算機が作れる • 機械学習と相性良し ◯ × CPU ソフト開発者たくさん。クロック最速(数GHz) 汎用品の限界。ノイマンボトルネック。ク ロックもう伸びない GPU 大量の数値演算なら最強。ソフト開発者が扱える。クロック速い(1GHz位) 汎用品の限界。電力食い過ぎ(200W) ASIC 自由に専用設計できる。低消費電力(uW~W) 修正できないので開発が大がかり。1~2年+ 数億円かかる。コストの8割が検証作業 FPGA 自由に専用設計できる。低消費電力(mW~W)。いつでも仕様変更・バグ修 正できる。1万円で試せる手軽さ ソフト開発者には難しい。クロック遅い(数 100MHz)。集積度低い https://qiita.com/kazunori279/items/a9e97a4463cab7dda8b9
FPGAのインパクト • 2015年,IntelがFPGA大手のAlteraを2兆円で買収 • MicrosoftのBing検索がFPGAによって2倍高速化 • 杉山研佐藤先生の成果もFPGA
Pynqボード • Pythonで制御できるFPGA • あらかじめ用意した回路デザインをコード中で叩ける • Overlay = APIみたいなもの • ARMチップ+PL • ARM上のLinuxでjupyter notebookも動く • 手軽にディープラーニング • Pynq用BNNのOverlayが用意されている • ×Pythonコードの高位合成はできない • 高位合成: 高級言語 -> ハードウェア記述言語の変換 • 以前の発表で誤った情報を流してしまいました…
Pynqデモ: Cifar10 • Binarized Neural Networkを用いて 右 下の画像を分類 • HWで実行するとSWで実行した場合の 1000倍程度高速 • Core i7等に比べ貧弱なCPUではある • 画像の入出力等が手軽なのは魅力
Cifar10 • CnvClassiferはPynqBNNをラップ している • __init__()でoverlay(=回路デザイン) をload • 予めbitstreamファイルとして用意 • Load_parameters()でcifar-10用の パラメータをload https://github.com/Xilinx/BNN-PYNQ
Reservoir Computingとは 𝒙 𝑡 = 𝑓 𝑊𝑖𝑛 𝒖 𝑡 + 𝑊𝒙 𝑡 − 1 𝒚 𝑡 = 𝑊𝑜𝑢𝑡 𝒙 𝑡 𝒖 𝑡 ∶ 時刻𝑡での入力 𝒙 𝑡 ∶ 時刻𝑡での各ニューロンの出力 𝑾𝒊𝒏 : 入力層と各ニューロンの結合重み 𝑾: 各ニューロン間の結合重み 𝑾𝒐𝒖𝒕 : 各ニューロンと出力層の結合重み 学習するのは𝑊𝑜𝑢𝑡 だけ • 簡単に言うと,途中(赤丸部分)を学習しないRNN • ハードウェア化しやすい • 入力を高次元に写像することに相当 • カーネル法に類似 • 時系列データを扱える
Reservoir Computingのハードウェア化 • FPGAでReservoirを実装する研究も多くあり • 実際の物理デバイス(物体?)をReservoirとして用いる Physical Reservoir Computingという分野もある • バケツの水面,タコ足,etc. [1] Physical Reservoir Computingの数理, 中嶋 浩平
実装 • 記述にはVerilog-HDLを用いた • https://github.com/yuteno/ReservoirComputingVerilog • 簡単のために図のようなcyclicなRCを実装 • 結果的にpynq上では動かせなかった • 回路規模が大きくなりすぎた • 要するにHW設計知識の不足 [2] METHODOLOGIES FOR HARDWARE IMPLEMENTATION OF RESERVOIR COMPUTING SYSTEMS (doctoral thesis), M. Barceló
感想 • HW設計,制約が多くて難しい • 普通にHDL書くのだるい • 理不尽なことが多い • 回路規模の節約のためにstochastic computingを使って 実装したReservoir computingもある • いろんなことやろうとして中途半端になってしまいました