2値化cnn on fpgaでgpuとガチンコバトル(公開版)

Post on 12-Apr-2017

4.631 Views

Category:

Engineering

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

2値化CNN on FPGAでGPUとガチンコバトル中原 啓貴 (東京⼯業⼤学)

2017年2⽉27⽇, TFUG HW部@Google Japan オフィス

⾃⼰紹介• Hiroki Nakahara (中原 啓貴)• 36歳 (若⼿…︖)• JK@⽇本⼀モテない⼤学の教員• FPGA/ディープラーニングは⽣活の糧• FPGAは専⾨ではありません

(HDLを書くようになったのは学位を取ってから, ⾼位合成を始めたのはʼ15年)• 多値論理と論理関数の複雑度が専⾨

2

Custom Computing Machine

3

Multi‐valued logic Pattern matching circuit• Regular expressionmatching circuit

• Packet classifier• IP address look‐up

40m

Radio telescopeDeep neural network

内容• エッジでディープラーニング• FPGAとは︖• CNN (Convolutional Neural Network)の復習• 2値化CNN (Convolutional Neural Network)• ⾼位合成を使った2値化CNNの実現• 2値化CNNの性能評価• まとめ

4

エッジでディープラーニング

5

AIはどこにでも︕

6

AIにおけるDeep Neural Network (DNN)

7J. 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

Deep Neural Networkの認識精度

8

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.

DNNが台頭した背景

9

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

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

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

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

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

応⽤事例: K-Glass

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

組込み(エッジ)でディープラーニング• クラウドでの問題

• ネットワーク遅延• プライバシー• セキュリティ

• 学習はオンライン,推論だけ⾏うことを想定

• 検討事項• 計算能⼒• バッテリ• 冷却ファン• バッテリ時間

12

FPGAとは?

13

FPGA?• Field(現場で)• Programmable(書き換えができる)

• Gate(論理ゲートの)• Array(集合体)

14

PCIに刺してGPUの代わりにアクセラレータ (Altera社)

指先よりも小さいよ!(Lattice社)

ラズパイにのっけて高速化(Xilinx社)

iPhone7にも!!

FPGAの基本的な構造

15

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-UpTable (LUT)

I/O Block

Channels

Switch Blocks

LUTを使った論理ゲートの実現x0 x1 x2 y0 0 0 00 0 1 00 1 0 00 1 1 01 0 0 01 0 1 01 1 0 01 1 1 1

x0 x1 x2 y0 0 0 00 0 1 10 1 0 10 1 1 11 0 0 11 0 1 11 1 0 11 1 1 1

LUTの出⼒を書き換えて様々な論理ゲートを実現 16

ChannelとSwitch Block

LUTどちらもトランジスタのスイッチ

17

Programmable=メモリ書き換え

18

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の対象=論理回路

19

module hoge(input a, b, c;output d);

assign d = (a & b) | c;

endmodule

Xilinx社

Altera社

実現したい論理回路をハードウェア記述⾔語で書く(Verilog HDL/ VHDL)

FPGAベンダーが提供するCADツールでビットストリームに合成する

FPGAにビットストリームを送信して回路が実現︕

Convolutional Neural Network(CNN)の復習

20

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

21

Deep Neural Network

22

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. 23

畳込み演算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) 24

畳込み演算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

+

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 3

6

x1 x0 x1

x0 x1 x0

x0 x0 x1

x0 x0 x1

x1 x0 x1

x1 x1 x1

+

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

6 4

x1 x0 x1

x0 x1 x0

x0 x0 x1

x0 x0 x1

x1 x0 x1

x1 x1 x1

+

27

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次元に拡張

28

AlexNet• ディープラーニングブームに⽕をつけた記念的CNN• ILSVRCʼ12優勝 (誤認識率16%)• ⽔増し(Augmentation)による学習データ増加• 8層, Dropout, アンサンブルCNN, ReLU活性化関数

A. Krizhevsky, I. Sutskever, and G. Hinton. Imagenet classification with deep convolutional neural networks. In Advances in Neural Information Processing Systems 25, pages 1106–1114, 2012. 29

AlexNetが実現できた理由LeNet‐5, 1998

AlexNet, 2012

学習画像数: 107

学習画像数: 1014

30

データの⽔増し(Augmentation)• もはや常識, 差別化のポイント(ノウハウ多数)• 計算資源 (GPUのメモリ) とのトレード・オフ

31

GoogLeNet• Network-in-network• ILSVRCʼ14で優勝 (誤認識率6.7%)• 22層, Inception演算, フル結合層なし

Christian Szegedy, Wei Liu, Yangqing Jia, Pierre Sermanet, Scott E. Reed, Dragomir Anguelov, Dumitru Erhan, Vincent Vanhoucke, Andrew Rabinovich: Going deeper with convolutions. CVPR 2015: 1-9 32

Inception演算• カーネルサイズ1x1の畳込み→次元圧縮

33

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 34

VGGのアイデア: 層を深くする• 上位層→分離性能が上がる• つまり, 深くすれば認識精度が上がる

35

どこまでも深くできるのか︖• 答えはNO→勾配消失/発散問題• 活性化関数の微分(誤差)を更新するため

逆伝搬: (0.1)100→0, 順伝搬: (1.1)100→∞

Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun, “Deep Residual Learning for Image Recognition,” IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2016

レイヤを増やす(=深くする)と認識率悪化

36

ResNet• ILSVRCʼ15優勝 (誤認識率3.57%)• 152層︕︕, Batch Normalization

Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun, “Deep Residual Learning for Image Recognition,” IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2016

⼊⼒xと出⼒H(x)を⼀致させたい→残差(Residual)F(x)をCNNで学習

37

BatchNormalization• 正規化を⾏った後, スケーリングとシフトを⾏う• 学習による発散を抑える

Sergey Ioffe and Christian Szegedy, “Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift,” ICML2015. 38

ここまでのまとめ

39

AlexNet VGG GoogLeNet ResNetYear 2012 2014 2014 2015#Layers 8 19 22 152Accuracy 16.4% 7.3% 6.7% 3.57%Inception (NinN) ‐‐‐ ‐‐‐ ✔ ‐‐‐

Kernel Size 11,5,3 3 7,1,3,5 7,1,3,5FC Size 4096,4096,

10004096,4096,

10001000 1000

Normalization Local Response

‐‐‐ Local Response

Batch

様々な最適化⼿法

40

CNNの最適化⼿法• Pruning• Weight Sharing• Quantization• Binarized/Ternarized• (ほかにもたくさんあるけど講演時間の都合で…)

• Winograd アルゴリズム• Dark Knowledge• Law Rank Approximation• 蒸留, ファインチューニング,,

41

Pruning

42Han et al. “Learning both Weights and Connections for Efficient Neural Networks,” NIPS15

• 枝やニューロンを刈る• 最近出たのは, 刈った後に再度付け加えて精度アップ

• 再学習して認識精度Keep• 圧縮率: LeNet-5→12x, AlexNet→9x, VGG16→13x

Pruning後の再学習が効果的︕

Weight Sharing

43S. Han et al., “Deep Compression: Compressing Deep Neural Networks With Pruning, Trained Quantization and HUFFMAN Coding,” ICLR2016.

Quantization• 量⼦化ビット数を減らして⾯積と帯域を稼ぐ• 認識精度に効くところは⼤きめに• 単精度浮動⼩数点を8or4ビット固定⼩数点に削減して認識

精度0.4%低下(VGG16)

44

J. Qiu et al., “Going Deeper with Embedded FPGA Platform for Convolutional Neural Network,”  ISFPGA2016.

2値化CNNをFPGAで実現

45

FPGAと他のデバイスの⽐較

46

• FPGAの利点• 書換え可能(アルゴリズム変更に対応)→ASICへの利点• 電⼒性能効率に優れる→CPU, GPUへの利点

• FPGAの⽋点• 対CPU→コスト⾼• 対GPU→単純に遅い, 開発時間が⻑い• 対ASIC→コスト⾼, 電⼒⼤きい

現時点ではアルゴリズムの進歩についていく→FPGAがよいのでは枯れる時期を⾒極める⽬利きが重要, 組み合わせも視野に

2値化CNNの導⼊→⾼速化・省⾯積化(=コスト削減・低消費電⼒)

組込み(ハードウェア)に適したCNN︖AlexNet VGG GoogLeNet ResNet

Year 2012 2014 2014 2015#Layers 8 19 22 152Accuracy 16.4% 7.3% 6.7% 3.57%Inception (NinN) ‐‐‐ ‐‐‐ ✔ ‐‐‐

Kernel Size 11,5,3 3 7,1,3,5 7,1,3,5FC Size 4096,4096,

10004096,4096,

10001000 1000

Normalization Local Response

‐‐‐ Local Response

Batch

3.5%の認識率改善のために, 異なるハードウェア(カーネルサイズ),⼤量のハードウェア(層数)は許されるか︖→ VGGを選択 47

CNNのハードウェア実現• 各層を時分割で実⾏, 層毎にパイプライン処理

W1

W2

W3

W4

X

X’

重みを保持 中間層を保持(Ping-pongメモリ)

X X’ X X’ X

48積和演算展開&パイプライン

FPGA実装におけるボトルネック• VGGのプロファイル解析• 畳込み層→積和演算器不⾜

• フル結合層→メモリ不⾜

J. Qiu et al., “Going Deeper with Embedded FPGA Platform for Convolutional Neural Network,”ISFPGA2016. 49

2値化ニューラルネットワーク• ⼆値(-1/+1)の乗算• 乗算器をXNORゲートで

50

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

低精度CNN関連論⽂• Binary Connected [NIPS, Dec., 2015]• Binarized Neural Networks [arXiv, Mar., 2016]• Ternary-Net [arXiv, May, 2016]→ IntelがResNetを実装. 認識精度2%低下でGPU

(Titan X)と同程度の性能 [ISFPGA, Feb., 2017]• Local Binary CNNs [Aug., 2016]• XNOR-Net [ECCV, Oct., 2016]

51

XNORによる2値化CNN

52

x1

w0 (Bias)

fsgn(Y)Y

z

w1

x2

w2

xn

wn

...

2値化CNNの効果

53

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 (東⼯⼤), et al. “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,”

54

(余談)PYNQの開発状況• 新しいライブラリ(Arduino, PMOD,)を開発中• 相変わらずお⼿軽(Pythonで叩く+Jupyter)・⾼性能

55

from pynq.iop import Pmod_PWMfrom pynq.iop import PMODA, PMODBfrom pynq.iop import Adafruit_LCD18_DDRfrom pynq.iop import ARDUINO

lcd = Adafruit_LCD18_DDR(ARDUINO)pwm_A = Pmod_PWM(PMODA, 0)

PYNQでも2値化CNN• https://github.com/Xilinx/BNN-PYNQ(ソースはFINNという論⽂)• Theanoで学習→C/C++に変換後⾼位合成

56

2値化によるメモリ量削減@VGG1119383

4850

338

float int8 Binary

18Kb BRAM

10

6

14

float int8 Binary

DSP48E Block

77435586

4064

float int8 Binary

FF (Flip Flop)14006

11503

7690

float int8 Binary

LUT (Look‐Up Table)

57

ボトルネック

メモリ量削減→電⼒効率向上• メモリと演算器の距離∝電⼒→FPGAのオンチップメモリに格納できれば電⼒効率↑

E. Joel et al., “Tutorial on Hardware Architectures for Deep Neural Networks,” MICRO‐49, 2016.58

2値化CNNの戦略

メモリ量削減→オンチップ化• 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は整数)で調整も可能)

59

LUTLUTLUT LUT

LUTLUTLUT LUT

LUTLUTLUT LUT

認識精度低下に対して• バッチ正規化(BatchNormalization)を導⼊

0

20

40

60

80

100

# of epochs

Classification error (%)

(a) float32 bit precision CNN

1                80              160    2000

20

40

60

80

100

# of epochsClassification 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.

60

2値化CNNにBatchNormalizationが効果的な理由

Y

fsgn(Y)

‐1

+1

0OOO OOOXX XXX X Y

fsgn(Y)

‐1

+1

0OOO OOOXX XXX X

+1

‐1

スケーリング( )により幅2に正規化

シフト( )により‐1〜+1に制限

61

⾼位合成を⽤いた2値化CNNの実現

62

ギャップ…

63

module hoge(input a, b, c;output d);

assign d = (a & b) | c;

endmodule

実現したい論理回路をハードウェア記述⾔語でもっっっっっっっっっっのすごーく⼤量のHDLで書く(Verilog HDL/ VHDL)

Y = X.dot(W)+B

学習したディイイイプなニューラルネットワークの⾏列演算をあっさり1⾏で書いてしまう

記述量∝設計時間

64

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のメリットを引き出す

65

⾼位合成のフロー(従来はこれをすべて⼈⼿で⾏っていた)

66

Input Behavioral Spec. Dataflow   Scheduling     Data‐path generation

Controller (FSM) GenerationMapping to resources

(Binding)

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

⑤⑥

67

⾼位合成による⾃動合成

⾏列演算ライブラリの中⾝を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値化に変換(開発中)

68

指⽰⼦による性能向上(1)• オリジナルのループ→逐次実⾏

• #pragma HLS unroll → 演算器展開

• #pragma HLS pipeline → パイプライン化

for ( int i = 0; i < N; i++){op_Read;op_MAC;op_Write;}

for ( int i = 0; i < N; i++){#pragma HLS pipelineop_Read;op_MAC;op_Write;}

for ( int i = 0; i < N; i++){#pragma HLS unroll 3op_Read;op_MAC;op_Write;}

RD MAC WR RD MAC WR

RD MAC WRRD MAC WR

RD MAC WR

RD MAC WRRD MAC WRRD MAC WR

スループット: 3サイクルレイテンシ: 3サイクル演算量: 1/3 データ/サイクル

スループット: 3サイクルレイテンシ: 3サイクル演算量: 1 データ/サイクル

スループット: 1サイクルレイテンシ: 3サイクル演算量: 1 データ/サイクル

69

指⽰⼦による性能向上(2)• #pragma HLS unroll → 演算器展開

• #pragma HLS pipeline → パイプライン化Int X[100];#pragma HLS array partitionfor ( int i = 0; i < N; i++){#pragma HLS pipelineop_Read;op_MAC;op_Write;}

Int X[100];#pragma HLS array partitionfor ( int i = 0; i < N; i++){#pragma HLS unroll 3op_Read;op_MAC;op_Write;}

RD MAC WRRD MAC WR

RD MAC WR

RD MAC WRRD MAC WRRD MAC WR

スループット: 3サイクルレイテンシ: 3サイクル演算量: 1 データ/サイクル

スループット: 1サイクルレイテンシ: 3サイクル演算量: 1 データ/サイクル

70

MemMemMem

MemMemMem

RD MAC WR

MemMem

MemMem

CNNにおける適切な指⽰⼦• 外部メモリと内部メモリでループを分割• 内部メモリ︓展開した演算器をパイプライン化

C. Zhang et al., “Optimizing FPGA‐based Accelerator Design for Deep Convolutional Neural Networks,” ISFPGA2015, pp. 161‐170, 2015.

RAMRAM

RAM

++

++

+… …

パイプラインレジスタ

71

指⽰⼦の効果

46.3 

87.1  90.4 

2.2  1.9 11.8 

1.5  2.1 10.6 

3.6  4.4 

28.1 

No pragma Unroll Unroll+Pipeline

リソース利⽤率 (%)

BRAM18K DSP48E FF LUT

0.16 0.48 

119.57 

0.10

1.00

10.00

100.00

1000.00

No pragma Unroll Unroll+Pipeline

FPS (Frames per second)

• リソース利⽤率と性能はトレードオフ• 内部メモリを削減すれば更に性能向上可能

72FPGAのリソース量∝推定のスピード

2値化CNNの評価

73

評価環境• FPGA: Digilent社Nexys4 Videoボード

• Xilinx社 Artix-7 FPGA搭載XC7A200T-1SBG484C• LUT数: 129000• 18Kb BRAM数: 730• DSP48E数: 740• 512Mb DDR3 Memory• MicroBlaze実装

• CNN設計: Chainer 1.20.0• VGG16をCifar10で学習

• GeForce Titan X

74

GPU, CPUとの⽐較Platform

Device Quad‐core ARM Cortex‐A57

256‐coreMaxwell GPU

Artix 7

Clock Freq.  1.9 GHz 998 MHz 100 MHzFPS 0.2 116.9 119.5Power [W] 7 17 3Efficiency [FPS/W] 0.03 6.87 39.83Accuracy [%] 92.35 87.45

75

NVidia Jetson TX1                        Digilent Nexys4 Video

認識精度に関して• アルゴリズムとデータでカバー可能

• 2値化VGG16 を使って ImageNetのサブセットを学習→3⽇で90.3%認識精度達成

76

Joseph Redmon, Ali Farhadi, “YOLO9000: Better, Faster, Stronger,”

まとめ

77

まとめ• HW向けCNNのトレンドを紹介

• 技術はめまぐるしく進歩中• 今年も重要な発表が⾏われる可能性は極めて⾼い

• 2値化CNNの紹介• 演算器をEXORゲート, メモリを内部メモリで実現• FPGAでも⾼性能かつ低消費電⼒化達成

• ⾼位合成による短期間設計• ディープラーニングフレームワークとの連携でアルゴリズム屋でも

⾼性能HW開発可能に• FPGAのリソース量∝性能, ただし電⼒・コストとのトレード・オフ

• GPU, CPUとの⽐較• GPUより若⼲⾼速, 認識精度5%低下, 電⼒効率5.5倍優• 認識精度低下は学習テクニックでカバー可能

(ここが差別化のポイント) 78

Contact Info.• 東京⼯業⼤学 産学連携推進本部

(http://www.sangaku.titech.ac.jp/index.html)• 東京⼯業⼤学 中原研究室 (http://naklab.wpblog.jp/)

79

top related