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.

FPGAX2016 ドキュンなFPGA

5,518 views

Published on

FPGAエクストリームコンピューティング(2016年8月開催)で使ったスライドです。Deep Q-learning NetworkをFPGAで動かした話とディープニューラルネットワークの紹介です。

Published in: Engineering

FPGAX2016 ドキュンなFPGA

  1. 1. ドキュンなFPGA 中原 啓貴@oboe7man 1
  2. 2. 内容 • ⾃⼰紹介 • AIとディープニューラルネットワークの現状 • ディープニューラルネットワークについて • ディープニューラルネットワークの研究動向 • ⾼位合成+FPGAでディープニューラルネットワーク • ドキュンなFPGA(デモあり) • 感想とまとめ 2
  3. 3. ⾃⼰紹介 • Hiroki Nakahara (中原 啓貴) • 35歳 (若⼿…︖) • JK@⽇本⼀モテない⼤学の教員 • FPGAは⽣活の糧 • 刹那的思考 • ⼀発屋 • 狂⽝ 3
  4. 4. Custom Computing Machine 4 Multi‐valued logic Pattern matching circuit • Regular expression matching circuit • Packet classifier • IP address look‐up 40m Radio telescope Deep neural network
  5. 5. AIはどこにでも︕ 5
  6. 6. AIにおけるDeep Neural Network (DNN) 6 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
  7. 7. 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  7
  8. 8. Deep Neural Network 8 happy sad mad curious 出典: imotionsglobal.com
  9. 9. DNNの歴史 9 58 69 74 95 98 06 12 Perceptron XOR問題 Back‐ propagation SVM Convolutional Neural Network Restricted Boltzmann Machine Google Brain Project AlexNet が世界⼀に
  10. 10. Deep Neural Networkの 認識精度 10 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.
  11. 11. DNNが台頭した背景 11 ⾼性能コンピュータ&⼤規模データに加え アルゴリズムの発展が後押し (左): “Single-Threaded Integer Performance,” 2016 (右): 中原, “インターネットにおける検索エンジンの技術動向,” 2014
  12. 12. Google I/O 2015講演より • わずか1年で⾳声認識の誤認識率が23%から 8%に下がった • ⾃動写真整理とインテリジェント写真検索によって、 まさに探していたイメージを⾒つけることができる • ⽂脈を理解し、⾃然⾔語処理・⾔語翻訳によって、 ユーザーに即座に返事ができる by スンダル・ピチャイ (Google 副社⻑) 12
  13. 13. 応⽤事例: K-Glass 13https://www.youtube.com/watch?v=fzQpSORKYr8
  14. 14. ディープラーニングの開発環境 村上, “ディープラーニング最新動向と技術情報〜なぜGPUがディープラーニングに向いているのか,” 2016 14 学会…CAFFE, 開発事例…Tensorflow (⽇本ではChainerを聞くことが多くなってきた)
  15. 15. FPGAとDeep Neural Network • Microsoft Open Computer Server (写真C) • Xeon@2.1GHz x 2 • 64GB DRAM • 4×HDDs@2TB, 2×SSDs@512GB • Catapult FPGA accelerator card (写真B) • Altera Stratix V D5 • PCIe Gen 3×8 • 8GB DDR3@1333 • Torus network • GPUよりも電⼒効率に優る • ラックが⼩さい(省スペース)こともメリット • 短期間開発(短TAT) • CNNの学習(!)も開発中 15
  16. 16. ディープニューラルネットワーク (Deep Neural Network) について 16
  17. 17. 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  17
  18. 18. Deep Neural Network 18 happy sad mad curious 出典: imotionsglobal.com
  19. 19. 要求スペック • サーバーにおけるディープラーニングでは20億回の積和 (MAC)演算が必要︕︕ 19 J. Park, “Deep Neural Network SoC: Bringing deep learning to mobile devices,” Deep Neural Network SoC Workshop, 2016. J. Cong and B. Xiao, “Minimizing computation in convolutional neural networks,” Artificial Neural Networks and Machine Learning (ICANN2014), 2014, pp. 281-290.
  20. 20. 20億回の積和演算…だと︖ • 20億回のMAC演算=20×109 • 仮に100並列DSPブロック@100MHz動作 (数千個DSPブロック使えるが1000並列読出しは無理ゲー…) ↓ 20×107回MAC演算@100MHz (10ns動作, つまり108回実⾏可能) ↓ 1秒間に0.5回認識処理が可能 (2秒間に1回, 遅い︕︕) 20
  21. 21. ディープニューラルネットワーク の研究動向 21
  22. 22. DNNの研究課題 • ということでMAC演算をなんとかしたい • 速い(=たくさん実⾏できる) • ⾯積が⼩さい(=たくさん実装できる) • 5つのMAC演算削減法 • 短精度可変ビット→層毎にチューニング, 究極は2値化 • 枝刈り→LeNet5 • 圧縮→佐野先⽣! • 共有化(再利⽤)→Pixelシフトレジスタ+専⽤データパス • アーキテクチャの練り直し→RNS • ただし, 認識精度はキープ 22
  23. 23. Convolution Operation 2 3 Image Source: http://i.stack.imgur.com/GvsBA.jpg
  24. 24. Convolution Operation 24 1 2 1 2 4 2 1 2 1 • ⼊⼒画像に対してカーネルをずらしながら畳み込む • 例︓ぼかしフィルタ J. Anderson (トロント⼤, RegUpの作者), “Synthesizing Circuits from Software with LegUp High-Level Synthesis,” 2016.
  25. 25. Pixelシフトレジスタ • 毎サイクルごとに画素をシフトレジスタに⼊れる • 該当するピクセルを呼び出して畳み込み 25 C. Farabet, C. Poulet, J. Y. Han and Y. LeCun, “CNP: An FPGA-based processor for convolutional networks,” FPL2009, 2009, pp.32-37.
  26. 26. LeNet5 for MNIST • 枝刈りによる高速化・省面積化 ... ... 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 Convolution (C) Average Pooling (A) C                  A      Fully      F Connected (F) ⼀部を切断
  27. 27. Parallel Multiplication 剰余数系による乗算器の削減 • Moduli set〈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)=16 27 Binary2RNS Conversion RNS2Binary Conversion ➔ ➔
  28. 28. DCNN Architecture using the Nested RNS 28 ... 16 parallel modulo mi 2D convolutional units ... ... . . . BRAM BRAM BRAM... BRAM BRAM BRAM... BRAM BRAM BRAM... . . . Parallel Bin2NRNS Converters Tree‐based NRNS2Bin Converters Sequencer              External DDR3SODIMM DDR3 Ctrl. On‐chip Memory RNS 2 Bin RNS 2 Bin RNS 2 Bin RNS 2 Bin RNS 2 Bin ......... ... H. Nakahara et al., “A deep convolutional neural network based on nested residue number system,” FPL2015.
  29. 29. Stochastic Multiplication • 乗算器をANDゲートで実現できる︕ • 加算器はMUXで • 精度を上げようとすると遅くなる 29
  30. 30. Deterministic Binarized Multiplication • ⼆値(-1/+1)の乗算 • 乗算器をXNORゲートで • ⾼速だが、精度が低い 30 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
  31. 31. Binarized DCNN • Treats only binarized (+1/-1) values (weights and inouts) • Except for the first and the last layers + x0=1 x1 x2 xN ... w0 (Bias) w1 w2 wN sign(u) u s X: Input (8bit for the layer 1) si: Output wi: Weight U: Internal state (integer) Sign(U): Sign bit for U +1 or ‐1 M. Courbariaux, I. Hubara, D. Soudry, R.E.Yaniv, Y. Bengio, “Binarized neural networks: Training deep neural networks with weights and activations constrained to +1 or -1,” Computer Research Repository (CoRR), Mar., 2016, http://arxiv.org/pdf/1602.02830v3.pdf 31
  32. 32. Prediction (Recognition) Accuracy 32 Method Error Rate BinaryNet 11.40% Binary Connect 8.27% Gated pooling 7.62% Method Error Rate BinaryNet 2.80% Binary Connect 2.15% Gated pooling 1.69% CIFAR‐10 Benchmark DNN SVHN Benchmark DNN
  33. 33. ⾼位合成+FPGAで ディープニューラルネットワーク 33
  34. 34. High-Level Synthesis (HLS) • 短期間かつ⾼性能実装 • ファミコンを1週間で作ったよ • 2値化DNNを1か⽉で作ったよ 短TATというFPGAのメリットを引き出す 34
  35. 35. 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 ① ② ③ ④ ⑤ ⑥ ⑦
  36. 36. (以前の)DNN Design Time 36 HDL Logic Synthesis DatasetParameter set DNN Software on GPUs  (Tensolflow, Theano, Caffe, Chainer) 数週間 数か⽉ ‐‐‐
  37. 37. DNN Design with HLS 37 C/C++ HDL High‐Level Synthesis Logic Synthesis DatasetParameter set DNN Software on GPUs  (Tensolflow, Theano, Caffe, Chainer)
  38. 38. DNN Design Time の短縮 38 C/C++ HDL High‐Level Synthesis Logic Synthesis DatasetParameter set DNN Software on GPUs  (Tensolflow, Theano, Caffe, Chainer) 数週間 数⽇ ‐‐‐
  39. 39. DQNなFPGA 39
  40. 40. 強化学習(Q-learning) • 機械学習の⼀種 • 現在の状態から最善の⼿(=⾏動)を選択したい • ⾏動に対する報酬を与えて強化 40 × ○ ○ × ○ × ○ ○ × ○ ○ 現在の状態 どの⼿がベスト︖
  41. 41. 強化学習における学習 • 勝ち負けから⾒込みの報酬を与える 41 × ○ ○ × ○ × ○ ○ × ○ ○ 現在の状態 ○ × ○ ○ × … 勝ち ↑↑ ↓ ↓
  42. 42. Deep Q-learning Network • 全部の⼿を試すのは不可能 • 報酬を最⼤にする⾏動をDeep Neural Networkで予測 Deep Neural Network + Q-learning ↓ Deep Q-learning Network (DQN) 42
  43. 43. AtariのPongをゲームするDQN 43 ... 512 neurons 3 neurons →上・下・待機 4x4 3x3 Arcade Learning Environment (ALE)とかOpenAI Gym 6層のConvolutional Deep Neural Network 操作ゲーム画⾯ 記録しておく
  44. 44. AtariのPongを勉強するDQN 44 ... 512 neurons 3 neurons →上・下・待機 4x4 3x3 Arcade Learning Environment (ALE)とかOpenAI Gym 6層のConvolutional Deep Neural Network 得点が上がる操作 (最⼤とはしない) を学習 ゲーム画⾯ シャッフルする
  45. 45. テクニック • 単にDQNにしただけでは強くならない • ε-greedy: 積極的に良い⼿を選ぶがたまにランダム⾏動 • Experience Replay: 記録したデータをシャッフルして 学習に再利⽤ • 報酬のclipping: 報酬を+1/-1に限定 • つまり、DQNは「気まぐれ」「勤勉家」「無欲」︕︖ 45
  46. 46. デモ 46
  47. 47. FPGA DQN 47 ... 512 neurons 3 neurons →上・下・待機 4x4 3x3 6層の学習済みConvolutional Deep Neural Network 操作 by UART ゲーム画⾯ by UART Digilent社 Nexys4 DDR (Xilinx社 Artix7 100T搭載)
  48. 48. 設計してみて • 学習: Python on GPU • 認識: Python→C++→HDL→動作 • ⾼位合成ツールでもそれなりの性能 • DQNだときちんとリアルタイム動作しました • DQNの設計に1週間, FPGA化に1⽇(!) (ただしHLSの最適化はほとんどしていませんが) • エラーを⾒つけるのが⼤変 • ごくまれにオーバーフローするんです… • 学習に失敗した時のロスがでかい →学習時間が数⽇ってのがまた • とにかくDNNの学習時間速くしてくださいおながしいます たのみますよろしく 48
  49. 49. まとめ • Deep Neural Networkを簡単に紹介 • まだまだ研究開発途上 • 学習時間の短縮がカギに • 電⼒性能効率・短TATなFPGAにチャンス • 既存のフレームワークとの連携による短期間開発 • 応⽤事例としてDQNを動かしてみた • GPUより低消費電⼒・コンパクト • CPUよりも⾼速 49
  50. 50. 謝辞 • Xilinxユニバーシティプログラム • Alteraユニバーシティプログラム • DQN-chainer作者様 • Toronto Univ. Anderson先⽣ • KAIST Yoo先⽣ 50 ⼼の友よ︕

×