---
title: [DL Hacks]FPGAでReservoirComputing
tags:  #deep learning  
author: [Deep Learning JP](https://www.docswell.com/user/DeepLearning2023)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/DJYV9GRPJM.jpg?width=480
description: 2018/10/15 Deep Learning JP:  http://deeplearning.jp/hacks/
published: October 22, 18
canonical: https://www.docswell.com/s/DeepLearning2023/K7V13G-dl-hacksfpgareservoircomputing-120268609
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/DJYV9GRPJM.jpg)

FPGAで
Reservoir Computing
情報理工学系研究科システム情報学専攻M2
上野 洋典


# Page. 2

![Page Image](https://bcdn.docswell.com/page/V7NMLGDME8.jpg)

自己紹介
• システム情報学専攻M2
• 転移学習の研究をやっているが，しんどいので別の研究したい
• ハードウェアとか
• 自動運転ベンチャーでインターンしてます
• 修論中間発表2時間前に学振に落ちました
• そういうD進もある


# Page. 3

![Page Image](https://bcdn.docswell.com/page/YJ9N4WGWJ3.jpg)

概要
• FPGAの簡単な説明
• 以前の発表資料から一部抜粋
• https://www.slideshare.net/DeepLearningJP2016/dl-hacksfpga
• Pynqボードの簡単な紹介とデモ
• 公式で用意されているCifar-10
• Reservoir Computingの概要とハードウェアの関係
• ハードウェア記述言語（HDL）での実装を試みた


# Page. 4

![Page Image](https://bcdn.docswell.com/page/GJ8KQNVRED.jpg)

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


# Page. 5

![Page Image](https://bcdn.docswell.com/page/LJLZXP527R.jpg)

FPGAのインパクト
• 2015年，IntelがFPGA大手のAlteraを2兆円で買収
• MicrosoftのBing検索がFPGAによって2倍高速化
• 杉山研佐藤先生の成果もFPGA


# Page. 6

![Page Image](https://bcdn.docswell.com/page/47MVL4397W.jpg)

Pynqボード
• Pythonで制御できるFPGA
• あらかじめ用意した回路デザインをコード中で叩ける
• Overlay = APIみたいなもの
• ARMチップ＋PL
• ARM上のLinuxでjupyter notebookも動く
• 手軽にディープラーニング
• Pynq用BNNのOverlayが用意されている
• ×Pythonコードの高位合成はできない
• 高位合成: 高級言語 -&gt; ハードウェア記述言語の変換
• 以前の発表で誤った情報を流してしまいました…


# Page. 7

![Page Image](https://bcdn.docswell.com/page/P7R2KWQ9J9.jpg)

Pynqデモ: Cifar10
• Binarized Neural Networkを用いて 右
下の画像を分類
• HWで実行するとSWで実行した場合の
1000倍程度高速
• Core i7等に比べ貧弱なCPUではある
• 画像の入出力等が手軽なのは魅力


# Page. 8

![Page Image](https://bcdn.docswell.com/page/PJXDLP53EX.jpg)

Cifar10
• CnvClassiferはPynqBNNをラップ
している
• __init__()でoverlay(=回路デザイン)
をload
• 予めbitstreamファイルとして用意
• Load_parameters()でcifar-10用の
パラメータをload
https://github.com/Xilinx/BNN-PYNQ


# Page. 9

![Page Image](https://bcdn.docswell.com/page/3JKXLD6NED.jpg)

Reservoir Computingとは
𝒙 𝑡 = 𝑓 𝑊𝑖𝑛 𝒖 𝑡 + 𝑊𝒙 𝑡 − 1
𝒚 𝑡 = 𝑊𝑜𝑢𝑡 𝒙 𝑡
𝒖 𝑡 ∶ 時刻𝑡での入力
𝒙 𝑡 ∶ 時刻𝑡での各ニューロンの出力
𝑾𝒊𝒏 : 入力層と各ニューロンの結合重み
𝑾: 各ニューロン間の結合重み
𝑾𝒐𝒖𝒕 : 各ニューロンと出力層の結合重み
学習するのは𝑊𝑜𝑢𝑡 だけ
• 簡単に言うと，途中（赤丸部分）を学習しないRNN
• ハードウェア化しやすい
• 入力を高次元に写像することに相当
• カーネル法に類似
• 時系列データを扱える


# Page. 10

![Page Image](https://bcdn.docswell.com/page/LE353R6ZJ5.jpg)

Reservoir Computingのハードウェア化
• FPGAでReservoirを実装する研究も多くあり
• 実際の物理デバイス（物体？）をReservoirとして用いる
Physical Reservoir Computingという分野もある
• バケツの水面，タコ足，etc.
[1] Physical Reservoir Computingの数理, 中嶋 浩平


# Page. 11

![Page Image](https://bcdn.docswell.com/page/8EDD4YV4EG.jpg)

実装
• 記述にはVerilog-HDLを用いた
• https://github.com/yuteno/ReservoirComputingVerilog
• 簡単のために図のようなcyclicなRCを実装
• 結果的にpynq上では動かせなかった
• 回路規模が大きくなりすぎた
• 要するにHW設計知識の不足
[2] METHODOLOGIES FOR HARDWARE
IMPLEMENTATION OF RESERVOIR COMPUTING
SYSTEMS (doctoral thesis), M. Barceló


# Page. 12

![Page Image](https://bcdn.docswell.com/page/V7PXM6VVE8.jpg)

感想
• HW設計，制約が多くて難しい
• 普通にHDL書くのだるい
• 理不尽なことが多い
• 回路規模の節約のためにstochastic computingを使って
実装したReservoir computingもある
• いろんなことやろうとして中途半端になってしまいました


