SlideShare a Scribd company logo
2値ディープニューラルネットワークと
組込み機器への応⽤
(おまけ: 開発中のツール紹介)
中原 啓貴 (東京⼯業⼤学)
2017年5⽉24⽇
第61回システム制御情報学会研究発表講演会
@京都テルサ
講演内容
• ディープラーニングについて
• FPGAについて
• 2値ディープニューラルネットワーク
• ⾼位合成を⽤いた組込み機器への実装
• 統合開発ツールGUINNESSの紹介
• 性能評価
• まとめ
2
ディープラーニングについて
3
AIはどこにでも︕
4
AIにおけるDeep Neural Network
(DNN)
5
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
機械学習の選択基準
引⽤: Machine Learning Cheat Sheet for scikit‐learn 6
Deep Neural Networkの
認識精度
7
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が台頭した背景
8
⾼性能コンピュータ&⼤規模データに加え
アルゴリズムの発展が後押し
(左): “Single-Threaded Integer Performance,” 2016
(右): 中原, “インターネットにおける検索エンジンの技術動向,” 2014
Applications
• Image:
• Classification, Object
detection, action recognition,
scene understanding
• Natural Language:
• Speech recognition,
Translation
• Video:
• Pedestrian detection, traffic
sign recognition
• Medical:
• Breast cancer cell detection,
brain image segmentation
2017/5/28
9
Object Detection
• YOLO (You Only Look Once)
10
組込み(エッジ)でディープラーニング
• クラウドでの問題
• ネットワーク遅延
• プライバシー
• セキュリティ
• 学習はオンライン,
推論だけ⾏うことを想定
• 検討事項
• 計算能⼒
• バッテリ
• 冷却ファン
• バッテリ時間
11
FPGAについて
12
FPGA?
• Field(現場で)
• Programmable
(書き換えができる)
• Gate(論理ゲートの)
• Array(集合体)
13
PCIに刺してGPUの代わりに
アクセラレータ (Altera社)
指先よりも小さいよ!
(Lattice社)
ラズパイにのっけて高速化
(Xilinx社)
iPhone7にも!!
FPGAの基本的な構造
14
SB SB SB SB
SB SB SB SB
SB SB SB SB
SB SB SB SB
LUT LUT LUT
LUT LUT LUT
LUT LUT LUT
IO IO IO IO IO IO
IO IO IO IO IO IO
IO
IO
IO
IO
IO
IO
IO
IO
IO
IO
IO
IO
Look-Up
Table (LUT)
I/O Block
Channels
Switch Blocks
LUTを使った論理ゲートの実現
x0 x1 x2 y
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 0
1 0 0 0
1 0 1 0
1 1 0 0
1 1 1 1
x0 x1 x2 y
0 0 0 0
0 0 1 1
0 1 0 1
0 1 1 1
1 0 0 1
1 0 1 1
1 1 0 1
1 1 1 1
LUTの出⼒を書き換えて様々な論理ゲートを実現 15
ChannelとSwitch Block
LUT
どちらも
トランジスタの
スイッチ
16
Programmable=メモリ書き換え
17
SB SB SB SB
SB SB SB SB
SB SB SB SB
SB SB SB SB
LUT LUT LUT
LUT LUT LUT
LUT LUT LUT
IO IO IO IO IO IO
IO IO IO IO IO IO
IO
IO
IO
IO
IO
IO
IO
IO
IO
IO
IO
IO
FPGAの対象=論理回路
18
module hoge(
input a, b, c;
output d
);
assign d = (a & b) | c;
endmodule
Xilinx社
Altera社
実現したい論理回路を
ハードウェア記述⾔語で書く
(Verilog HDL/ VHDL)
FPGAベンダーが提供する
CADツールでビットストリーム
に合成する
FPGAにビットストリームを
送信して回路が実現︕
短期間設計&⽣産性向上
• ⾼位合成+プロセッサ内蔵FPGA
19
Xilinx Inc. : Zynq UltraScale+ MPSoC
https://www.xilinx.com/products/silicon‐devices/soc/zynq‐ultrascale‐mpsoc.html
システム設計ツール
• Xilinx社 SDxシリーズ
• Intel社 Intel SDK for OpenCL
• カーネル+ホストで構成
20
ホスト
DDR3 SDRAM x 2DDR3 SDRAM x 2
PCI Express (+DMAとか)
設計に⼿間取る
部分は提供済み
カーネル
⾼位合成で設計
FPGA
PC
FPGAと他のデバイスの⽐較
21
• FPGAの利点
• 書換え可能(アルゴリズム変更に対応)→ASICへの利点
• 電⼒性能効率に優れる→CPU, GPUへの利点
• FPGAの⽋点
• 対CPU→コスト⾼
• 対GPU→単純に遅い, 開発時間が⻑い
• 対ASIC→コスト⾼, 電⼒⼤きい
現時点ではアルゴリズムの進歩についていく→FPGAがよいのでは
枯れる時期を⾒極める⽬利きが重要, 組み合わせも視野に
2値化CNNの導⼊→⾼速化・省⾯積化(=コスト削減・低消費電⼒)
2値ディープニューラルネットワーク
22
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

23
Deep Neural Network
24
happy
sad
mad
curious
出典: imotionsglobal.com
LeNet-5
• CNNのベース (1980年に福島先⽣がネオコグニトロ
ンをすでに発表済み!!)
• 畳込み(特徴抽出)→フル結合(分類)
• 5層
Y. LeCun, L. Bottou, Y. Bengio, and P. Haffner. Gradient-based learning applied to
document recognition. Proceedings of the IEEE, 86(11):2278–2324, 1998. 25
畳込み演算
1 0 1 1
1 1 1 0
0 1 0 0
1 1 0 1
1 1 1 0
0 1 1 0
0 0 0 0
1 0 1 1
5
x1 x0 x1
x0 x1 x0
x0 x0 x1
x0 x0 x1
x1 x0 x1
x1 x1 x1
+
カーネル
(この例ではK=3) 26
畳込み演算
1 0 1 1
1 1 1 0
0 1 0 0
1 1 0 1
1 1 1 0
0 1 1 0
0 0 0 0
1 0 1 1
5 3
x1 x0 x1
x0 x1 x0
x0 x0 x1
x0 x0 x1
x1 x0 x1
x1 x1 x1
+
27
畳込み演算
1 0 1 1
1 1 1 0
0 1 0 0
1 1 0 1
1 1 1 0
0 1 1 0
0 0 0 0
1 0 1 1
5 3
6
x1 x0 x1
x0 x1 x0
x0 x0 x1
x0 x0 x1
x1 x0 x1
x1 x1 x1
+
28
畳込み演算
1 0 1 1
1 1 1 0
0 1 0 0
1 1 0 1
1 1 1 0
0 1 1 0
0 0 0 0
1 0 1 1
5 3
6 4
x1 x0 x1
x0 x1 x0
x0 x0 x1
x0 x0 x1
x1 x0 x1
x1 x1 x1
+
29
CNNで⾏われている畳込み演算
1 0 1 1
1 1 1 0
0 1 0 0
1 1 0 1
1 1 1 0
0 1 1 0
0 0 0 0
1 0 1 1
5 3
6 4
x1 x0 x1
x0 x1 x0
x0 x0 x1
x0 x0 x1
x1 x0 x1
x1 x1 x1
• ANを2次元に拡張
30
VGG-16
• ILSVRC14準優勝 (誤認識率7.4%→0.6ポイント差)
• 全ての畳込み層でカーネルサイズが同じ(K=3)
• VGG11, VGG19もあり
K. Simonyan, A. Zisserman, “Very Deep Convolutional Networks for Large‐Scale Image 
Recognition,” arXiv:1409.1556 31
VGGのアイデア: 層を深くする
• 上位層→分離性能が上がる
• つまり, 深くすれば認識精度が上がる
32
CNNのハードウェア実現
• 各層を時分割で実⾏, 層毎にパイプライン処理
W1
W2
W3
W4
X
X’
重みを保持
中間層を保持
(Ping-pongメモリ)
X X’ X X’ X
33
積和演算展開&パイプライン
2値化ニューラルネットワーク
• ⼆値(-1/+1)の乗算
• 乗算器をXNORゲートで
34
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
2値化CNNの効果
35
x1
w0 (Bias)
fsgn(Y)
Y
z
w1
x2
w2
xn
wn
...
短精度(4〜8)ビットを2値に置き換え→メモリ帯域の圧縮
乗算器をXNORに置き換え→回路⾯積の削減
2値化/3値化 on FPGAがトレンド
• FPT2016 (12⽉開催)
• E. Nurvitadhi (Intel) et al., “Accelerating Binarized Neural
Networks: Comparison of FPGA, CPU, GPU, and ASIC”
• H. Nakahara, “A Memory-Based Realization of a Binarized Deep
Convolutional Neural Network”
• ISFPGA2017 (先週開催)
• Ritchie Zhao et al., “Accelerating Binarized Convolutional Neural
Networks with Software-Programmable FPGAs”
• Y. Umuroglu (Xilinx) et al., FINN: A Framework for Fast,
Scalable Binarized Neural Network Inference
• H. Nakahara, H. Yonekawa, “A Batch Normalization Free
Binarized Convolutional Deep Neural Network on an FPGA”
• Y. Li et al., “A 7.663-TOPS 8.2-W Energy-efficient FPGA
Accelerator for Binary Convolutional Neural Networks,”
• G. Lemieux, “TinBiNN: Tiny Binarized Neural Network Overlay
in Less Than 5,000 4-LUTs,”
36
2値化によるメモリ量削減@VGG11
19383
4850
338
float int8 Binary
18Kb BRAM
10
6
14
float int8 Binary
DSP48E Block
7743
5586
4064
float int8 Binary
FF (Flip Flop)
14006
11503
7690
float int8 Binary
LUT (Look‐Up Table)
37
ボトルネック
メモリ量削減→電⼒効率向上
• メモリと演算器の距離∝電⼒
→FPGAのオンチップメモリに格納できれば電⼒効率↑
E. Joel et al., “Tutorial on Hardware Architectures for Deep Neural Networks,” MICRO‐49, 2016.38
メモリ量削減→オンチップ化
• FPGAのオンチップメモリ
• BRAM (Block RAM) → 数百〜1000個程度
• Distributed RAM (要はLUT) → 数万〜10万個程度
→ 容量は⼩さい(64bit)が, 数の多さで広帯域化
cf. Jetson TX1(GPU) LPDDR4, 25.6GB/s
1万LUT@100MHz → 125GB/s
⾼位合成では #pragma HLS unroll を
打つだけ (factor=N (Nは整数)で調整も可能)
39
LUT
LUT
LUT LUT
LUT
LUT
LUT LUT
LUT
LUT
LUT LUT
認識精度低下に対して
• バッチ正規化(BatchNormalization)を導⼊
0
20
40
60
80
100
# of epochs
Classification error (%)
(a) float32 bit precision CNN
1                80              160    200
0
20
40
60
80
100
# of epochs
Classification error (%)
(b) Binarized CNN
1                80              160    200
単に2値化した場合
提案⼿法
約6%の誤差(VGG‐16を使⽤)
H. Nakahara et al., “A memory‐based binarized convolutional deep neural network,”
FPT2016, pp285‐288, 2016.
40
2値化CNNのアーキテクチャ
• カスタマイズ演算: 1ビット積和演算
• 専⽤パイプライン
41
x00 x01 x02 x03 x04
x10 x11 x12 x13 x14
x20 x21 x22 x23 x24
x30 x31 x32 x33 x34
x40 x41 x42 x43 x44
x22 x21 x20 x14 x13 x12 x11 x10 x04 x03 x02 x01 x00
+
Binarized
Weight
Mem.
Integer
Bias
Mem.
Write
Ctrl.
Logic
Counter
Binarized Feature Map
(L=5, K=3)
Shift Register (2L+K bits)
9
Binarized MACs
(EXNORs + Adder Tree)
Sign
bit
内蔵メモリの活⽤
• 広帯域なメモリを実現
• 外部I/Oを介さないため, 低消費電⼒
42
v
v
v
v
v
v
+
B. Weight
Mem.
Int. Bias
Mem.
Write
Ctrl.
Logic
Counter
Binarized
MACs
Sign
2L+K bits Shift Register
v
v
Ni F. maps
Ni+1 F. maps
Read Ni bits
Update Ni+1 bits
On chip memory realization
⾼位合成を⽤いた組込み機器への実装
〜統合開発ツールGUINNESSの紹介
43
ギャップ…
44
module hoge(
input a, b, c;
output d
);
assign d = (a & b) | c;
endmodule
実現したい論理回路を
ハードウェア記述⾔語で
もっっっっっっっっっっのすごーく
⼤量のHDLで書く
(Verilog HDL/ VHDL)
Y = X.dot(W)+B
学習したディイイイプなニューラルネットワークの
⾏列演算をあっさり1⾏で書いてしまう
記述量∝設計時間
45
Y = X.dot(W)+B
C/C++: 10⾏
Python: 1⾏
Verilog-HDL: 66⾏
High-Level Synthesis
(HLS)
• C/C++で設計→アルゴリズム屋でも
HWを設計できるように
• 2値化Neural netを1か⽉で作成
短TATというFPGAのメリットを引き出す
46
⾼位合成のフロー
(従来はこれをすべて⼈⼿で⾏っていた)
47
Input Behavioral Spec. Dataflow   Scheduling     
Data‐path generation
Controller (FSM) Generation
Mapping to resources
(Binding)
Conventional Design Flow
for the Programmable SoC
48
①
②
④
③
1. Behavior design
2. Profile analysis
3. IP core generation by HLS
4. Bitstream generation by
FPGA CAD tool
5. Middle ware generation
Modern System Design
49
①
②
④
③
1. Behavior design
+ pragmas
2. Profile analysis
3. IP core generation by HLS
4. Bitstream generation by
FPGA CAD tool
5. Middle ware generation
↓
Automatically done
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
①
②
③
④
⑤
⑥
⑦
50
⾼位合成による⾃動合成
⾏列演算ライブラリの
中⾝をC/C++で書く
ただし、HDLよりは抽象的
Y=0;
for(i=0; i < m; i++){
for( j = 0; j < n; j++){
Y += X[i][j]*W[j][i];
}
}
FPGAベンダの
⾼位合成ツールが
HDLを⽣成
↓
従来のフローを通して
FPGAに実現
⾃動⽣成
ディープニューラルネットワークを
既存のフレームワークで設計
(学習はGPU上で)
学習済みCNNを
2値化に変換
(開発中)
51
FPGA向けディープラーニング
統合開発環境: GUINNESS
• A GUI based neural network synthesizerの略
• オープンソース(公開に向け準備中)
• ユーザの準備した画像を学習
• FPGA向けの推論回路⽤ビットストリームを⽣成
• GUIを操作するだけで学習・回路合成が可能
• ハードウェア・アルゴリズムどちらの技術者でも
ディープラーニングを簡単にFPGAに組み込み可能
• コードを書く必要は⼀切なし
Tokyo Tech. Nakahara Lab. 52
GUINNESS (現バージョン)
Tokyo Tech. Nakahara Lab. 53
CNNのパラメータ
(深さ・幅)
レイヤの種類
を指定できます
(奨励パラメータを
読み込み可能)
ユーザの学習データを
使えます
学習の再開・保存が可能
学習パラメータも予め
設定済み
ターゲットFPGAボードを指定するだけで
ビットストリームが⾃動⽣成されます
2値化CNNの評価
54
評価環境
• FPGA: Xilinx社Zynq UntraScale+ MPSoC 評価ボード
• XCZU9EG
• LUT数: 274,080
• 18Kb BRAM数: 1,824
• DSP48E数: 2,520
• quad-core ARM® Cortex-A53
• dual-core Cortex-R5
• Mali-400 MP2 GPU
• 512Mb DDR4 Memory (PL)
• 4GB SODIMM (PS)
• CNN設計: Chainer 1.21.0
• VGG16をCifar10で学習
• GeForce Titan X 使⽤
55
GPU, CPUとの⽐較
Platform
Device
Quad‐core ARM 
Cortex‐A57
256‐core
Maxwell GPU
Zynq UltraScale+
MPSoC
Clock Freq.  1.9 GHz 998 MHz 100 MHz
FPS 0.23 6.40 31.48
Power [W] 
(ボード全体の電⼒)
7 17 22
(チップ単体はかなり低)
Efficiency [FPS/W] 0.032 0.376 1.431
Accuracy [%] 92.35 90.30
56
H. Yonekawa and H. Nakahara, “On‐chip Memory Based Binarized Convolutional Deep Neural Network Applying 
Batch Normalization Free Technique on an FPGA”, IPDPSW 2017, (2017年5⽉29⽇発表).
NVIDIA Jetson TX1 Xilinx ZCU102
認識精度に関して
• アルゴリズムとデータでカバー可能
• 2値化VGG16 を使って ImageNetの
サブセットを学習→3⽇で90.3%認識精度達成
57
Joseph Redmon, Ali Farhadi, “YOLO9000: Better, Faster, Stronger,”
まとめ
58
まとめ
• HW向けCNNのトレンドを紹介
• 技術はめまぐるしく進歩中
• 今年も重要な発表が⾏われる可能性は極めて⾼い
• 2値化CNNの紹介
• 演算器をEXORゲート, メモリを内部メモリで実現
• FPGAでも⾼性能かつ低消費電⼒化達成
• ⾼位合成による短期間設計
• ディープラーニングフレームワークとの連携でアルゴリズム屋でも
⾼性能HW開発可能に
• FPGAのリソース∝性能, ただし電⼒・コストとのトレード・オフ
• GPU, CPUとの⽐較により, FPGAの優位性を⽰した
59

More Related Content

2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介