Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介

5,100 views

Published on

Sci17第61回システム制御情報学会研究発表講演会で講演したスライド資料です。開発中のツール紹介もあります。

Published in: Engineering

2値ディープニューラルネットワークと組込み機器への応用: 開発中のツール紹介

  1. 1. 2値ディープニューラルネットワークと 組込み機器への応⽤ (おまけ: 開発中のツール紹介) 中原 啓貴 (東京⼯業⼤学) 2017年5⽉24⽇ 第61回システム制御情報学会研究発表講演会 @京都テルサ
  2. 2. 講演内容 • ディープラーニングについて • FPGAについて • 2値ディープニューラルネットワーク • ⾼位合成を⽤いた組込み機器への実装 • 統合開発ツールGUINNESSの紹介 • 性能評価 • まとめ 2
  3. 3. ディープラーニングについて 3
  4. 4. AIはどこにでも︕ 4
  5. 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
  6. 6. 機械学習の選択基準 引⽤: Machine Learning Cheat Sheet for scikit‐learn 6
  7. 7. Deep Neural Networkの 認識精度 7 0 5 10 15 20 25 30 2010 2011 2012 2013 2014 2015 Human 認識精度[%] Year Deep Convolutional Neural Network (CNN)による 劇的な改善 ⼈の認識精度を 上回る O. Russakovsky et al. “ImageNet Top 5 Classification Error (%),” IJCV 2015.
  8. 8. DNNが台頭した背景 8 ⾼性能コンピュータ&⼤規模データに加え アルゴリズムの発展が後押し (左): “Single-Threaded Integer Performance,” 2016 (右): 中原, “インターネットにおける検索エンジンの技術動向,” 2014
  9. 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
  10. 10. Object Detection • YOLO (You Only Look Once) 10
  11. 11. 組込み(エッジ)でディープラーニング • クラウドでの問題 • ネットワーク遅延 • プライバシー • セキュリティ • 学習はオンライン, 推論だけ⾏うことを想定 • 検討事項 • 計算能⼒ • バッテリ • 冷却ファン • バッテリ時間 11
  12. 12. FPGAについて 12
  13. 13. FPGA? • Field(現場で) • Programmable (書き換えができる) • Gate(論理ゲートの) • Array(集合体) 13 PCIに刺してGPUの代わりに アクセラレータ (Altera社) 指先よりも小さいよ! (Lattice社) ラズパイにのっけて高速化 (Xilinx社) iPhone7にも!!
  14. 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. 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
  16. 16. ChannelとSwitch Block LUT どちらも トランジスタの スイッチ 16
  17. 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
  18. 18. FPGAの対象=論理回路 18 module hoge( input a, b, c; output d ); assign d = (a & b) | c; endmodule Xilinx社 Altera社 実現したい論理回路を ハードウェア記述⾔語で書く (Verilog HDL/ VHDL) FPGAベンダーが提供する CADツールでビットストリーム に合成する FPGAにビットストリームを 送信して回路が実現︕
  19. 19. 短期間設計&⽣産性向上 • ⾼位合成+プロセッサ内蔵FPGA 19 Xilinx Inc. : Zynq UltraScale+ MPSoC https://www.xilinx.com/products/silicon‐devices/soc/zynq‐ultrascale‐mpsoc.html
  20. 20. システム設計ツール • Xilinx社 SDxシリーズ • Intel社 Intel SDK for OpenCL • カーネル+ホストで構成 20 ホスト DDR3 SDRAM x 2DDR3 SDRAM x 2 PCI Express (+DMAとか) 設計に⼿間取る 部分は提供済み カーネル ⾼位合成で設計 FPGA PC
  21. 21. FPGAと他のデバイスの⽐較 21 • FPGAの利点 • 書換え可能(アルゴリズム変更に対応)→ASICへの利点 • 電⼒性能効率に優れる→CPU, GPUへの利点 • FPGAの⽋点 • 対CPU→コスト⾼ • 対GPU→単純に遅い, 開発時間が⻑い • 対ASIC→コスト⾼, 電⼒⼤きい 現時点ではアルゴリズムの進歩についていく→FPGAがよいのでは 枯れる時期を⾒極める⽬利きが重要, 組み合わせも視野に 2値化CNNの導⼊→⾼速化・省⾯積化(=コスト削減・低消費電⼒)
  22. 22. 2値ディープニューラルネットワーク 22
  23. 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 i0 N  23
  24. 24. Deep Neural Network 24 happy sad mad curious 出典: imotionsglobal.com
  25. 25. 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. 25
  26. 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. 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. 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. 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. 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
  31. 31. 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 31
  32. 32. VGGのアイデア: 層を深くする • 上位層→分離性能が上がる • つまり, 深くすれば認識精度が上がる 32
  33. 33. CNNのハードウェア実現 • 各層を時分割で実⾏, 層毎にパイプライン処理 W1 W2 W3 W4 X X’ 重みを保持 中間層を保持 (Ping-pongメモリ) X X’ X X’ X 33 積和演算展開&パイプライン
  34. 34. 2値化ニューラルネットワーク • ⼆値(-1/+1)の乗算 • 乗算器をXNORゲートで 34 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
  35. 35. 2値化CNNの効果 35 x1 w0 (Bias) fsgn(Y) Y z w1 x2 w2 xn wn ... 短精度(4〜8)ビットを2値に置き換え→メモリ帯域の圧縮 乗算器をXNORに置き換え→回路⾯積の削減
  36. 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
  37. 37. 2値化によるメモリ量削減@VGG11 19383 4850 338 float int8 Binary 18Kb BRAM 10 6 14 float int8 Binary DSP48E Block 7743 5586 4064 float int8 Binary FF (Flip Flop) 14006 11503 7690 float int8 Binary LUT (Look‐Up Table) 37 ボトルネック
  38. 38. メモリ量削減→電⼒効率向上 • メモリと演算器の距離∝電⼒ →FPGAのオンチップメモリに格納できれば電⼒効率↑ E. Joel et al., “Tutorial on Hardware Architectures for Deep Neural Networks,” MICRO‐49, 2016.38
  39. 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
  40. 40. 認識精度低下に対して • バッチ正規化(BatchNormalization)を導⼊ 0 20 40 60 80 100 # of epochs Classification error (%) (a) float32 bit precision CNN 1                80              160    200 0 20 40 60 80 100 # of epochs Classification 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. 40
  41. 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. 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
  43. 43. ⾼位合成を⽤いた組込み機器への実装 〜統合開発ツールGUINNESSの紹介 43
  44. 44. ギャップ… 44 module hoge( input a, b, c; output d ); assign d = (a & b) | c; endmodule 実現したい論理回路を ハードウェア記述⾔語で もっっっっっっっっっっのすごーく ⼤量のHDLで書く (Verilog HDL/ VHDL) Y = X.dot(W)+B 学習したディイイイプなニューラルネットワークの ⾏列演算をあっさり1⾏で書いてしまう
  45. 45. 記述量∝設計時間 45 Y = X.dot(W)+B C/C++: 10⾏ Python: 1⾏ Verilog-HDL: 66⾏
  46. 46. High-Level Synthesis (HLS) • C/C++で設計→アルゴリズム屋でも HWを設計できるように • 2値化Neural netを1か⽉で作成 短TATというFPGAのメリットを引き出す 46
  47. 47. ⾼位合成のフロー (従来はこれをすべて⼈⼿で⾏っていた) 47 Input Behavioral Spec. Dataflow   Scheduling      Data‐path generation Controller (FSM) Generation Mapping to resources (Binding)
  48. 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. 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. 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
  51. 51. ⾼位合成による⾃動合成 ⾏列演算ライブラリの 中⾝を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値化に変換 (開発中) 51
  52. 52. FPGA向けディープラーニング 統合開発環境: GUINNESS • A GUI based neural network synthesizerの略 • オープンソース(公開に向け準備中) • ユーザの準備した画像を学習 • FPGA向けの推論回路⽤ビットストリームを⽣成 • GUIを操作するだけで学習・回路合成が可能 • ハードウェア・アルゴリズムどちらの技術者でも ディープラーニングを簡単にFPGAに組み込み可能 • コードを書く必要は⼀切なし Tokyo Tech. Nakahara Lab. 52
  53. 53. GUINNESS (現バージョン) Tokyo Tech. Nakahara Lab. 53 CNNのパラメータ (深さ・幅) レイヤの種類 を指定できます (奨励パラメータを 読み込み可能) ユーザの学習データを 使えます 学習の再開・保存が可能 学習パラメータも予め 設定済み ターゲットFPGAボードを指定するだけで ビットストリームが⾃動⽣成されます
  54. 54. 2値化CNNの評価 54
  55. 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
  56. 56. GPU, CPUとの⽐較 Platform Device Quad‐core ARM  Cortex‐A57 256‐core Maxwell GPU Zynq UltraScale+ MPSoC Clock Freq.  1.9 GHz 998 MHz 100 MHz FPS 0.23 6.40 31.48 Power [W]  (ボード全体の電⼒) 7 17 22 (チップ単体はかなり低) Efficiency [FPS/W] 0.032 0.376 1.431 Accuracy [%] 92.35 90.30 56 H. Yonekawa and H. Nakahara, “On‐chip Memory Based Binarized Convolutional Deep Neural Network Applying  Batch Normalization Free Technique on an FPGA”, IPDPSW 2017, (2017年5⽉29⽇発表). NVIDIA Jetson TX1 Xilinx ZCU102
  57. 57. 認識精度に関して • アルゴリズムとデータでカバー可能 • 2値化VGG16 を使って ImageNetの サブセットを学習→3⽇で90.3%認識精度達成 57 Joseph Redmon, Ali Farhadi, “YOLO9000: Better, Faster, Stronger,”
  58. 58. まとめ 58
  59. 59. まとめ • HW向けCNNのトレンドを紹介 • 技術はめまぐるしく進歩中 • 今年も重要な発表が⾏われる可能性は極めて⾼い • 2値化CNNの紹介 • 演算器をEXORゲート, メモリを内部メモリで実現 • FPGAでも⾼性能かつ低消費電⼒化達成 • ⾼位合成による短期間設計 • ディープラーニングフレームワークとの連携でアルゴリズム屋でも ⾼性能HW開発可能に • FPGAのリソース∝性能, ただし電⼒・コストとのトレード・オフ • GPU, CPUとの⽐較により, FPGAの優位性を⽰した 59

×