fpgax2016 ドキュンなfpga

50
ドキュンなFPGA 中原 啓貴@oboe7man 1

Upload: hiroki-nakahara

Post on 21-Apr-2017

3.247 views

Category:

Engineering


5 download

TRANSCRIPT

Page 1: FPGAX2016 ドキュンなFPGA

ドキュンなFPGA中原 啓貴@oboe7man

1

Page 2: FPGAX2016 ドキュンなFPGA

内容• ⾃⼰紹介• AIとディープニューラルネットワークの現状• ディープニューラルネットワークについて• ディープニューラルネットワークの研究動向• ⾼位合成+FPGAでディープニューラルネットワーク• ドキュンなFPGA(デモあり)• 感想とまとめ

2

Page 3: FPGAX2016 ドキュンなFPGA

⾃⼰紹介• Hiroki Nakahara (中原 啓貴)• 35歳 (若⼿…︖)• JK@⽇本⼀モテない⼤学の教員• FPGAは⽣活の糧• 刹那的思考• ⼀発屋• 狂⽝

3

Page 4: FPGAX2016 ドキュンなFPGA

Custom Computing Machine

4

Multi‐valued logic Pattern matching circuit• Regular expressionmatching circuit

• Packet classifier• IP address look‐up

40m

Radio telescopeDeep neural network

Page 5: FPGAX2016 ドキュンなFPGA

AIはどこにでも︕

5

Page 6: FPGAX2016 ドキュンなFPGA

AIにおけるDeep Neural Network (DNN)

6J. Park, “Deep Neural Network SoC: Bringing deep learning to mobile devices,” Deep Neural Network SoC Workshop, 2016.

Brain Inspired

AIMachine Learning

Deep LearningDNN RNN

Silicon retina

Neuromorphic

Attentionbased processing

Electroniccochlea

Bio‐mimic

Fuzzy logic

Knowledgerepresentation

Natural lang.proc.

Geneticalgorithm

SVMDecision TreeK‐nearestneighbor

Bayesian

Page 7: FPGAX2016 ドキュンなFPGA

Artificial Neuron (AN)

+

x0=1

x1

x2

xN

...

w0 (Bias)

w1

w2

wN

f(u)u y

xi: Input signalwi: Weightu: Internal statef(u): Activation function (Sigmoid, ReLU, etc.)y: Output signal

y f (u)

u wixii0

N

7

Page 8: FPGAX2016 ドキュンなFPGA

Deep Neural Network

8

happy

sad

mad

curious

出典: imotionsglobal.com

Page 9: FPGAX2016 ドキュンなFPGA

DNNの歴史

9

58 69 74 95 98 06 12

Perceptron

XOR問題

Back‐propagation

SVM

ConvolutionalNeural Network

RestrictedBoltzmannMachine

GoogleBrain Project

AlexNetが世界⼀に

Page 10: FPGAX2016 ドキュンなFPGA

Deep Neural Networkの認識精度

10

0

5

10

15

20

25

30

2010 2011 2012 2013 2014 2015 Human

認識

精度

[%]

Year

Deep ConvolutionalNeural Network (CNN)による劇的な改善

⼈の認識精度を上回る

O. Russakovsky et al. “ImageNet Top 5 Classification Error (%),” IJCV 2015.

Page 11: FPGAX2016 ドキュンなFPGA

DNNが台頭した背景

11

⾼性能コンピュータ&⼤規模データに加えアルゴリズムの発展が後押し

(左): “Single-Threaded Integer Performance,” 2016(右): 中原, “インターネットにおける検索エンジンの技術動向,” 2014

Page 12: FPGAX2016 ドキュンなFPGA

Google I/O 2015講演より• わずか1年で⾳声認識の誤認識率が23%から8%に下がった

• ⾃動写真整理とインテリジェント写真検索によって、まさに探していたイメージを⾒つけることができる

• ⽂脈を理解し、⾃然⾔語処理・⾔語翻訳によって、ユーザーに即座に返事ができるby スンダル・ピチャイ (Google 副社⻑)

12

Page 13: FPGAX2016 ドキュンなFPGA

応⽤事例: K-Glass

13https://www.youtube.com/watch?v=fzQpSORKYr8

Page 14: FPGAX2016 ドキュンなFPGA

ディープラーニングの開発環境

村上, “ディープラーニング最新動向と技術情報〜なぜGPUがディープラーニングに向いているのか,” 2016

14

学会…CAFFE, 開発事例…Tensorflow(⽇本ではChainerを聞くことが多くなってきた)

Page 15: FPGAX2016 ドキュンなFPGA

FPGAとDeep Neural Network• Microsoft Open Computer Server (写真C)

[email protected] 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

Page 16: FPGAX2016 ドキュンなFPGA

ディープニューラルネットワーク(Deep Neural Network)について

16

Page 17: FPGAX2016 ドキュンなFPGA

Artificial Neuron (AN)

+

x0=1

x1

x2

xN

...

w0 (Bias)

w1

w2

wN

f(u)u y

xi: Input signalwi: Weightu: Internal statef(u): Activation function (Sigmoid, ReLU, etc.)y: Output signal

y f (u)

u wixii0

N

17

Page 18: FPGAX2016 ドキュンなFPGA

Deep Neural Network

18

happy

sad

mad

curious

出典: imotionsglobal.com

Page 19: FPGAX2016 ドキュンなFPGA

要求スペック

• サーバーにおけるディープラーニングでは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 convolutionalneural networks,” Artificial Neural Networks and Machine Learning(ICANN2014), 2014, pp. 281-290.

Page 20: FPGAX2016 ドキュンなFPGA

20億回の積和演算…だと︖• 20億回のMAC演算=20×109

• 仮に100並列DSPブロック@100MHz動作(数千個DSPブロック使えるが1000並列読出しは無理ゲー…)

↓20×107回MAC演算@100MHz(10ns動作, つまり108回実⾏可能)

↓1秒間に0.5回認識処理が可能(2秒間に1回, 遅い︕︕)

20

Page 21: FPGAX2016 ドキュンなFPGA

ディープニューラルネットワークの研究動向

21

Page 22: FPGAX2016 ドキュンなFPGA

DNNの研究課題• ということでMAC演算をなんとかしたい

• 速い(=たくさん実⾏できる)• ⾯積が⼩さい(=たくさん実装できる)

• 5つのMAC演算削減法• 短精度可変ビット→層毎にチューニング, 究極は2値化• 枝刈り→LeNet5• 圧縮→佐野先⽣!• 共有化(再利⽤)→Pixelシフトレジスタ+専⽤データパス• アーキテクチャの練り直し→RNS

• ただし, 認識精度はキープ

22

Page 23: FPGAX2016 ドキュンなFPGA

Convolution Operation

23

Image Source: http://i.stack.imgur.com/GvsBA.jpg

Page 24: FPGAX2016 ドキュンなFPGA

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.

Page 25: FPGAX2016 ドキュンなFPGA

Pixelシフトレジスタ• 毎サイクルごとに画素をシフトレジスタに⼊れる• 該当するピクセルを呼び出して畳み込み

25

C. Farabet, C. Poulet, J. Y. Han and Y. LeCun, “CNP: An FPGA-basedprocessor for convolutional networks,” FPL2009, 2009, pp.32-37.

Page 26: FPGAX2016 ドキュンなFPGA

LeNet5 for MNIST• 枝刈りによる高速化・省面積化

......

120 nodes10 nodes

16 F. maps5x5

16 F. maps10x10

6 F. maps14x14

6 Feature maps28x28Gray scale

image32x32

5x52x2

5x52x2 5x5

Convolution (C) AveragePooling (A)

C                  A      Fully      FConnected (F)

⼀部を切断

Page 27: FPGAX2016 ドキュンなFPGA

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

➔ ➔

Page 28: FPGAX2016 ドキュンなFPGA

DCNN Architecture using the Nested RNS

28

...

16 parallel modulo mi2D convolutional units

...

...

. . .

BRAM BRAM BRAM...

BRAM BRAM BRAM...

BRAM BRAM BRAM...

. . .

Parallel Bin2NRNSConverters

Tree‐based NRNS2BinConverters

Sequencer             

External DDR3SODIMM

DDR3 Ctrl.On‐chipMemory

RNS2Bin

RNS2Bin

RNS2Bin

RNS2Bin

RNS2Bin

......

...

...

H. Nakahara et al., “A deep convolutional neural network based on nested residue number system,” FPL2015.

Page 29: FPGAX2016 ドキュンなFPGA

Stochastic Multiplication• 乗算器をANDゲートで実現できる︕• 加算器はMUXで• 精度を上げようとすると遅くなる

29

Page 30: FPGAX2016 ドキュンなFPGA

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

Page 31: FPGAX2016 ドキュンなFPGA

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: Outputwi: WeightU: 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

Page 32: FPGAX2016 ドキュンなFPGA

Prediction (Recognition) Accuracy

32

Method Error RateBinaryNet 11.40%Binary Connect 8.27%Gated pooling 7.62%

Method Error RateBinaryNet 2.80%Binary Connect 2.15%Gated pooling 1.69%

CIFAR‐10 Benchmark DNN

SVHN Benchmark DNN

Page 33: FPGAX2016 ドキュンなFPGA

⾼位合成+FPGAでディープニューラルネットワーク

33

Page 34: FPGAX2016 ドキュンなFPGA

High-Level Synthesis (HLS)• 短期間かつ⾼性能実装• ファミコンを1週間で作ったよ• 2値化DNNを1か⽉で作ったよ

短TATというFPGAのメリットを引き出す

34

Page 35: FPGAX2016 ドキュンなFPGA

Deep Convolutional Neural NetworkのHLS実装• 依存性のない7重ループの最適化

→⾼位合成でも最適化しやすい

...

...

120 nodes10 nodes

16 F. maps5x5

16 F. maps10x10

6 F. maps14x14

6 Feature maps28x28Gray scale

image32x32

5x52x2

5x52x2 5x5

1 2 12 4 21 2 1

⑤⑥

Page 36: FPGAX2016 ドキュンなFPGA

(以前の)DNN Design Time

36

HDL

Logic Synthesis

DatasetParameter set

DNN Software on GPUs (Tensolflow, Theano, Caffe, Chainer)

数週間

数か⽉

‐‐‐

Page 37: FPGAX2016 ドキュンなFPGA

DNN Design with HLS

37

C/C++

HDL

High‐LevelSynthesis

Logic Synthesis

DatasetParameter set

DNN Software on GPUs (Tensolflow, Theano, Caffe, Chainer)

Page 38: FPGAX2016 ドキュンなFPGA

DNN Design Time の短縮

38

C/C++

HDL

High‐LevelSynthesis

Logic Synthesis

DatasetParameter set

DNN Software on GPUs (Tensolflow, Theano, Caffe, Chainer)

数週間

数⽇

‐‐‐

Page 39: FPGAX2016 ドキュンなFPGA

DQNなFPGA

39

Page 40: FPGAX2016 ドキュンなFPGA

強化学習(Q-learning)• 機械学習の⼀種

• 現在の状態から最善の⼿(=⾏動)を選択したい• ⾏動に対する報酬を与えて強化

40

× ○

× ○

× ○

× ○

現在の状態

どの⼿がベスト︖

Page 41: FPGAX2016 ドキュンなFPGA

強化学習における学習• 勝ち負けから⾒込みの報酬を与える

41

× ○

× ○

× ○

× ○

現在の状態

× ○

○ ×…

勝ち

↑↑

Page 42: FPGAX2016 ドキュンなFPGA

Deep Q-learning Network• 全部の⼿を試すのは不可能• 報酬を最⼤にする⾏動をDeep Neural Networkで予測Deep Neural Network

+Q-learning

↓Deep Q-learning Network (DQN)

42

Page 43: FPGAX2016 ドキュンなFPGA

AtariのPongをゲームするDQN

43

...512 neurons

3 neurons→上・下・待機

4x43x3

Arcade Learning Environment(ALE)とかOpenAI Gym

6層のConvolutional Deep Neural Network

操作ゲーム画⾯

記録しておく

Page 44: FPGAX2016 ドキュンなFPGA

AtariのPongを勉強するDQN

44

...512 neurons

3 neurons→上・下・待機

4x43x3

Arcade Learning Environment(ALE)とかOpenAI Gym

6層のConvolutional Deep Neural Network

得点が上がる操作(最⼤とはしない)

を学習

ゲーム画⾯

シャッフルする

Page 45: FPGAX2016 ドキュンなFPGA

テクニック• 単にDQNにしただけでは強くならない• ε-greedy: 積極的に良い⼿を選ぶがたまにランダム⾏動• Experience Replay: 記録したデータをシャッフルして

学習に再利⽤• 報酬のclipping: 報酬を+1/-1に限定• つまり、DQNは「気まぐれ」「勤勉家」「無欲」︕︖

45

Page 46: FPGAX2016 ドキュンなFPGA

デモ

46

Page 47: FPGAX2016 ドキュンなFPGA

FPGA DQN

47

...512 neurons

3 neurons→上・下・待機

4x43x3

6層の学習済みConvolutional Deep Neural Network

操作 by UART

ゲーム画⾯by UART

Digilent社 Nexys4 DDR(Xilinx社 Artix7 100T搭載)

Page 48: FPGAX2016 ドキュンなFPGA

設計してみて• 学習: Python on GPU• 認識: Python→C++→HDL→動作• ⾼位合成ツールでもそれなりの性能

• DQNだときちんとリアルタイム動作しました• DQNの設計に1週間, FPGA化に1⽇(!)(ただしHLSの最適化はほとんどしていませんが)

• エラーを⾒つけるのが⼤変• ごくまれにオーバーフローするんです…• 学習に失敗した時のロスがでかい

→学習時間が数⽇ってのがまた• とにかくDNNの学習時間速くしてくださいおながしいます

たのみますよろしく48

Page 49: FPGAX2016 ドキュンなFPGA

まとめ• Deep Neural Networkを簡単に紹介

• まだまだ研究開発途上• 学習時間の短縮がカギに• 電⼒性能効率・短TATなFPGAにチャンス• 既存のフレームワークとの連携による短期間開発

• 応⽤事例としてDQNを動かしてみた• GPUより低消費電⼒・コンパクト• CPUよりも⾼速

49

Page 50: FPGAX2016 ドキュンなFPGA

謝辞• Xilinxユニバーシティプログラム• Alteraユニバーシティプログラム• DQN-chainer作者様• Toronto Univ. Anderson先⽣• KAIST Yoo先⽣

50

⼼の友よ︕