SlideShare a Scribd company logo
ドキュンなFPGA
中原 啓貴@oboe7man
1
内容
• ⾃⼰紹介
• AIとディープニューラルネットワークの現状
• ディープニューラルネットワークについて
• ディープニューラルネットワークの研究動向
• ⾼位合成+FPGAでディープニューラルネットワーク
• ドキュンなFPGA(デモあり)
• 感想とまとめ
2
⾃⼰紹介
• Hiroki Nakahara (中原 啓貴)
• 35歳 (若⼿…︖)
• JK@⽇本⼀モテない⼤学の教員
• FPGAは⽣活の糧
• 刹那的思考
• ⼀発屋
• 狂⽝
3
Custom Computing Machine
4
Multi‐valued logic
Pattern matching circuit
• Regular expression
matching circuit
• Packet classifier
• IP address look‐up
40m
Radio telescope
Deep neural network
AIはどこにでも︕
5
AIにおけるDeep Neural Network
(DNN)
6
J. Park, “Deep Neural Network SoC: Bringing deep learning to mobile
devices,” Deep Neural Network SoC Workshop, 2016.
Brain Inspired
AI
Machine 
Learning
Deep 
Learning
DNN RNN
Silicon retina
Neuromorphic
Attention
based processing
Electronic
cochlea
Bio‐mimic
Fuzzy logic
Knowledge
representation
Natural lang.
proc.
Genetic
algorithm
SVM
Decision Tree
K‐nearest
neighbor
Bayesian
Artificial Neuron (AN)
+
x0=1
x1
x2
xN
... w0 (Bias)
w1
w2
wN
f(u)
u y
xi: Input signal
wi: Weight
u: Internal state
f(u): Activation function 
(Sigmoid, ReLU, etc.)
y: Output signal
y  f (u)
u  wi xi
i0
N

7
Deep Neural Network
8
happy
sad
mad
curious
出典: imotionsglobal.com
DNNの歴史
9
58 69 74 95 98 06 12
Perceptron
XOR問題
Back‐
propagation
SVM
Convolutional
Neural Network
Restricted
Boltzmann
Machine
Google
Brain Project
AlexNet
が世界⼀に
Deep Neural Networkの
認識精度
10
0
5
10
15
20
25
30
2010 2011 2012 2013 2014 2015 Human
認識精度[%]
Year
Deep Convolutional
Neural Network (CNN)による
劇的な改善
⼈の認識精度を
上回る
O. Russakovsky et al. “ImageNet Top 5 Classification Error (%),” IJCV 2015.
DNNが台頭した背景
11
⾼性能コンピュータ&⼤規模データに加え
アルゴリズムの発展が後押し
(左): “Single-Threaded Integer Performance,” 2016
(右): 中原, “インターネットにおける検索エンジンの技術動向,” 2014
Google I/O 2015講演より
• わずか1年で⾳声認識の誤認識率が23%から
8%に下がった
• ⾃動写真整理とインテリジェント写真検索によって、
まさに探していたイメージを⾒つけることができる
• ⽂脈を理解し、⾃然⾔語処理・⾔語翻訳によって、
ユーザーに即座に返事ができる
by スンダル・ピチャイ (Google 副社⻑)
12
応⽤事例: K-Glass
13https://www.youtube.com/watch?v=fzQpSORKYr8
ディープラーニングの開発環境
村上, “ディープラーニング最新動向と技術情報〜なぜGPUがディープラーニングに向いているのか,”
2016
14
学会…CAFFE, 開発事例…Tensorflow
(⽇本ではChainerを聞くことが多くなってきた)
FPGAとDeep Neural Network
• Microsoft Open Computer Server (写真C)
• Xeon@2.1GHz x 2
• 64GB DRAM
• 4×HDDs@2TB, 2×SSDs@512GB
• Catapult FPGA accelerator card (写真B)
• Altera Stratix V D5
• PCIe Gen 3×8
• 8GB DDR3@1333
• Torus network
• GPUよりも電⼒効率に優る
• ラックが⼩さい(省スペース)こともメリット
• 短期間開発(短TAT)
• CNNの学習(!)も開発中
15
ディープニューラルネットワーク
(Deep Neural Network)
について
16
Artificial Neuron (AN)
+
x0=1
x1
x2
xN
... w0 (Bias)
w1
w2
wN
f(u)
u y
xi: Input signal
wi: Weight
u: Internal state
f(u): Activation function 
(Sigmoid, ReLU, etc.)
y: Output signal
y  f (u)
u  wi xi
i0
N

17
Deep Neural Network
18
happy
sad
mad
curious
出典: imotionsglobal.com
要求スペック
• サーバーにおけるディープラーニングでは20億回の積和
(MAC)演算が必要︕︕
19
J. Park, “Deep Neural Network SoC: Bringing deep learning to mobile
devices,” Deep Neural Network SoC Workshop, 2016.
J. Cong and B. Xiao, “Minimizing computation in convolutional
neural networks,” Artificial Neural Networks and Machine Learning
(ICANN2014), 2014, pp. 281-290.
20億回の積和演算…だと︖
• 20億回のMAC演算=20×109
• 仮に100並列DSPブロック@100MHz動作
(数千個DSPブロック使えるが1000並列読出しは無理ゲー…)
↓
20×107回MAC演算@100MHz
(10ns動作, つまり108回実⾏可能)
↓
1秒間に0.5回認識処理が可能
(2秒間に1回, 遅い︕︕)
20
ディープニューラルネットワーク
の研究動向
21
DNNの研究課題
• ということでMAC演算をなんとかしたい
• 速い(=たくさん実⾏できる)
• ⾯積が⼩さい(=たくさん実装できる)
• 5つのMAC演算削減法
• 短精度可変ビット→層毎にチューニング, 究極は2値化
• 枝刈り→LeNet5
• 圧縮→佐野先⽣!
• 共有化(再利⽤)→Pixelシフトレジスタ+専⽤データパス
• アーキテクチャの練り直し→RNS
• ただし, 認識精度はキープ
22
Convolution Operation
2
3
Image Source: http://i.stack.imgur.com/GvsBA.jpg
Convolution Operation
24
1 2 1
2 4 2
1 2 1
• ⼊⼒画像に対してカーネルをずらしながら畳み込む
• 例︓ぼかしフィルタ
J. Anderson (トロント⼤, RegUpの作者), “Synthesizing Circuits from
Software with LegUp High-Level Synthesis,” 2016.
Pixelシフトレジスタ
• 毎サイクルごとに画素をシフトレジスタに⼊れる
• 該当するピクセルを呼び出して畳み込み
25
C. Farabet, C. Poulet, J. Y. Han and Y. LeCun, “CNP: An FPGA-based
processor for convolutional networks,” FPL2009, 2009, pp.32-37.
LeNet5 for MNIST
• 枝刈りによる高速化・省面積化
...
...
120 nodes
10 nodes
16 F. maps
5x5
16 F. maps
10x10
6 F. maps
14x14
6 Feature maps
28x28
Gray scale
image
32x32
5x5
2x2
5x5
2x2 5x5
Convolution (C) Average
Pooling (A)
C                  A      Fully      F
Connected (F)
⼀部を切断
Parallel Multiplication
剰余数���による乗算器の削減
• Moduli set〈3,4,5〉, X=8, Y=2
• Z=X×Y=16=(1,0,1)
• X=(2,0,3),      Y=(2,2,2)
Z=(4 mod 3,0 mod 4,6 mod 5)
=(1,0,1)=16
27
Binary2RNS Conversion
RNS2Binary Conversion
➔ ➔
DCNN Architecture using
the Nested RNS
28
...
16 parallel modulo mi
2D convolutional units
...
...
. . .
BRAM BRAM BRAM...
BRAM BRAM BRAM...
BRAM BRAM BRAM...
. . .
Parallel Bin2NRNS
Converters
Tree‐based NRNS2Bin
Converters
Sequencer             
External DDR3SODIMM
DDR3 Ctrl.
On‐chip
Memory
RNS
2
Bin
RNS
2
Bin
RNS
2
Bin
RNS
2
Bin
RNS
2
Bin
.........
...
H. Nakahara et al., “A deep convolutional neural network based on nested residue number system,” FPL2015.
Stochastic Multiplication
• 乗算器をANDゲートで実現できる︕
• 加算器はMUXで
• 精度を上げようとすると遅くなる
29
Deterministic Binarized
Multiplication
• ⼆値(-1/+1)の乗算
• 乗算器をXNORゲートで
• ⾼速だが、精度が低い
30
x1 x2 Y
‐1 ‐1 1
‐1 +1 ‐1
+1 ‐1 ‐1
+1 +1 1
x1 x2 Y
0 0 1
0 1 0
1 0 0
1 1 1
Binarized DCNN
• Treats only binarized (+1/-1) values (weights and inouts)
• Except for the first and the last layers
+
x0=1
x1
x2
xN
...
w0 (Bias)
w1
w2
wN
sign(u)
u s
X: Input (8bit for the layer 1)
si: Output
wi: Weight
U: Internal state (integer)
Sign(U): Sign bit for U
+1 or ‐1
M. Courbariaux, I. Hubara, D. Soudry, R.E.Yaniv, Y. Bengio, “Binarized neural networks: Training deep neural networks
with weights and activations constrained to +1 or -1,” Computer Research Repository (CoRR), Mar., 2016,
http://arxiv.org/pdf/1602.02830v3.pdf
31
Prediction (Recognition)
Accuracy
32
Method Error Rate
BinaryNet 11.40%
Binary Connect 8.27%
Gated pooling 7.62%
Method Error Rate
BinaryNet 2.80%
Binary Connect 2.15%
Gated pooling 1.69%
CIFAR‐10 Benchmark DNN
SVHN Benchmark DNN
⾼位合成+FPGAで
ディープニューラルネットワーク
33
High-Level Synthesis
(HLS)
• 短期間かつ⾼性能実装
• ファミコンを1週間で作ったよ
• 2値化DNNを1か⽉で作ったよ
短TATというFPGAのメリットを引き出す
34
Deep Convolutional
Neural NetworkのHLS実装
• 依存性のない7重ループの最適化
→⾼位合成でも最適化しやすい
...
...
120 nodes
10 nodes
16 F. maps
5x5
16 F. maps
10x10
6 F. maps
14x14
6 Feature maps
28x28
Gray scale
image
32x32
5x5
2x2
5x5
2x2 5x5
1 2 1
2 4 2
1 2 1
①
②
③
④
⑤
⑥
⑦
(以前の)DNN Design Time
36
HDL
Logic Synthesis
DatasetParameter set
DNN Software on GPUs 
(Tensolflow, Theano, Caffe, Chainer)
数週間
数か⽉
‐‐‐
DNN Design with HLS
37
C/C++
HDL
High‐Level
Synthesis
Logic Synthesis
DatasetParameter set
DNN Software on GPUs 
(Tensolflow, Theano, Caffe, Chainer)
DNN Design Time の短縮
38
C/C++
HDL
High‐Level
Synthesis
Logic Synthesis
DatasetParameter set
DNN Software on GPUs 
(Tensolflow, Theano, Caffe, Chainer)
数週間
数⽇
‐‐‐
DQNなFPGA
39
強化学習(Q-learning)
• 機械学習の⼀種
• 現在の状態から最善の⼿(=⾏動)を選択したい
• ⾏動に対する報酬を与えて強化
40
× ○
○
× ○
× ○
○
× ○
○
現在の状態
どの⼿がベスト︖
強化学習における学習
• 勝ち負けから⾒込みの報酬を与える
41
× ○
○
× ○
× ○
○
× ○
○
現在の状態
○
× ○
○ ×
…
勝ち
↑↑
↓
↓
Deep Q-learning Network
• 全部の⼿を試すのは不可能
• 報酬を最⼤にする⾏動をDeep Neural
Networkで予測
Deep Neural Network
+
Q-learning
↓
Deep Q-learning Network (DQN)
42
AtariのPongをゲームするDQN
43
...
512 neurons
3 neurons
→上・下・待機
4x4
3x3
Arcade Learning Environment
(ALE)とかOpenAI Gym
6層のConvolutional Deep Neural Network
操作ゲーム画⾯
記録しておく
AtariのPongを勉強するDQN
44
...
512 neurons
3 neurons
→上・下・待機
4x4
3x3
Arcade Learning Environment
(ALE)とかOpenAI Gym
6層のConvolutional Deep Neural Network
得点が上がる操作
(最⼤とはしない)
を学習
ゲーム画⾯
シャッフルする
テクニック
• 単にDQNにしただけでは強くならない
• ε-greedy: 積極的に良い⼿を選ぶがたまにランダム⾏動
• Experience Replay: 記録したデータをシャッフルして
学習に再利⽤
• 報酬のclipping: 報酬を+1/-1に限定
• つまり、DQNは「気まぐれ」「勤勉家」「無欲」︕︖
45
デモ
46
FPGA DQN
47
...
512 neurons
3 neurons
→上・下・待機
4x4
3x3
6層の学習済みConvolutional Deep Neural Network
操作 by UART
ゲーム画⾯
by UART
Digilent社 Nexys4 DDR
(Xilinx社 Artix7 100T搭載)
設計してみて
• 学習: Python on GPU
• 認識: Python→C++→HDL→動作
• ⾼位合成ツールでもそれなりの性能
• DQNだときちんとリアルタイム動作しました
• DQNの設計に1週間, FPGA化に1⽇(!)
(ただしHLSの最適化はほとんどしていませんが)
• エラーを⾒つけるのが⼤変
• ごくまれにオーバーフローするんです…
• 学習に失敗した時のロスがでかい
→学習時間が数⽇ってのがまた
• とにかくDNNの学習時間速くしてくださいおながしいます
たのみますよろしく
48
まとめ
• Deep Neural Networkを簡単に紹介
• まだまだ研究開発途上
• 学習時間の短縮がカギに
• 電⼒性能効率・短TATなFPGAにチャンス
• 既存のフレームワークとの連携による短期間開発
• 応⽤事例としてDQNを動かしてみた
• GPUより低消費電⼒・コンパクト
• CPUよりも⾼速
49
謝辞
• Xilinxユニバーシティプログラム
• Alteraユニバーシティプログラム
• DQN-chainer作者様
• Toronto Univ. Anderson先⽣
• KAIST Yoo先⽣
50
⼼の友よ︕

More Related Content

FPGAX2016 ドキュンなFPGA