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値化CNN on FPGAでGPUとガチンコバトル(公開版)

25,623 views

Published on

TensorFlow User Group HW部(2017年2月27日)で使ったスライドです。講演後、一部加筆・修正しています。

Published in: Engineering
  • Hi there! Essay Help For Students | Discount 10% for your first order! - Check our website! https://vk.cc/80SakO
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Awesome lonely girl looking for fun on webcam with the you now - www.xslideshare.usa.cc
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

2値化CNN on FPGAでGPUとガチンコバトル(公開版)

  1. 1. 2値化CNN on FPGAで GPUとガチンコバトル 中原 啓貴 (東京⼯業⼤学) 2017年2⽉27⽇, TFUG HW部 @Google Japan オフィス
  2. 2. ⾃⼰紹介 • Hiroki Nakahara (中原 啓貴) • 36歳 (若⼿…︖) • JK@⽇本⼀モテない⼤学の教員 • FPGA/ディープラーニングは⽣活の糧 • FPGAは専⾨ではありません (HDLを書くようになったのは学位を取っ てから, ⾼位合成を始めたのはʼ15年) • 多値論理と論理関数の複雑度が専⾨ 2
  3. 3. Custom Computing Machine 3 Multi‐valued logic Pattern matching circuit • Regular expression matching circuit • Packet classifier • IP address look‐up 40m Radio telescope Deep neural network
  4. 4. 内容 • エッジでディープラーニング • FPGAとは︖ • CNN (Convolutional Neural Network)の復習 • 2値化CNN (Convolutional Neural Network) • ⾼位合成を使った2値化CNNの実現 • 2値化CNNの性能評価 • まとめ 4
  5. 5. エッジでディープラーニング 5
  6. 6. AIはどこにでも︕ 6
  7. 7. AIにおけるDeep Neural Network (DNN) 7 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
  8. 8. Deep Neural Networkの 認識精度 8 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.
  9. 9. DNNが台頭した背景 9 ⾼性能コンピュータ&⼤規模データに加え アルゴリズムの発展が後押し (左): “Single-Threaded Integer Performance,” 2016 (右): 中原, “インターネットにおける検索エンジンの技術動向,” 2014
  10. 10. ディープラーニングの開発環境 村上, “ディープラーニング最新動向と技術情報〜なぜGPUがディープラーニングに向いているのか,” 2016 10 学会…CAFFE, 開発事例…Tensorflow (⽇本ではChainerを聞くことが多くなってきた)
  11. 11. 応⽤事例: K-Glass 11https://www.youtube.com/watch?v=fzQpSORKYr8
  12. 12. 組込み(エッジ)でディープラーニング • クラウドでの問題 • ネットワーク遅延 • プライバシー • セキュリティ • 学習はオンライン, 推論だけ⾏うことを想定 • 検討事項 • 計算能⼒ • バッテリ • 冷却ファン • バッテリ時間 12
  13. 13. FPGAとは? 13
  14. 14. FPGA? • Field(現場で) • Programmable (書き換えができる) • Gate(論理ゲートの) • Array(集合体) 14 PCIに刺してGPUの代わりに アクセラレータ (Altera社) 指先よりも小さいよ! (Lattice社) ラズパイにのっけて高速化 (Xilinx社) iPhone7にも!!
  15. 15. 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-Up Table (LUT) I/O Block Channels Switch Blocks
  16. 16. 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の出⼒を書き換えて様々な論理ゲートを実現 16
  17. 17. ChannelとSwitch Block LUT どちらも トランジスタの スイッチ 17
  18. 18. 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
  19. 19. FPGAの対象=論理回路 19 module hoge( input a, b, c; output d ); assign d = (a & b) | c; endmodule Xilinx社 Altera社 実現したい論理回路を ハードウェア記述⾔語で書く (Verilog HDL/ VHDL) FPGAベンダーが提供する CADツールでビットストリーム に合成する FPGAにビットストリームを 送信して回路が実現︕
  20. 20. Convolutional Neural Network(CNN)の復習 20
  21. 21. 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  21
  22. 22. Deep Neural Network 22 happy sad mad curious 出典: imotionsglobal.com
  23. 23. 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
  24. 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 x1 x0 x1 x0 x1 x0 x0 x0 x1 x0 x0 x1 x1 x0 x1 x1 x1 x1 + カーネル (この例ではK=3) 24
  25. 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 x1 x0 x1 x0 x1 x0 x0 x0 x1 x0 x0 x1 x1 x0 x1 x1 x1 x1 + 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 3 6 x1 x0 x1 x0 x1 x0 x0 x0 x1 x0 x0 x1 x1 x0 x1 x1 x1 x1 + 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 6 4 x1 x0 x1 x0 x1 x0 x0 x0 x1 x0 x0 x1 x1 x0 x1 x1 x1 x1 + 27
  28. 28. 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
  29. 29. 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
  30. 30. AlexNetが実現できた理由 LeNet‐5, 1998 AlexNet, 2012 学習画像数: 107 学習画像数: 1014 30
  31. 31. データの⽔増し (Augmentation) • もはや常識, 差別化のポイント(ノウハウ多数) • 計算資源 (GPUのメモリ) とのトレード・オフ 31
  32. 32. 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
  33. 33. Inception演算 • カーネルサイズ1x1の畳込み→次元圧縮 33
  34. 34. 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
  35. 35. VGGのアイデア: 層を深くする • 上位層→分離性能が上がる • つまり, 深くすれば認識精度が上がる 35
  36. 36. どこまでも深くできるのか︖ • 答えは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
  37. 37. 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
  38. 38. BatchNormalization • 正規化を⾏った後, スケーリングとシフトを⾏う • 学習による発散を抑える Sergey Ioffe and Christian Szegedy, “Batch Normalization: Accelerating Deep Network Training  by Reducing Internal Covariate Shift,” ICML2015. 38
  39. 39. ここまでのまとめ 39 AlexNet VGG GoogLeNet ResNet Year 2012 2014 2014 2015 #Layers 8 19 22 152 Accuracy 16.4% 7.3% 6.7% 3.57% Inception (NinN) ‐‐‐ ‐‐‐ ✔ ‐‐‐ Kernel Size 11,5,3 3 7,1,3,5 7,1,3,5 FC Size 4096,4096, 1000 4096,4096, 1000 1000 1000 Normalization Local  Response ‐‐‐ Local  Response Batch
  40. 40. 様々な最適化⼿法 40
  41. 41. CNNの最適化⼿法 • Pruning • Weight Sharing • Quantization • Binarized/Ternarized • (ほかにもたくさんあるけど講演時間の都合で…) • Winograd アルゴリズム • Dark Knowledge • Law Rank Approximation • 蒸留, ファインチューニング,, 41
  42. 42. Pruning 42 Han et al. “Learning both Weights and Connections for Efficient Neural Networks,” NIPS15 • 枝やニューロンを刈る • 最近出たのは, 刈った後に再度付け加えて精度アップ • 再学習して認識精度Keep • 圧縮率: LeNet-5→12x, AlexNet→9x, VGG16→13x Pruning後の 再学習が 効果的︕
  43. 43. Weight Sharing 43 S. Han et al., “Deep Compression: Compressing Deep Neural Networks With Pruning, Trained Quantization  and HUFFMAN Coding,” ICLR2016.
  44. 44. Quantization • 量⼦化ビット数を減らして⾯積と帯域を稼ぐ • 認識精度に効くところは⼤きめに • 単精度浮動⼩数点を8or4ビット固定⼩数点に削減して認識 精度0.4%低下(VGG16) 44 J. Qiu et al., “Going Deeper with Embedded FPGA  Platform for Convolutional Neural Network,”   ISFPGA2016.
  45. 45. 2値化CNNをFPGAで実現 45
  46. 46. FPGAと他のデバイスの⽐較 46 • FPGAの利点 • 書換え可能(アルゴリズム変更に対応)→ASICへの利点 • 電⼒性能効率に優れる→CPU, GPUへの利点 • FPGAの⽋点 • 対CPU→コスト⾼ • 対GPU→単純に遅い, 開発時間が⻑い • 対ASIC→コスト⾼, 電⼒⼤きい 現時点ではアルゴリズムの進歩についていく→FPGAがよいのでは 枯れる時期を⾒極める⽬利きが重要, 組み合わせも視野に 2値化CNNの導⼊→⾼速化・省⾯積化(=コスト削減・低消費電⼒)
  47. 47. 組込み(ハードウェア)に適したCNN︖ AlexNet VGG GoogLeNet ResNet Year 2012 2014 2014 2015 #Layers 8 19 22 152 Accuracy 16.4% 7.3% 6.7% 3.57% Inception (NinN) ‐‐‐ ‐‐‐ ✔ ‐‐‐ Kernel Size 11,5,3 3 7,1,3,5 7,1,3,5 FC Size 4096,4096, 1000 4096,4096, 1000 1000 1000 Normalization Local  Response ‐‐‐ Local  Response Batch 3.5%の認識率改善のために, 異なるハードウェア(カーネルサイズ), ⼤量のハードウェア(層数)は許されるか︖ → VGGを選択 47
  48. 48. CNNのハードウェア実現 • 各層を時分割で実⾏, 層毎にパイプライン処理 W1 W2 W3 W4 X X’ 重みを保持 中間層を保持 (Ping-pongメモリ) X X’ X X’ X 48 積和演算展開&パイプライン
  49. 49. FPGA実装におけるボトルネック • VGGのプロファイル解析 • 畳込み層 →積和演算器不⾜ • フル結合層 →メモリ不⾜ J. Qiu et al., “Going Deeper with Embedded FPGA Platform for Convolutional Neural Network,” ISFPGA2016. 49
  50. 50. 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
  51. 51. 低精度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
  52. 52. XNORによる2値化CNN 52 x1 w0 (Bias) fsgn(Y) Y z w1 x2 w2 xn wn ...
  53. 53. 2値化CNNの効果 53 x1 w0 (Bias) fsgn(Y) Y z w1 x2 w2 xn wn ... 短精度(4〜8)ビットを2値に置き換え→メモリ帯域の圧縮 乗算器をXNORに置き換え→回路⾯積の削減
  54. 54. 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
  55. 55. (余談)PYNQの開発状況 • 新しいライブラリ(Arduino, PMOD,)を開発中 • 相変わらずお⼿軽(Pythonで叩く+Jupyter)・⾼性能 55 from pynq.iop import Pmod_PWM from pynq.iop import PMODA, PMODB from pynq.iop import Adafruit_LCD18_DDR from pynq.iop import ARDUINO lcd = Adafruit_LCD18_DDR(ARDUINO) pwm_A = Pmod_PWM(PMODA, 0)
  56. 56. PYNQでも2値化CNN • https://github.com/Xilinx/BNN-PYNQ (ソースはFINNという論⽂) • Theanoで学習→C/C++に変換後⾼位合成 56
  57. 57. 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) 57 ボトルネック
  58. 58. メモリ量削減→電⼒効率向上 • メモリと演算器の距離∝電⼒ →FPGAのオンチップメモリに格納できれば電⼒効率↑ E. Joel et al., “Tutorial on Hardware Architectures for Deep Neural Networks,” MICRO‐49, 2016.58 2値化CNNの戦略
  59. 59. メモリ量削減→オンチップ化 • 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 LUT LUT LUT LUT LUT LUT LUT LUT LUT LUT LUT LUT
  60. 60. 認識精度低下に対して • バッチ正規化(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. 60
  61. 61. 2値化CNNにBatchNormalizationが 効果的な理由 Y fsgn(Y) ‐1 +1 0 OOO OOOXX XXX X Y fsgn(Y) ‐1 +1 0 OOO OOOXX XXX X +1 ‐1 スケーリング( )により 幅2に正規化 シフト( )により ‐1〜+1に制限 61
  62. 62. ⾼位合成を⽤いた 2値化CNNの実現 62
  63. 63. ギャップ… 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. 64. 記述量∝設計時間 64 Y = X.dot(W)+B C/C++: 10⾏ Python: 1⾏ Verilog-HDL: 66⾏
  65. 65. High-Level Synthesis (HLS) • C/C++で設計→アルゴリズム屋でも HWを設計できるように • 2値化Neural netを1か⽉で作成 短TATというFPGAのメリットを引き出す 65
  66. 66. ⾼位合成のフロー (従来はこれをすべて⼈⼿で⾏っていた) 66 Input Behavioral Spec. Dataflow   Scheduling      Data‐path generation Controller (FSM) Generation Mapping to resources (Binding)
  67. 67. 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 ① ② ③ ④ ⑤ ⑥ ⑦ 67
  68. 68. ⾼位合成による⾃動合成 ⾏列演算ライブラリの 中⾝を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
  69. 69. 指⽰⼦による性能向上(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 pipeline op_Read; op_MAC; op_Write; } for ( int i = 0; i < N; i++){ #pragma HLS unroll 3 op_Read; op_MAC; op_Write; } RD MAC WR RD MAC WR RD MAC WR RD MAC WR RD MAC WR RD MAC WR RD MAC WR RD MAC WR スループット: 3サイクル レイテンシ: 3サイクル 演算量: 1/3 データ/サイクル スループット: 3サイクル レイテンシ: 3サイクル 演算量: 1 データ/サイクル スループット: 1サイクル レイテンシ: 3サイクル 演算量: 1 データ/サイクル 69
  70. 70. 指⽰⼦による性能向上(2) • #pragma HLS unroll → 演算器展開 • #pragma HLS pipeline → パイプライン化 Int X[100]; #pragma HLS array partition for ( int i = 0; i < N; i++){ #pragma HLS pipeline op_Read; op_MAC; op_Write; } Int X[100]; #pragma HLS array partition for ( int i = 0; i < N; i++){ #pragma HLS unroll 3 op_Read; op_MAC; op_Write; } RD MAC WR RD MAC WR RD MAC WR RD MAC WR RD MAC WR RD MAC WR スループット: 3サイクル レイテンシ: 3サイクル 演算量: 1 データ/サイクル スループット: 1サイクル レイテンシ: 3サイクル 演算量: 1 データ/サイクル 70 Mem Mem Mem Mem Mem Mem RD MAC WR Mem Mem Mem Mem
  71. 71. CNNにおける適切な指⽰⼦ • 外部メモリと内部メモリでループを分割 • 内部メモリ︓展開した演算器をパイプライン化 C. Zhang et al., “Optimizing FPGA‐based Accelerator Design for Deep Convolutional Neural Networks,”  ISFPGA2015, pp. 161‐170, 2015. RAM RAM RAM ++ ++ + … … パイプライン レジスタ 71
  72. 72. 指⽰⼦の効果 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のリソース量∝推定のスピード
  73. 73. 2値化CNNの評価 73
  74. 74. 評価環境 • 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
  75. 75. GPU, CPUとの⽐較 Platform Device Quad‐core ARM  Cortex‐A57 256‐core Maxwell GPU Artix 7 Clock Freq.  1.9 GHz 998 MHz 100 MHz FPS 0.2 116.9 119.5 Power [W] 7 17 3 Efficiency [FPS/W] 0.03 6.87 39.83 Accuracy [%] 92.35 87.45 75 NVidia Jetson TX1                        Digilent Nexys4 Video
  76. 76. 認識精度に関して • アルゴリズムとデータでカバー可能 • 2値化VGG16 を使って ImageNetの サブセットを学習→3⽇で90.3%認識精度達成 76 Joseph Redmon, Ali Farhadi, “YOLO9000: Better, Faster, Stronger,”
  77. 77. まとめ 77
  78. 78. まとめ • HW向けCNNのトレンドを紹介 • 技術はめまぐるしく進歩中 • 今年も重要な発表が⾏われる可能性は極めて⾼い • 2値化CNNの紹介 • 演算器をEXORゲート, メモリを内部メモリで実現 • FPGAでも⾼性能かつ低消費電⼒化達成 • ⾼位合成による短期間設計 • ディープラーニングフレームワークとの連携でアルゴリズム屋でも ⾼性能HW開発可能に • FPGAのリソース量∝性能, ただし電⼒・コストとのトレード・オフ • GPU, CPUとの⽐較 • GPUより若⼲⾼速, 認識精度5%低下, 電⼒効率5.5倍優 • 認識精度低下は学習テクニックでカバー可能 (ここが差別化のポイント) 78
  79. 79. Contact Info. • 東京⼯業⼤学 産学連携推進本部 (http://www.sangaku.titech.ac.jp/index.html) • 東京⼯業⼤学 中原研究室 (http://naklab.wpblog.jp/) 79

×