SlideShare a Scribd company logo
Nested RNSを用いた深層畳込み
ニューラルネットワークに関して
中原 啓貴1 笹尾 勤2
1愛媛大学 大学院理工学研究科 電子情報工学専攻
2明治大学 理工学部 情報工学科
1
H. Nakahara and T. Sasao, “A deep convolutional neural network using nested
residue number system,” FPL2015 , 2015, pp.1-6.
上記の日本語版です。スライド自体はFPL2015で発表したほうが新しいです。
発表内容
• 背景
• 深層畳込みニューラルネットワーク
(DCNN: Deep Convolutional Neural Network)
• 剰余数系(RNS: Residue Number System)
• Nested RNSを用いたDCNN
• 実験結果
• まとめ
2
背景
• Neural Networkを多層にしたDeep Neural Network
(DNN)
– FPGA実装[LeCun2009]
– 画期的な学習方法[Hilton2012]
• 既存の問題(過学習等)を解決
• 研究が活発化
– GPUは消費電力が大きいためFPGAの採用が進む
(Microsoftのデータセンタ(Catapult)等)
• 面積性能効率に優れたアーキテクチャ
3
Deep Q-learning Network(DQN)
• 強化学習とDNNの組合せ
• Atariのゲームで人間のエキスパートに圧勝
• TRAXでは人間が勝ちました(3月上旬)
4
深層畳込みニューラルネットワーク
(Deep Convolutional Neural Network:
DCNN)
5
ニューロンモデル
+
x0=1x0=1
x1
x2
xN
... w0
w1
w2
wN
f(u)
u y
バイアス
xi: 入力信号
wi: 結合重み (0の場合, 切断)
u: 内部状態
f(u): 活性化関数
(SigmoidやReLU等)
y: 出力信号
6
y  f (u)
u  wi xi
i0
N

ニューラルネットワーク
(NN: Neural Network)
x1
x2
xL
y1
y2
yN
入力層 中間層 出力層
学習はBack propagation
予測はForward propagation
7
深層畳込みニューラルネットワーク
(DCNN: Deep Convolutional Neural Network)
• 畳み込み層・ダウンサンプリング層・全結合層
– 畳み込み層: 一部のニューロンのみ結合させる
– ダウンサンプリング層: 特徴量をぼやかす (ノイズに強い)
8
今回の仮定
9
↓
ツールを用いて
GPU上でDCNNを
設計し, HDLを出力 HDL
生成されたHDLを
合成してFPGA上で実装
教師データ
ハイパーパラメータ
↓
基本演算
• 2次元畳み込みが計算時間の90%以上を占める
– 本論文ではPoolingや活性化関数は未実装
– 実装は第5レイヤーまで
10
zij  yij  xim, jnwmn
n0
K1

m0
K1

xij: 入力値
yij : バイアス
wmn: 重み係数
K: カーネルサイズ
zij: 出力値
K
K
DCNNの2次元畳み込み回路
(カーネルサイズ: K=3)
11
+
R
+
R
+
R
+
R
+
R
+
R
+
R
+
R
+
RR R
R R
input
output
...
...
W-K registers
(Wは画像の幅)
w00
w10 w20
w01
w02
w11 w21
w22w12
0
MAC (Multiply Accumulation) Unit
DSP48Eブロックで実現可能
W
剰余数系
(RNS: Residue Number System)
12
クイズ
13
剰余数系
(Residue Number System: RNS)
• 整数XをL個の互いに素な整数 {m1,m2,...,mL} に
よる剰余に分解 X={x1,x2,...,xL}して表現
ここで,
ダイナミックレンジ:
14
Xi  X mi
X mi
 X modmi
M  mi
i1
L

(X-|X|miがmi (mi>1)の倍数)つまり最小非負剰余
RNSにおける演算
• 加減乗算(除算除く)を各剰余毎に独立で行える
ここで, は加減乗算(+,-,*)を表す演算子
• 例:
– 法 {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}
15
16
00 01 10 11
00
01
10
11
0
1
1
1
1
1
0
0
0
1
1
1
1
1
0
0
X1=(x1, x2)
X2=(x3, x4)
=2
h(X1) 0 01 1
x1 0 0 1 1
x2 0 1 0 1
h(X1) 0 1 0 1
0 1
00 0 1
01 1 1
10 1 0
11 1 0
x3,x4
h(X1)
関数分解
24x1=16 [bit] 22x1+23x1=12 [bit]
Binary2RNSコンバータ
17
X mod 2 mod 3 mod4
0 0 0 0
1 1 1 1
2 0 2 2
3 1 0 3
4 0 1 0
5 1 2 1
6 0 0 2
7 1 1 3
8 0 2 0
9 1 0 1
10 0 1 2
000 001 010 011
00
01
10
11
0
1
2
0
1
2
0
1
2
0
1
2
0
1
2
0
X2=(x3, x4, x5)
X1=(x1,x2)
X mod 3 の分解表
100 101 110 111
1
2
0
1
2
0
1
2
0
1
2
0
1
2
0
1
LUTカスケードを用いた
Binary2RNSコンバータ
18
LUT cascade for X mod m1
LUT cascade for X mod m2
BRAM
BRAM
BRAM
モジュロ加算器を用いた
RNS2Binary変換回路
19
m1 y1
0 0
1 15
m2 y2
0 0
1 10
2 20
m3 y3
0 0
1 6
2 12
3 18
4 24
モジュロ m1m2m3
加算器
モジュロ m1m2m3
加算器
 322log mm
 312log mm
 212log mm
 12log m
 22log m
 32log m
従来RNSの問題点
• 法が大きくなる, つまり(小さな)同じ法を使えない
– 不均一な回路に分割してしまう
• 例: <7,11,13> (ダイナミックレンジ=1001)
20
3ビット
4ビット
4ビット
6‐input
LUT
8‐input
LUT
8‐input
LUT
3
4
4
4
4
3
3
4
4
Binary2RNS
コンバータ
(BRAMで実現)
RNS2Binary
コンバータ
(BRAMと
DSPブロックで
実現)
Nested RNSを用いたDCNN
21
Nested RNS
• RNSの各剰余を更にRNSで表現
– 同じ法を使い回すことができる
• 例: <7,11,13>×<7,11,13>
<7,<5,6,7>11,<5,6,7>13>×<7,<5,6,7>11,<5,6,7>13>
22
11×11=121なので,
ダイナミックレンジ5×6×7=210をもつ
RNS<5,6,7>で表現
表記:
ネスト以前の法を示す
Nested RNSの例
• 例: <7,<5,6,7>11,<5,6,7>13> 上での 19x22(=418)
19×22
=<5,8,6>×<1,0,9>
=<5,<3,2,1>11,<1,0,6>13>×<1,<0,0,0>11,<4,3,2>13>
=<5,<0,0,0>11,<4,0,5>13>
=<5,0,2>
=418
23
各桁毎にモジュロ乗算
各RNSをバイナリに変換
RNSをバイナリに変換
Nested RNSの実現例
• 加減乗算を細分
– FPGA上のLUT(小規模ROM)で実現可能
24
<5,6,7>
2Bin
Bin2
<7,11,13>
3
<7,11,13>
2Bin
<5,6,7>
2Bin
Bin2
<5,6,7>
Bin2
<5,6,7>
6‐input
LUT
6‐input
LUT
6‐input
LUT
6‐input
LUT
6‐input
LUT
6‐input
LUT
6‐input
LUT
Bin2
<7,11,13>
Bin2
<5,6,7>
Bin2
<5,6,7>
4
4
3
4
4
3
3
3
3
3
3
Nested RNS用
Binary2RNSコンバータの構成
25
Bin2
<7,11,13>
Bin2
<5,6,7>
Bin2
<5,6,7>
ROM
(BRAM)
ROM
(BRAM)
ROM
(BRAM)
...
Bin2
<7>
Bin2
<11>
Bin2
<13>
Bin2
<5,6,7>
Bin2
<5,6,7>
各桁毎に
分解
各桁毎に
LUTカスケードで実現
出力は各法の
RNS表現
<5,6,7>
RNSの法
• 2次元畳み込み回路を対象
– 48ビット×48ビットの積算を121(11×11)回加算
– ダイナミックレンジ: 103ビット
• 2を除く最小の素数(と4)からダイナミックレンジを超えるまで
• 選択結果
<3,4,5,6,7,11,13,17,19,23,29,31,37,41,43,47,53,59,
61,67,71,73,79,83>
26
Nested RNSの法
• 既存RNS
<3,4,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,
61,67,71,73,79,83>
• 121回の積和演算を対象
• 5ビット以上の法(17以上)のみNested RNSで表現
<3,4,5,7,11,13,
<3,4,5,7,11,13>17,
<3,4,5,7,11,13>19,
<3,4,5,7,11,13,<3,4,5,7,11,13>17>23,
<3,4,5,7,11,13,<3,4,5,7,11,13>17>29,
…, <3,4,5,7,11,13,<3,4,5,7,11,13>17>83>
27
全て4ビット以下の法に分解
カーネルサイズを再構成可能な
2次元畳み込み回路
• MUXを切り替えてDCNNの各層毎にカーネルサイズを可変
– 3x3畳み込み回路がベース
28
R R R
R R R
R R
...
W-K registers
w00
w10 w20
w01 w11 w21
0
* * *
+ + +
* * *
+ + +
R R R
R R
...
w02 w12 w22
* * *
+ + +
Input
Output
or
Neighbor
Neighbor
Neighbor
各レイヤー毎に
カーネルサイズを再構成
• 2D畳み込み回路16個を1ユニットとして構成
– レイヤー1: 11x11
– レイヤー2: 5x5 (4カーネル並列)
– レイヤー3~5: 3x3 (16カーネル並列)
29
全体構成
30
...
16 parallel modulo mi
2D convolutional units
...
...
. . .
BRAM BRAM BRAM...
BRAM BRAM BRAM...
BRAM BRAM BRAM...
. . .
Parallel Bin2Nested RNS
Converters
Tree‐based Nested RNS2Bin
Converters
Sequencer             
External DDR3SODIMM
DDR3 Ctrl.DDR3 Ctrl.
On‐chip
Memory
RNS
2
Bin
RNS
2
Bin
RNS
2
Bin
RNS
2
Bin
RNS
2
Bin
.........
...
実験結果
31
実装環境
• FPGAボード: Xilinx社VC707ボード
• FPGA: Virtex7 VC485T
– Slice数: 75,900
– 18kb BRAM数: 2,060
– DSP48E数: 2,160
– 1GB DDR3SODIMM
(バス速度:800MHz, データ幅: 64ビット)
• 合成ツール: Vivado2014.1
– 動作周波数制約: 400MHz
32
他の手法との比較
33
小数点
精度
動作
周波数
[MHz]
FPGA 性能
[GOPS]
演算密度
[GOPS/
Slice x 10‐4]
ASAP2009 16bit 固定 115 Viretex5 LX330T 6.7 1.3
PACT2010 ‐‐‐ 125 Viretex5 SX240T 7.0 1.9
FPL2009 48bit 固定 125 Spartax3A DSP3400 5.3 2.2
ISCA2010 48bit 固定 200 Virtex5 SX240T 16.0 4.3
ICCD2013 ‐‐‐ 150 Virtex6 LVX240T 17.0 4.5
FPGA2015 32bit 浮動 100 Virtex7 VX485T 61.6 8.1
提案手法 48bit 固定 400 Virtex7 VX485T 132.2 25.2
他の手法と比較して演算密度を3.11~19.38倍改善
まとめ
• 深層畳み込みニューラルネットワークを
Nested RNS を用いて実現
– Bin2DeepRNSコンバータをLUTカスケードで実現
– 積和演算を8入力4出力LUTで並列実行
– 面積削減効果を並列度向上に利用
• 既存手法(同一FPGA上における実装)と比較して
演算密度を3.11倍改善
34

More Related Content

PDF
(公開版)Reconf研2017GUINNESS
PDF
2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介
PDF
FPGAX2016 ドキュンなFPGA
PDF
SBRA2018講演資料
PDF
(公開版)FPGAエクストリームコンピューティング2017
PDF
FPGAX2019
PDF
DSF2018講演スライド
PDF
2値化CNN on FPGAでGPUとガチンコバトル(公開版)
(公開版)Reconf研2017GUINNESS
2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介
FPGAX2016 ドキュンなFPGA
SBRA2018講演資料
(公開版)FPGAエクストリームコンピューティング2017
FPGAX2019
DSF2018講演スライド
2値化CNN on FPGAでGPUとガチンコバトル(公開版)

What's hot (20)

PDF
Binarized Neural Networks
PDF
Verilog-HDL Tutorial (4)
PDF
モデルアーキテクチャ観点からのDeep Neural Network高速化
PDF
Embedding Watermarks into Deep Neural Networks
PDF
高位合成でDeep learning
PPTX
畳み込みニューラルネットワークの研究動向
PPTX
LUT-Network ~本物のリアルタイムコンピューティングを目指して~
PPTX
Image net classification with Deep Convolutional Neural Networks
PDF
DEEP LEARNING、トレーニング・インファレンスのGPUによる高速化
PDF
200625material naruse
PDF
20150930
PPTX
LUT-Network Revision2
PDF
Pythonで体験する深層学習 5章
PPTX
[DL輪読会]Xception: Deep Learning with Depthwise Separable Convolutions
PPTX
ResNetの仕組み
PDF
オープンソースコンパイラNNgenでつくるエッジ・ディープラーニングシステム
PDF
論文紹介 Pixel Recurrent Neural Networks
PDF
2019年7月3日 AITCオープンラボ 量子コンピューティング シリーズ第3回 ~日立製作所様における取り組み紹介~
PPTX
CNNの構造最適化手法について
PDF
When NAS Meets Robustness: In Search of Robust Architectures against Adversar...
Binarized Neural Networks
Verilog-HDL Tutorial (4)
モデルアーキテクチャ観点からのDeep Neural Network高速化
Embedding Watermarks into Deep Neural Networks
高位合成でDeep learning
畳み込みニューラルネットワークの研究動向
LUT-Network ~本物のリアルタイムコンピューティングを目指して~
Image net classification with Deep Convolutional Neural Networks
DEEP LEARNING、トレーニング・インファレンスのGPUによる高速化
200625material naruse
20150930
LUT-Network Revision2
Pythonで体験する深層学習 5章
[DL輪読会]Xception: Deep Learning with Depthwise Separable Convolutions
ResNetの仕組み
オープンソースコンパイラNNgenでつくるエッジ・ディープラーニングシステム
論文紹介 Pixel Recurrent Neural Networks
2019年7月3日 AITCオープンラボ 量子コンピューティング シリーズ第3回 ~日立製作所様における取り組み紹介~
CNNの構造最適化手法について
When NAS Meets Robustness: In Search of Robust Architectures against Adversar...
Ad

Viewers also liked (14)

PDF
Verilog-HDL Tutorial (14)
PDF
Verilog-HDL Tutorial (13)
PDF
Verilog-HDL Tutorial (9)
PDF
Verilog-HDL Tutorial (12)
PDF
Verilog-HDL Tutorial (15) software
PDF
Verilog-HDL Tutorial (11)
PDF
Verilog-HDL Tutorial (15) hardware
PDF
FPL15 talk: Deep Convolutional Neural Network on FPGA
PDF
Naist2015 dec ver1
PDF
私のファミコンのfpsは530000です。もちろんフルパワーで(以下略
PDF
Altera sdk for open cl アンケート集計結果(公開版)
PDF
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた
PDF
A Random Forest using a Multi-valued Decision Diagram on an FPGa
PDF
Tensor flow usergroup 2016 (公開版)
Verilog-HDL Tutorial (14)
Verilog-HDL Tutorial (13)
Verilog-HDL Tutorial (9)
Verilog-HDL Tutorial (12)
Verilog-HDL Tutorial (15) software
Verilog-HDL Tutorial (11)
Verilog-HDL Tutorial (15) hardware
FPL15 talk: Deep Convolutional Neural Network on FPGA
Naist2015 dec ver1
私のファミコンのfpsは530000です。もちろんフルパワーで(以下略
Altera sdk for open cl アンケート集計結果(公開版)
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた
A Random Forest using a Multi-valued Decision Diagram on an FPGa
Tensor flow usergroup 2016 (公開版)
Ad

Similar to Nested RNSを用いたディープニューラルネットワークのFPGA実装 (20)

PDF
Deep Learningの基礎と応用
PDF
「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化
PDF
再帰型ニューラルネット in 機械学習プロフェッショナルシリーズ輪読会
PDF
RNN-based Translation Models (Japanese)
PPTX
Hybrid computing using a neural network with dynamic external memory
PPTX
Deep Learningについて(改訂版)
PPTX
「機械学習とは?」から始める Deep learning実践入門
PDF
Recurrent Neural Networks
PDF
Deeplearning勉強会20160220
PDF
第2回 メドレー読書会
PDF
20140726.西野研セミナー
DOCX
レポート深層学習Day3
PPTX
Pythonとdeep learningで手書き文字認識
PPTX
深層学習の数理
PDF
Scikit-learn and TensorFlow Chap-14 RNN (v1.1)
PDF
日本音響学会2017秋 ビギナーズセミナー "深層学習を深く学習するための基礎"
PDF
深層学習フレームワーク Chainer の開発と今後の展開
PDF
深層学習フレームワークChainerの紹介とFPGAへの期待
PDF
深層学習(岡本孝之 著) - Deep Learning chap.1 and 2
PPTX
深層学習の数理:カーネル法, スパース推定との接点
Deep Learningの基礎と応用
「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化
再帰型ニューラルネット in 機械学習プロフェッショナルシリーズ輪読会
RNN-based Translation Models (Japanese)
Hybrid computing using a neural network with dynamic external memory
Deep Learningについて(改訂版)
「機械学習とは?」から始める Deep learning実践入門
Recurrent Neural Networks
Deeplearning勉強会20160220
第2回 メドレー読書会
20140726.西野研セミナー
レポート深層学習Day3
Pythonとdeep learningで手書き文字認識
深層学習の数理
Scikit-learn and TensorFlow Chap-14 RNN (v1.1)
日本音響学会2017秋 ビギナーズセミナー "深層学習を深く学習するための基礎"
深層学習フレームワーク Chainer の開発と今後の展開
深層学習フレームワークChainerの紹介とFPGAへの期待
深層学習(岡本孝之 著) - Deep Learning chap.1 and 2
深層学習の数理:カーネル法, スパース推定との接点

More from Hiroki Nakahara (8)

PDF
FCCM2020: High-Throughput Convolutional Neural Network on an FPGA by Customiz...
PDF
ROS User Group Meeting #28 マルチ深層学習とROS
PDF
ISCAS'18: A Deep Neural Network on the Nested RNS (NRNS) on an FPGA: Applied ...
PDF
ISMVL2018: A Ternary Weight Binary Input Convolutional Neural Network
PDF
FPGA2018: A Lightweight YOLOv2: A binarized CNN with a parallel support vecto...
PDF
FPT17: An object detector based on multiscale sliding window search using a f...
PDF
Verilog-HDL Tutorial (8)
PDF
Verilog-HDL Tutorial (7)
FCCM2020: High-Throughput Convolutional Neural Network on an FPGA by Customiz...
ROS User Group Meeting #28 マルチ深層学習とROS
ISCAS'18: A Deep Neural Network on the Nested RNS (NRNS) on an FPGA: Applied ...
ISMVL2018: A Ternary Weight Binary Input Convolutional Neural Network
FPGA2018: A Lightweight YOLOv2: A binarized CNN with a parallel support vecto...
FPT17: An object detector based on multiscale sliding window search using a f...
Verilog-HDL Tutorial (8)
Verilog-HDL Tutorial (7)

Nested RNSを用いたディープニューラルネットワークのFPGA実装