2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介
- 5. 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
- 9. 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
- 14. 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
- 15. 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
- 17. 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
- 20. システム設計ツール
• Xilinx社 SDxシリーズ
• Intel社 Intel SDK for OpenCL
• カーネル+ホストで構成
20
ホスト
DDR3 SDRAM x 2DDR3 SDRAM x 2
PCI Express (+DMAとか)
設計に⼿間取る
部分は提供済み
カーネル
⾼位合成で設計
FPGA
PC
- 23. 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
i0
N
23
- 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
x1 x0 x1
x0 x1 x0
x0 x0 x1
x0 x0 x1
x1 x0 x1
x1 x1 x1
+
カーネル
(この例ではK=3) 26
- 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
x1 x0 x1
x0 x1 x0
x0 x0 x1
x0 x0 x1
x1 x0 x1
x1 x1 x1
+
27
- 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
x1 x0 x1
x0 x1 x0
x0 x0 x1
x0 x0 x1
x1 x0 x1
x1 x1 x1
+
28
- 29. 畳込み演算
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
- 30. 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
- 36. 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
- 39. メモリ量削減→オンチップ化
• 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
- 41. 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
- 42. 内蔵メモリの活⽤
• 広帯域なメモリを実現
• 外部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
- 48. 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
- 49. 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
- 50. 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
- 52. FPGA向けディープラーニング
統合開発環境: GUINNESS
• A GUI based neural network synthesizerの略
• オープンソース(公開に向け準備中)
• ユーザの準備した画像を学習
• FPGA向けの推論回路⽤ビットストリームを⽣成
• GUIを操作するだけで学習・回路合成が可能
• ハードウェア・アルゴリズムどちらの技術者でも
ディープラーニングを簡単にFPGAに組み込み可能
• コードを書く必要は⼀切なし
Tokyo Tech. Nakahara Lab. 52
- 53. GUINNESS (現バージョン)
Tokyo Tech. Nakahara Lab. 53
CNNのパラメータ
(深さ・幅)
レイヤの種類
を指定できます
(奨励パラメータを
読み込み可能)
ユーザの学習データを
使えます
学習の再開・保存が可能
学習パラメータも予め
設定済み
ターゲットFPGAボードを指定するだけで
ビットストリームが⾃動⽣成されます
- 55. 評価環境
• 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
- 59. まとめ
• HW向けCNNのトレンドを紹介
• 技術はめまぐるしく進歩中
• 今年も重要な発表が⾏われる可能性は極めて⾼い
• 2値化CNNの紹介
• 演算器をEXORゲート, メモリを内部メモリで実現
• FPGAでも⾼性能かつ低消費電⼒化達成
• ⾼位合成による短期間設計
• ディープラーニングフレームワークとの連携でアルゴリズム屋でも
⾼性能HW開発可能に
• FPGAのリソース∝性能, ただし電⼒・コストとのトレード・オフ
• GPU, CPUとの⽐較により, FPGAの優位性を⽰した
59