Submit Search
Nested RNSを用いたディープニューラルネットワークのFPGA実装
14 likes
5,013 views
Hiroki Nakahara
Nested RNSを用いてディープニューラルネットワークをビット分割する手法を提案し、FPGA上に実装しました。英語版はFPL2015にて発表しています。スライドはFPL2015版のほうが最新です。
Engineering
Related topics:
Deep Neural Network
Read more
1 of 34
Download now
Downloaded 27 times
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
More Related Content
PDF
(公開版)Reconf研2017GUINNESS
Hiroki Nakahara
PDF
2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介
Hiroki Nakahara
PDF
FPGAX2016 ドキュンなFPGA
Hiroki Nakahara
PDF
SBRA2018講演資料
Hiroki Nakahara
PDF
(公開版)FPGAエクストリームコンピューティング2017
Hiroki Nakahara
PDF
FPGAX2019
Hiroki Nakahara
PDF
DSF2018講演スライド
Hiroki Nakahara
PDF
2値化CNN on FPGAでGPUとガチンコバトル(公開版)
Hiroki Nakahara
(公開版)Reconf研2017GUINNESS
Hiroki Nakahara
2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介
Hiroki Nakahara
FPGAX2016 ドキュンなFPGA
Hiroki Nakahara
SBRA2018講演資料
Hiroki Nakahara
(公開版)FPGAエクストリームコンピューティング2017
Hiroki Nakahara
FPGAX2019
Hiroki Nakahara
DSF2018講演スライド
Hiroki Nakahara
2値化CNN on FPGAでGPUとガチンコバトル(公開版)
Hiroki Nakahara
What's hot
(20)
PDF
Binarized Neural Networks
Shotaro Sano
PDF
Verilog-HDL Tutorial (4)
Hiroki Nakahara
PDF
モデルアーキテクチャ観点からのDeep Neural Network高速化
Yusuke Uchida
PDF
Embedding Watermarks into Deep Neural Networks
Yusuke Uchida
PDF
高位合成でDeep learning
Mori Labo.
PPTX
畳み込みニューラルネットワークの研究動向
Yusuke Uchida
PPTX
LUT-Network ~本物のリアルタイムコンピューティングを目指して~
ryuz88
PPTX
Image net classification with Deep Convolutional Neural Networks
Shingo Horiuchi
PDF
DEEP LEARNING、トレーニング・インファレンスのGPUによる高速化
RCCSRENKEI
PDF
200625material naruse
RCCSRENKEI
PDF
20150930
nlab_utokyo
PPTX
LUT-Network Revision2
ryuz88
PDF
Pythonで体験する深層学習 5章
孝好 飯塚
PPTX
[DL輪読会]Xception: Deep Learning with Depthwise Separable Convolutions
Deep Learning JP
PPTX
ResNetの仕組み
Kota Nagasato
PDF
オープンソースコンパイラNNgenでつくるエッジ・ディープラーニングシステム
Shinya Takamaeda-Y
PDF
論文紹介 Pixel Recurrent Neural Networks
Seiya Tokui
PDF
2019年7月3日 AITCオープンラボ 量子コンピューティング シリーズ第3回 ~日立製作所様における取り組み紹介~
aitc_jp
PPTX
CNNの構造最適化手法について
MasanoriSuganuma
PDF
When NAS Meets Robustness:In Search of Robust Architectures againstAdversar...
MasanoriSuganuma
Binarized Neural Networks
Shotaro Sano
Verilog-HDL Tutorial (4)
Hiroki Nakahara
モデルアーキテクチャ観点からのDeep Neural Network高速化
Yusuke Uchida
Embedding Watermarks into Deep Neural Networks
Yusuke Uchida
高位合成でDeep learning
Mori Labo.
畳み込みニューラルネットワークの研究動向
Yusuke Uchida
LUT-Network ~本物のリアルタイムコンピューティングを目指して~
ryuz88
Image net classification with Deep Convolutional Neural Networks
Shingo Horiuchi
DEEP LEARNING、トレーニング・インファレンスのGPUによる高速化
RCCSRENKEI
200625material naruse
RCCSRENKEI
20150930
nlab_utokyo
LUT-Network Revision2
ryuz88
Pythonで体験する深層学習 5章
孝好 飯塚
[DL輪読会]Xception: Deep Learning with Depthwise Separable Convolutions
Deep Learning JP
ResNetの仕組み
Kota Nagasato
オープンソースコンパイラNNgenでつくるエッジ・ディープラーニングシステム
Shinya Takamaeda-Y
論文紹介 Pixel Recurrent Neural Networks
Seiya Tokui
2019年7月3日 AITCオープンラボ 量子コンピューティング シリーズ第3回 ~日立製作所様における取り組み紹介~
aitc_jp
CNNの構造最適化手法について
MasanoriSuganuma
When NAS Meets Robustness:In Search of Robust Architectures againstAdversar...
MasanoriSuganuma
Ad
Viewers also liked
(14)
PDF
Verilog-HDL Tutorial (14)
Hiroki Nakahara
PDF
Verilog-HDL Tutorial (13)
Hiroki Nakahara
PDF
Verilog-HDL Tutorial (9)
Hiroki Nakahara
PDF
Verilog-HDL Tutorial (12)
Hiroki Nakahara
PDF
Verilog-HDL Tutorial (15) software
Hiroki Nakahara
PDF
Verilog-HDL Tutorial (11)
Hiroki Nakahara
PDF
Verilog-HDL Tutorial (15) hardware
Hiroki Nakahara
PDF
FPL15 talk: Deep Convolutional Neural Network on FPGA
Hiroki Nakahara
PDF
Naist2015 dec ver1
Hiroki Nakahara
PDF
私のファミコンのfpsは530000です。もちろんフルパワーで(以下略
Hiroki Nakahara
PDF
Altera sdk for open cl アンケート集計結果(公開版)
Hiroki Nakahara
PDF
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた
Hiroki Nakahara
PDF
A Random Forest using a Multi-valued Decision Diagram on an FPGa
Hiroki Nakahara
PDF
Tensor flow usergroup 2016 (公開版)
Hiroki Nakahara
Verilog-HDL Tutorial (14)
Hiroki Nakahara
Verilog-HDL Tutorial (13)
Hiroki Nakahara
Verilog-HDL Tutorial (9)
Hiroki Nakahara
Verilog-HDL Tutorial (12)
Hiroki Nakahara
Verilog-HDL Tutorial (15) software
Hiroki Nakahara
Verilog-HDL Tutorial (11)
Hiroki Nakahara
Verilog-HDL Tutorial (15) hardware
Hiroki Nakahara
FPL15 talk: Deep Convolutional Neural Network on FPGA
Hiroki Nakahara
Naist2015 dec ver1
Hiroki Nakahara
私のファミコンのfpsは530000です。もちろんフルパワーで(以下略
Hiroki Nakahara
Altera sdk for open cl アンケート集計結果(公開版)
Hiroki Nakahara
電波望遠鏡用の分光器をAltera SDK for OpenCL使ってサクッと作ってみた
Hiroki Nakahara
A Random Forest using a Multi-valued Decision Diagram on an FPGa
Hiroki Nakahara
Tensor flow usergroup 2016 (公開版)
Hiroki Nakahara
Ad
Similar to Nested RNSを用いたディープニューラルネットワークのFPGA実装
(20)
PDF
Deep Learningの基礎と応用
Seiya Tokui
PDF
「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化
marsee101
PDF
再帰型ニューラルネット in 機械学習プロフェッショナルシリーズ輪読会
Shotaro Sano
PDF
RNN-based Translation Models (Japanese)
NAIST Machine Translation Study Group
PPTX
Hybrid computing using a neural network with dynamic external memory
poppyuri
PPTX
Deep Learningについて(改訂版)
Brains Consulting, Inc.
PPTX
「機械学習とは?」から始める Deep learning実践入門
Hideto Masuoka
PDF
Recurrent Neural Networks
Seiya Tokui
PDF
Deeplearning勉強会20160220
正志 坪坂
PDF
第2回 メドレー読書会
Toshifumi
PDF
20140726.西野研セミナー
Hayaru SHOUNO
DOCX
レポート深層学習Day3
ssuser9d95b3
PPTX
Pythonとdeep learningで手書き文字認識
Ken Morishita
PPTX
深層学習の数理
Taiji Suzuki
PDF
Scikit-learn and TensorFlow Chap-14 RNN (v1.1)
孝好 飯塚
PDF
日本音響学会2017秋 ビギナーズセミナー "深層学習を深く学習するための基礎"
Shinnosuke Takamichi
PDF
深層学習フレームワーク Chainer の開発と今後の展開
Seiya Tokui
PDF
深層学習フレームワークChainerの紹介とFPGAへの期待
Seiya Tokui
PDF
深層学習(岡本孝之 著) - Deep Learning chap.1 and 2
Masayoshi Kondo
PPTX
深層学習の数理:カーネル法, スパース推定との接点
Taiji Suzuki
Deep Learningの基礎と応用
Seiya Tokui
「ゼロから作るDeep learning」の畳み込みニューラルネットワークのハードウェア化
marsee101
再帰型ニューラルネット in 機械学習プロフェッショナルシリーズ輪読会
Shotaro Sano
RNN-based Translation Models (Japanese)
NAIST Machine Translation Study Group
Hybrid computing using a neural network with dynamic external memory
poppyuri
Deep Learningについて(改訂版)
Brains Consulting, Inc.
「機械学習とは?」から始める Deep learning実践入門
Hideto Masuoka
Recurrent Neural Networks
Seiya Tokui
Deeplearning勉強会20160220
正志 坪坂
第2回 メドレー読書会
Toshifumi
20140726.西野研セミナー
Hayaru SHOUNO
レポート深層学習Day3
ssuser9d95b3
Pythonとdeep learningで手書き文字認識
Ken Morishita
深層学習の数理
Taiji Suzuki
Scikit-learn and TensorFlow Chap-14 RNN (v1.1)
孝好 飯塚
日本音響学会2017秋 ビギナーズセミナー "深層学習を深く学習するための基礎"
Shinnosuke Takamichi
深層学習フレームワーク Chainer の開発と今後の展開
Seiya Tokui
深層学習フレームワークChainerの紹介とFPGAへの期待
Seiya Tokui
深層学習(岡本孝之 著) - Deep Learning chap.1 and 2
Masayoshi Kondo
深層学習の数理:カーネル法, スパース推定との接点
Taiji Suzuki
More from Hiroki Nakahara
(8)
PDF
FCCM2020: High-Throughput Convolutional Neural Network on an FPGA by Customiz...
Hiroki Nakahara
PDF
ROS User Group Meeting #28 マルチ深層学習とROS
Hiroki Nakahara
PDF
ISCAS'18: A Deep Neural Network on the Nested RNS (NRNS) on an FPGA: Applied ...
Hiroki Nakahara
PDF
ISMVL2018: A Ternary Weight Binary Input Convolutional Neural Network
Hiroki Nakahara
PDF
FPGA2018: A Lightweight YOLOv2: A binarized CNN with a parallel support vecto...
Hiroki Nakahara
PDF
FPT17: An object detector based on multiscale sliding window search using a f...
Hiroki Nakahara
PDF
Verilog-HDL Tutorial (8)
Hiroki Nakahara
PDF
Verilog-HDL Tutorial (7)
Hiroki Nakahara
FCCM2020: High-Throughput Convolutional Neural Network on an FPGA by Customiz...
Hiroki Nakahara
ROS User Group Meeting #28 マルチ深層学習とROS
Hiroki Nakahara
ISCAS'18: A Deep Neural Network on the Nested RNS (NRNS) on an FPGA: Applied ...
Hiroki Nakahara
ISMVL2018: A Ternary Weight Binary Input Convolutional Neural Network
Hiroki Nakahara
FPGA2018: A Lightweight YOLOv2: A binarized CNN with a parallel support vecto...
Hiroki Nakahara
FPT17: An object detector based on multiscale sliding window search using a f...
Hiroki Nakahara
Verilog-HDL Tutorial (8)
Hiroki Nakahara
Verilog-HDL Tutorial (7)
Hiroki Nakahara
Nested RNSを用いたディープニューラルネットワークのFPGA実装
1.
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で発表したほうが新しいです。
2.
発表内容 • 背景 • 深層畳込みニューラルネットワーク (DCNN:
Deep Convolutional Neural Network) • 剰余数系(RNS: Residue Number System) • Nested RNSを用いたDCNN • 実験結果 • まとめ 2
3.
背景 • Neural Networkを多層にしたDeep
Neural Network (DNN) – FPGA実装[LeCun2009] – 画期的な学習方法[Hilton2012] • 既存の問題(過学習等)を解決 • 研究が活発化 – GPUは消費電力が大きいためFPGAの採用が進む (Microsoftのデータセンタ(Catapult)等) • 面積性能効率に優れたアーキテクチャ 3
4.
Deep Q-learning Network(DQN) •
強化学習とDNNの組合せ • Atariのゲームで人間のエキスパートに圧勝 • TRAXでは人間が勝ちました(3月上旬) 4
5.
深層畳込みニューラルネットワーク (Deep Convolutional Neural
Network: DCNN) 5
6.
ニューロンモデル + 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 i0 N
7.
ニューラルネットワーク (NN: Neural Network) x1 x2 xL y1 y2 yN 入力層
中間層 出力層 学習はBack propagation 予測はForward propagation 7
8.
深層畳込みニューラルネットワーク (DCNN: Deep Convolutional
Neural Network) • 畳み込み層・ダウンサンプリング層・全結合層 – 畳み込み層: 一部のニューロンのみ結合させる – ダウンサンプリング層: 特徴量をぼやかす (ノイズに強い) 8
9.
今回の仮定 9 ↓ ツールを用いて GPU上でDCNNを 設計し, HDLを出力 HDL 生成されたHDLを 合成してFPGA上で実装 教師データ ハイパーパラメータ ↓
10.
基本演算 • 2次元畳み込みが計算時間の90%以上を占める – 本論文ではPoolingや活性化関数は未実装 –
実装は第5レイヤーまで 10 zij yij xim, jnwmn n0 K1 m0 K1 xij: 入力値 yij : バイアス wmn: 重み係数 K: カーネルサイズ zij: 出力値 K K
11.
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
12.
剰余数系 (RNS: Residue Number
System) 12
13.
クイズ 13
14.
剰余数系 (Residue Number System:
RNS) • 整数XをL個の互いに素な整数 {m1,m2,...,mL} に よる剰余に分解 X={x1,x2,...,xL}して表現 ここで, ダイナミックレンジ: 14 Xi X mi X mi X modmi M mi i1 L (X-|X|miがmi (mi>1)の倍数)つまり最小非負剰余
15.
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.
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]
17.
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
18.
LUTカスケードを用いた Binary2RNSコンバータ 18 LUT cascade for X mod m1 LUT cascade for X mod m2 BRAM BRAM BRAM
19.
モジュロ加算器を用いた 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
20.
従来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ブロックで 実現)
21.
Nested RNSを用いたDCNN 21
22.
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>で表現 表記: ネスト以前の法を示す
23.
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をバイナリに変換
24.
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
25.
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>
26.
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
27.
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ビット以下の法に分解
28.
カーネルサイズを再構成可能な 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
29.
各レイヤー毎に カーネルサイズを再構成 • 2D畳み込み回路16個を1ユニットとして構成 – レイヤー1:
11x11 – レイヤー2: 5x5 (4カーネル並列) – レイヤー3~5: 3x3 (16カーネル並列) 29
30.
全体構成 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.
実験結果 31
32.
実装環境 • 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.
他の手法との比較 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倍改善
34.
まとめ • 深層畳み込みニューラルネットワークを Nested RNS
を用いて実現 – Bin2DeepRNSコンバータをLUTカスケードで実現 – 積和演算を8入力4出力LUTで並列実行 – 面積削減効果を並列度向上に利用 • 既存手法(同一FPGA上における実装)と比較して 演算密度を3.11倍改善 34
Download