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.

バイナリニューラルネットとハードウェアの関係

12,218 views

Published on

全脳アーキテクチャ若手の会 第26回勉強会
発表  :筑波大学 田尻 健斗
メンター:大阪大学 西田 圭吾
     東京大学 八木 拓真
pdf化の際壊れてしまった図などがありますので後日訂正します
7/9:訂正しました

Published in: Engineering
  • Be the first to comment

バイナリニューラルネットとハードウェアの関係

  1. 1. バイナリ ニューラルネットと ハードウェアの関係 発表者:筑波大学システム情報工学研究科 田尻 健斗 メンター: 大阪大学生命機能研究科 西田 圭吾 東京大学情報理工学系研究科 八木 拓真 1 全脳アーキテクチャ若若⼿手の会 第 26  回勉強会
  2. 2. ⾃自⼰己紹介 • ⽥田尻健⽃斗 Ø 筑波⼤大学 システム情報⼯工学研究科D1 Ø 衛星リモートセンシングの⾼高速化 2 これ
  3. 3. SoftBankがARMを買収 3http://www.softbank.jp/sbnews/entry/20170519_02
  4. 4. 様々な組み込み機器 4 By  Alexander  Glinz  -­‐ photo  by  Alexander  Glinz  /  uploaded  by  Joadl,  CC  BY-­‐SA  3.0at,https://commons.wikimedia.org/w/index.php?curid=29727889 GFDL,  https://ja.wikipedia.org/w/index.php?curid=248165
  5. 5. 組み込みにおけるNNの搭載 5 By  Alexander  Glinz  -­‐ photo  by  Alexander  Glinz  /  uploaded  by  Joadl,  CC  BY-­‐SA  3.0at,https://commons.wikimedia.org/w/index.php?curid=29727889 衝突回避システム オンボード上でシステムを完結させたい ⾃自⽴立立制御ドローン 衛星リモート センシング
  6. 6. ⼤大きい計算機・⼩小さい計算機 Tesla  K40 Raspberry  pi  3 Model B 計算ユニット Streaming Multiprocessor x40 ARM  x4   同時並列列数 2560 8 メモリ 12  GB 1  GB 消費電力 235  W 12.5  W 価格 50万円 6千円 6
  7. 7. ⼤大きい計算機・⼩小さい計算機 Tesla  K40 Raspberry  pi  3 Model B 計算ユニット Streaming Multiprocessor x40 ARM  x4   同時並列列数 2560 8 メモリ 12  GB 1  GB 消費電力 235  W 12.5  W 価格 50万円 6千円 7
  8. 8. そうだ、バイナリ化しよう 8 1 メモリ使用量が ! "# 倍に 掛け算が ビット演算に 𝑤!! ⋯ 𝑤!& ⋮ ⋱ ⋮ 𝑤)! ⋯ 𝑤)& 𝑥! ⋮ 𝑥&
  9. 9. バイナリ化の威⼒力力 9 [M.  Rastegari,  2016]  M.  Rastegari,  et  al.  “XNOR-­‐Net:  ImageNet  Classification  Using  Binary  Convolutional  Neural  Networks”,  arxiv:1603.05279,  2016. 475 7.4 0 100 200 300 400 500 バイナリ化前 バイナリー化後 AlexNetの重みのデータ量量[MB] 32倍省省メモリ 58倍⾼高速化 [M.  Rastegari,  2016]  
  10. 10. ⽬目次 1. バイナリ化⼊入⾨門 2. 表現ビット数の限界に迫る:バイナリNNの数々 Ø BinaryConnect Ø Binarized Neural  Network Ø XNOR-‐‑‒Net 3. BNNの性能限界を探る:FPGAの視点から Ø ハードウェアの性能を引き出す Ø FINN:  Fast,  Scalable  and  Binarized 4. BNNから⾒見見るハードウェアの未来 10
  11. 11. ⽬目次 1. バイナリ化⼊入⾨門 2. 表現ビット数の限界に迫る:バイナリNNの数々 Ø BinaryConnect Ø Binarized Neural  Network Ø XNOR-‐‑‒Net 3. BNNの性能限界を探る:FPGAの視点から Ø ハードウェアの性能を引き出す Ø FINN:  Fast,  Scalable  and  Binarized 4. BNNから⾒見見るハードウェアの未来 11
  12. 12. NNの浮動⼩小数点のバイナリ化 浮動⼩小数点からバイナリにすることでメモリ容量量を削減 12 −1.5 3.1 2.2 ℎ" ℎ# ℎ2 ×−1.1 ×2.4 各数値で32bit必要 −1.5 3.1 2.2 ℎ" ℎ# ℎ2 ×−1 ×1 ×1 各数値で1bit必要 バイナリ化 ×1.1
  13. 13. ニューラルネット 13 𝑥! −1.5 3.1 2.2 ℎ! ℎ" ℎ# ℎ2 𝑧# 𝑧! 𝑧" 𝑥! 𝑥" 𝑥# 𝑥2 入 力 𝑧# 𝑧! 𝑧" 出 力 重みと活性の線形和 &  ⾮非線形の活性化関数 浮動⼩小数点同⼠士の積和演算が発⽣生 ℎ" = 𝑎 +0.1×3.1 − 1.1×1.5 + 2.1×2.2   a:活性化関数 ×−1.1 ×2.1 ×0.1
  14. 14. 浮動⼩小数点とは 14 By  en:User:Fresheneesz,  traced  by  User:Stannered  -­‐ en:Image:Float  example.PNG,  CC  表示-­‐継承 3.0,   https://commons.wikimedia.org/w/index.php?curid=3357169 浮動⼩小数点⽅方式 Ø仮数部(fraction)と指数部(exponent)で数を表⽰示 Ø単精度度では⼀一つの数を表すのに32bit必要 Ø通常のNNでは32bit単精度度浮動⼩小数点を使⽤用 仮数部 指数部 1.5×23 仮数部 指数部
  15. 15. バイナリ化とは p バイナリ化 →量量⼦子化の⼀一種で、実数値を2通りの値の どちらかに変換する操作 sign 𝑥 = ? 1                             𝑥 ≥ 0, −1                    それ以外. p 今回の発表では特に断らない限り、上式を バイナリ化と呼ぶ 15
  16. 16. NNの軽量量化 p 組み込み⽤用途を想定したNNが抱える問題 Ø ⼤大量量のビットを使って情報を保持 Ø ⼤大量量の浮動⼩小数点同⼠士の積和演算の発⽣生 p モデルの軽量量化⼿手法 Ø 蒸留留 :⼩小さいモデルで再学習[Hinton,  2015] Ø 冗⻑⾧長性の排除:構造化された⾏行行列列[Sindhwani,  2015] Ø 適度度な量量⼦子化:重みのクラスタリング[Han,  2015] Ø バイナリ化 :実数値→2値[Courbariaux,  2015] 16
  17. 17. NNの学習と推論論 17 𝒖 = 𝑾 ! 𝒙 + 𝒃 ! 𝒉 = 𝑎(𝐮) 𝒗 = 𝑾 # 𝒉 + 𝒃 # 𝒚 = softmax(𝒗) 学習 𝑥# 𝑥! 𝑥" ℎ" ℎ# 𝑦# 𝑦! 𝑦" 𝑾(#) 𝒃(#) 𝑾(!) 𝒃(!) 𝑥# 𝑥! 𝑥" ℎ" ℎ# 𝑦# 𝑦! 𝑦" 𝑾(#) 𝒃(#) 𝑾(!) 𝒃(!) ①順伝播 推論論
  18. 18. NNの学習と推論論 18 𝐸 = − T 𝑡)Vlog   𝑦)V ),V 学習 𝑥# 𝑥! 𝑥" ℎ" ℎ# 𝑦# 𝑦! 𝑦" 𝑾(#) 𝒃(#) 𝑾(!) 𝒃(!) 𝑥# 𝑥! 𝑥" ℎ" ℎ# 𝑦# 𝑦! 𝑦" 𝑾(#) 𝒃(#) 𝑾(!) 𝒃(!) ①順伝播 ②誤差評価 推論論
  19. 19. NNの学習と推論論 19 𝚫(#) = 𝒕   − 𝒚 𝚫 ! = 𝑎[ 𝒖 ⨀ 𝑾 # 𝚫 # 𝜕𝑬 𝜕𝑾 # = ⋯ 学習 𝑥# 𝑥! 𝑥" ℎ" ℎ# 𝑦# 𝑦! 𝑦" 𝑾(#) 𝒃(#) 𝑾(!) 𝒃(!) 𝑥# 𝑥! 𝑥" ℎ" ℎ# 𝑦# 𝑦! 𝑦" 𝑾(#) 𝒃(#) 𝑾(!) 𝒃(!) ①順伝播 ②誤差評価 ③逆伝播 推論論
  20. 20. NNの学習と推論論 20 𝑾 _ = 𝑾 _ − 𝜂 𝜕𝐸 𝜕𝑾 _   𝒃 _ = 𝒃 _ − 𝜂 𝜕𝐸 𝜕𝒃 _   学習 𝑥# 𝑥! 𝑥" ℎ" ℎ# 𝑦# 𝑦! 𝑦" 𝑾(#) 𝒃(#) 𝑾(!) 𝒃(!) 𝑥# 𝑥! 𝑥" ℎ" ℎ# 𝑦# 𝑦! 𝑦" 𝑾(#) 𝒃(#) 𝑾(!) 𝒃(!) ①順伝播 ②誤差評価 ③逆伝播 ④重み更更新 推論論
  21. 21. NNの学習と推論論 21 学習 𝑥# 𝑥! 𝑥" ℎ" ℎ# 𝑦# 𝑦! 𝑦" 𝑾(#) 𝒃(#) 𝑾(!) 𝒃(!) 𝑥# 𝑥! 𝑥" ℎ" ℎ# 𝑦# 𝑦! 𝑦" 𝑾(#) 𝒃(#) 𝑾(!) 𝒃(!) ①順伝播 ②誤差評価 ③逆伝播 ④重み更更新 推論論 ①順伝播𝒖 = 𝑾 ! 𝒙 + 𝒃 ! 𝒉 = 𝑎(𝐮) 𝒗 = 𝑾 # 𝒉 + 𝒃 # 𝒚 = softmax(𝒗)
  22. 22. 「素朴な」重みのバイナリ化 22 学習 𝑥# 𝑥! 𝑥" ℎ" ℎ# 𝑦# 𝑦! 𝑦" 𝑾(#) 𝒃(#) 𝑾(!) 𝒃(!) 𝑥# 𝑥! 𝑥" ℎ" ℎ# 𝑦# 𝑦! 𝑦" 𝑾 𝒃 (#) 𝒃(#) 𝑾 𝒃 (!) 𝒃(!) ①順伝播 ②誤差評価 ③逆伝播 ④重み更更新 推論論 ①順伝播 浮動⼩小数点で学習 (通常通り) 学習済み重みを そのままバイナリ化 して推論論 →誤差の蓄積のため精度度低下、 どうする?
  23. 23. ⽬目次 1. バイナリ化⼊入⾨門 2. 表現ビット数の限界に迫る:バイナリNNの数々 Ø BinaryConnect Ø Binarized Neural  Network Ø XNOR-‐‑‒Net 3. BNNの性能限界を探る:FPGAの視点から Ø ハードウェアの性能を引き出す Ø FINN:  Fast,  Scalable  and  Binarized 4. BNNから⾒見見るハードウェアの未来 23
  24. 24. バイナリNNの種類 重みの バイナリ化 活性の バイナリ化 ⼤大規模な データセット への対応 Binary   Connect ⚪ -­‐ -­‐ Binarized Neural   Network ⚪ ⚪ -­‐ XNOR-­‐Net ⚪ ⚪ ⚪ 24
  25. 25. バイナリNNの種類 重みの バイナリ化 活性の バイナリ化 ⼤大規模な データセット への対応 Binary   Connect ⚪ -­‐ -­‐ Binarized Neural   Network ⚪ ⚪ -­‐ XNOR-­‐Net ⚪ ⚪ ⚪ 25
  26. 26. BinaryConnect M.Courbariaux,  Y.Bengio,  &  David,  J.  P.  (2015).   “Binaryconnect:  Training  deep  neural  networks  with  binary   weights  during  propagations”.  In Advances  in  Neural   Information  Processing  Systems (pp.  3123-‐‑‒3131). 26
  27. 27. 概要 p 順伝播・逆伝播の計算にバイナリ重みを⽤用いる ことで、バイナリ重みを⽤用いたNNの学習アル ゴリズムを提案 p 通常のNNとほぼ同等の正解率率率を確保 Ø バイナリ化が正則化の役割を果たし、⼩小規模 データセットにおいて良良好な正解率率率を達成 27
  28. 28. BinaryConnectの成果 重要な発⾒見見:重み⾏行行列列をバイナリ化することは、 単に重み⾏行行列列のメモリ使⽤用量量を削減することでは ない! →バイナリ化には乗算を加算に置き換える作⽤用 ある メモリ使⽤用量量が削減されるだけでなく⼀一部の乗算 が加算に代わることで計算量量が削減される 28
  29. 29. 数式の表記 𝑾a _ :𝑙層⽬目のバイナリ化された重み 𝑾 _ :𝑙層⽬目の浮動⼩小数点重み (通常の重み) 𝒃 _ :𝑙層⽬目の浮動⼩小数点バイアス 𝐸 :損失関数 𝑎 _ :𝑙層⽬目の活性 29
  30. 30. BinaryConnectの学習 30 ①順伝播 各層の順伝播時にバイナリ化した 重み𝑾a (_) を使⽤用 𝑾a _ = binarize 𝑾 _ 𝒂 _h! = 𝑓 𝑾a _   𝒉 _ + 𝒃 _   元の重み𝑾 _ も保持 𝑾(_) 𝑾a (_) 𝒃(_) 順伝播
  31. 31. BinaryConnectの学習 31 ②逆伝播 バイナリ化した重みに対する勾配 j𝑬 j𝑾k l とバイアス勾配 j𝑬 j𝒃 l を計算 𝑾(_) 𝑾a (_) 𝒃(_) 𝜕𝑬 𝜕𝑾a _ 𝜕𝑬 𝜕𝒃 _ 順伝播 逆伝播
  32. 32. BinaryConnectの学習 32 ③更更新 実数重みをバイナリ勾配で更更新 𝑾(_) = clip(𝑾 _ − 𝜂 𝜕𝑬 𝜕𝑾a _ ) 𝒃(_) = 𝒃(_) − 𝜂 𝜕𝑬 𝜕𝒃 _ クリッピング ([-­‐‑1,  1]に収める)  に よって、実数重みの発散を防ぐ →学習⾃自体は結局実数で⾏行行う 𝑾(_) 𝑾a (_) 𝒃(_) 𝜕𝑬 𝜕𝑾a _ 𝜕𝑬 𝜕𝒃 _ 順伝播 逆伝播
  33. 33. バイナリ化の正則化効果 33 p 正則化:重み⾏行行列列の表現⼒力力を落落とし、過学習を 防ぐこと Ø 例例:DropConnect [Wan+,  2013] Ø 重み⾏行行列列の各要素の⼤大きさの情報を捨てるバイナリ 化は、正則化の⼀一種と考えることができる p 実際、今回の実験では正則化なしの場合よ りかえって良良い正解率率率を得た
  34. 34. データセット 34 p Permutation-‐‑‒invariant  MNIST Ø28x28のグレースケール⼿手書き数字、10クラス Ø訓練60000枚、テスト10000枚 Ø回転、拡⼤大縮⼩小など、事前の画像処理理を禁⽌止 p CIFAR-‐‑‒10 Ø32×32のカラー画像、10クラス Ø訓練50000枚、テスト10000枚 p SVHN Ø32x32のカラー数字、10クラス Ø訓練604000枚、テスト26000枚
  35. 35. 実験 p ネットワークの構成 ØMNIST:784-‐‑‒1024-‐‑‒1024-‐‑‒1024-‐‑‒SVM ØCIFAR-‐‑‒10: 畳み込み3層+全結合1層のCNN+SVM       (256C3-‐‑‒MP2-‐‑‒512C3-‐‑‒MP2-‐‑‒1024C3-‐‑‒MP2-‐‑‒2048-‐‑‒SVM) ØSVHN:上と同様(ただしユニット数が半分) Ø各層にBatchNormalizationを挟んでる p ⽐比較対象 ØMNIST:浮動⼩小数点のNNと50%Droput ØCIFAR-‐‑‒10・SVHN:浮動⼩小数点のNNのみ 35
  36. 36. 実験結果 36 浮動⼩小数点のNNとほぼ同等の精度度を達成 MNIST CIFAR-‐‑‒10 SVHN 浮動⼩小数点 (正則化なし) 1.30% 10.64% 2.44% 提案⼿手法 1.29% 9.90% 2.30% 浮動⼩小数点 (50%  Dropout) 1.01% − − 重みをバイナリ化しても精度度へのほぼ影響なし!
  37. 37. バイナリNNの種類 重みの バイナリ化 活性の バイナリ化 ⼤大規模な データセット への対応 Binary   Connect ⚪ -­‐ -­‐ Binarized Neural   Network ⚪ ⚪ -­‐ XNOR-­‐Net ⚪ ⚪ ⚪ 37
  38. 38. Binarized Neural  Network M.  Courbariaux et  al.  “Binarized Neural  Networks:   Training  Deep  Neural  Networks  with  Weights  and   Activations  Constrained  to  +1  or  -‐‑‒1”.  (2016):    12   June  2017. 38
  39. 39. BinaryConnect 概要(再掲) 39 𝑥! −1.5 3.1 2.2 ℎ! ℎ" ℎ# ℎ2 𝑧# 𝑧! 𝑧" 𝑥! 𝑥" 𝑥# 𝑥2 入 力 𝑧# 𝑧! 𝑧" 出 力 ×−1 ×+1 ×+1 ℎ" = 𝑎 +1×3.1 + −1 ×1.5 + 1×2.2   重みのみを+1/-‐‑‒1の2通りにバイナリ化
  40. 40. Binarized Neural  Network 40 𝑥! −1 1 1 ℎ! ℎ" ℎ# ℎ2 𝑧# 𝑧! 𝑧" 𝑥! 𝑥" 𝑥# 𝑥2 入 力 𝑧# 𝑧! 𝑧" 出 力 ×−1 ×+1 ×+1 h" = 𝑠𝑖𝑔𝑛 +1 − (−1) + 1 = 𝑠𝑖𝑔𝑛 3 = 1 重み・活性の両⽅方をバイナリ化
  41. 41. 概要 p 学習と推論論の両⽅方で、重みと活性両⽅方を バイナリ化 Ø BinaryConnectでは重みのみのバイナリ化だった Ø 活性をバイナリ化することで⼤大半の演算をビット 演算に置き換え、省省エネルギーなNNの可能性を ⽰示した p 重みと活性の両⽅方をバイナリ化しつつ、 浮動⼩小数点NNとほぼ同等の精度度を達成 41
  42. 42. 活性をバイナリ化する 42 p バイナリ化すると、勾配情報が消えてしまう q = Sign 𝑟 , 𝑔~ = 0 p アイデア:hard-‐‑‒tanhを通した勾配を使う Htanh 𝑥 = max −1, min 1, 𝑥 ,         𝑔€ = 1 € •!
  43. 43. 学習の流流れ 1.  順伝播 43 重み⾏行行列列をバイナリ化する バイナリ活性及び重みを乗算 Shift-‐‑‒based BNを実⾏行行 (後述) 活性をバイナリ化
  44. 44. 学習の流流れ 2.  逆伝播 44 活性の勾配を計算 ポイント:⼩小さい勾配のみ伝播 Shift-‐‑‒based  BNの逆伝播 重み⾏行行列列の勾配を計算
  45. 45. 学習の流流れ 3.  パラメータの更更新 45 BNのパラメタを更更新 重みを更更新して[-‐‑‒1,1]に クリップする (BinaryConnectと同様)
  46. 46. Shift based  Batch  Normalization BinaryConnectでは浮動⼩小数点上で通常のBNを ⾏行行っていたが、BN⾃自体の乗算 (e.g.  ミニバッチ 分散の計算)  が遅かった →分散の計算と正規化をシフト演算に置き換え 46 乗算→シフト演算
  47. 47. 活性のバイナリ化の効果 ⼊入⼒力力と重みの演算の組み合わせが4通りに減る 47 ⼀一般的な加減算が必要 −1.5 3.1 2.2 ℎ" ℎ# ℎ2 ×−1 ×1 ×1 −1 1 1 ℎ" ℎ# ℎ2 ×−1 ×1 ×1 活性の バイナリ化 4通りの組み合わせ演算 でよい
  48. 48. バイナリ乗算とXNORの関係 48 ⼊入⼒力力 重み 出⼒力力 1 1 1 1 -‐‑‒1 -‐‑‒1 -‐‑‒1 1 -‐‑‒1 -‐‑‒1 -‐‑‒1 1 バイナリ演算の 全パターン A B Out 1 1 1 1 0 0 0 1 0 0 0 1 排他的論論理理和の 否定 XNOR
  49. 49. バイナリ乗算とXNORの関係 49 ⼊入⼒力力 重み 出⼒力力 1 1 1 1 -‐‑‒1 -‐‑‒1 -‐‑‒1 1 -‐‑‒1 -‐‑‒1 -‐‑‒1 1 バイナリ演算の 全パターン バイナリ乗算はXNORで置き換えることができる A B Out 1 1 1 1 0 0 0 1 0 0 0 1 排他的論論理理和の 否定 XNOR
  50. 50. 積和演算の並列列化 1 0 1 0 1 1 0 0 50 1 0 1 1 0 0 0 1 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 1 1 0 0 0 1 0 XNOR bitcount 4 ⼊入⼒力力 重み ⽴立立っているbitを 数える 積和計算が並列列のビット演算に置き換えられる
  51. 51. BNNの推論論 p 1層⽬目のみバイナリ ではなく、8bit固定 少数点を⽤用いる p 2層⽬目以降降はXNOR 演算とShift  based   BNを繰り返す 51
  52. 52. 実験 p データセット Ø MNIST,  CIFAR-‐‑‒10,  SVHN p ネットワークの構成 Ø MNIST:4096ユニット隠れ層3段の全結合-‐‑‒SVM Ø CIFAR-‐‑‒10:畳み込み3層-‐‑‒全結合層-‐‑‒SVM Ø SVHN:上と同様(ただしユニット数が半分) p ⽐比較対象 Ø Maxout Networks  [GoodFellow+  2013] (通常のNN) 52
  53. 53. 実験結果 53 浮動⼩小数点のNNとほぼ同等の精度度を達成 MNIST SVHN CIFAR-‐‑‒10 提案⼿手法 0.96% 2.8% 11.40% Maxout Networks 0.94% 2.47% 11.68% BinaryConnect 1.29 ± 0.08% 2.30% 9.90% 重み・活性の両⽅方をバイナリ化しても精度度を維持できた
  54. 54. バイナリNNの種類 重みの バイナリ化 活性の バイナリ化 ⼤大規模な データセット への対応 Binary   Connect ⚪ -­‐ -­‐ Binarized Neural   Network ⚪ ⚪ -­‐ XNOR-­‐Net ⚪ ⚪ ⚪ 54
  55. 55. XNOR-‐‑‒Net M.  Rastegari,  V.  Ordonez,  J.  Redmon,  &  A.  Farhadi.  (2016,   October).  “Xnor-‐‑‒net:  Imagenet classification  using  binary   convolutional  neural  networks”.  In European  Conference  on   Computer  Vision (pp.  525-‐‑‒542). 55
  56. 56. Binarized  Neural  Network  (再掲) 56 𝑥! −1 1 1 ℎ! ℎ" ℎ# ℎ2 𝑧# 𝑧! 𝑧" 𝑥! 𝑥" 𝑥# 𝑥2 入 力 𝑧# 𝑧! 𝑧" 出 力 ×−1 ×+1 ×+1 𝑡" = 𝑠𝑖𝑔𝑛 +1 − (−1) + 1 = 𝑠𝑖𝑔𝑛 3 = 1 重み・活性の両⽅方をバイナリ化
  57. 57. XNOR-‐‑‒Net ⼤大きなネットワークをバイナリ化したい 57
  58. 58. 概要 p BNNは、重みと活性の同時バイナリ化を達成 したものの、その性能検証は⼩小規模データ セット (~∼10クラス)  に留留まっていた p バイナリ化の仮定を緩和することによって、 バイナリ化の利利点を⽣生かしつつ⼤大規模データ セットの性能を確保 →ImageNetのtop-‐‑‒5正解率率率で69.2% (⾼高くはない…) 58
  59. 59. アイデア:バイナリ化の緩和 59 1.5 2.3 2.4 -‐‑‒0.5 -‐‑‒1.4 3.0 2.4 2.0 -‐‑‒1.0 0 0 0.5 0 0.5 0 0.5 0 0 ∗ = 1.7 1 1 1 -‐‑‒1 -‐‑‒1 1 1 1 -‐‑‒1 0 0 1 0 1 0 1 0 0 ⊕ = 1 1 1 1 -‐‑‒1 -‐‑‒1 1 1 1 -‐‑‒1 0 0 1 0 1 0 1 0 0 ⊕ = 1.8× 1.8 実数 畳み込み バイナリ 畳み込み 提案⼿手法
  60. 60. 畳み込みの近似 ⽬目標:バイナリ化された重みを維持しつつ、その計 算結果をもとの畳み込みに近づけたい 𝑰   ∗ 𝑾   ≈ 𝑰   ⊕ 𝑩     𝛼 最適化問題を解いて、元の畳み込みの計算結果に最 も近づくような係数𝛼∗ を求める 𝛼∗ = argmin‹ ∥ 𝑾   − 𝛼𝑩 ∥# = 1 𝑛 ∥ 𝑾 ∥! わずかな乗算の増加と引き換えに量量⼦子化誤差を軽減 60 画像 重み バイナリ重み スケーリング係数
  61. 61. XNOR演算に対する畳み込みの近似 前⾴頁では重み⾏行行列列のみをバイナリ化したが、 同様の考え⽅方により重みと活性を同時に バイナリ化した場合にも対応できる: 𝑰   ∗ 𝑾   ≈ sign 𝑰 ⊛ sign 𝑾 ⊙ 𝑲𝛼 𝑠. 𝑡.   𝑲 = ∑ 𝑰:,:,’ 𝑐  ∗ 𝒌 畳み込み演算が要るが、もとの畳み込み   𝑰   ∗ 𝑾   と⽐比べると計算回数は⾮非常に少ない 61
  62. 62. その他の⼯工夫 p レイヤの順番の⼊入れ替え 量量⼦子化誤差の発⽣生条件を整理理し、各処理理の順番を ⼊入れ替え p 学習はBinaryConnectとほぼ同様なので割愛 62
  63. 63. p データセット Ø ImageNet (1000クラス分類、訓練画像約120万枚) p ネットワークの構成 (AlexNetベース) Ø BN-‐‑‒AlexNet (7層CNN,  BNを追加) Ø XNOR-‐‑‒Net  (重み・活性のバイナリ化+近似) p ⽐比較対象 Ø BinaryConnect Ø BNN  (Binarized  Neural  Network) 実験条件 63
  64. 64. Top-‐‑‒1   正解率率率 Top-‐‑‒5 正解率率率 畳み込みの 計算速度度 (理理想値) AlexNet 56.6% 80.2% 1倍 XNOR-‐‑‒Net 44.2% 69.2% 最大58倍 (※) BinaryConnect 35.4% 61.0% BNN 27.9% 50.4% XNOR-‐‑‒Net  :  実験結果 64 重みと活性を両⽅方バイナリ化した場合も、ある程度度の性能を維持 ※元が浮動⼩小数点 だと更更に速いはず
  65. 65. バイナリNNの数々:まとめ p BinaryConnect:  重みのみをバイナリ化した NNの効率率率的な学習を達成 p BNN:  重み及び活性の同時バイナリ化&XNOR-‐‑‒ bitcountを⽤用いた回路路の効率率率化 p XNOR-‐‑‒Net:  近似計算を導⼊入して、良良い性能-‐‑‒ 速度度トレードオフを達成 →実験結果そのものは決して良良い結果とは⾔言えないが (ImageNetの現⾏行行の最⾼高Top-‐‑‒5正解率率率は97%近く)、 実⽤用的なバイナリNNの活路路を開いた 65
  66. 66. ⽬目次 1. バイナリ化⼊入⾨門 2. 表現ビット数の限界に迫る:バイナリNNの数々 Ø BinaryConnect Ø Binarized Neural  Network Ø XNOR-‐‑‒Net 3. BNNの性能限界を探る:FPGAの視点から Ø ハードウェアの性能を引き出す Ø FINN:  Fast,  Scalable  and  Binarized 4. BNNから⾒見見るハードウェアの未来 66
  67. 67. 計算機のさまざまなボトルネック p メモリアクセス(通信時間) Øチップ内のメモリ(数サイクル) Øチップ外のメモリ(数百サイクル) p 演算器の構造 Ø演算器の数(並列列の限界) Ø演算の遅延(処理理にかかるクロック数) 67
  68. 68. バイナリ化によるメモリ節約と演算の効率率率化 68 1 1 1 0 0 0 1 0 1 1 1 0 0 0 1 0 浮動⼩小数点 32  bit 1 バイナリ 1 bit メモリの節約 XNOR bitcount 𝑎 +1×3.1 + −1 ×1.5 + 1×2.2 演算の効率率率化 XNOR-‐‑‒bitcount 乗算・加減算 もはや⼤大量量の加算器・乗算器は必要ない
  69. 69. 69 p ⼀一⽅方で、⼤大量量のbit演算をCPUで⾏行行うには 若若⼲干の無駄がある →⼀一般のCPUの演算器の構造・メモリアクセスは ⼤大量量のビット演算に必ずしも最適でない p 必要な演算器を必要な数だけ⽤用意できないか? →FPGAだ!
  70. 70. FPGA Field  (現場で) Programmable  (書き換え可能な) Gate  (論論理理ゲートの) Array  (集合体) 70 ホビーボードPYNQ-­‐Z1   スパコンのデータ転送システム https://www.ccs.tsukuba.ac.jp/pr/interview/reports-­‐vol2-­‐2/
  71. 71. FPGAの構成要素 71 p LUTは⾮非常に簡単な演算器 p FPGAは⼩小さなLUTの集まり p LUTを組み合わせて、 任意の演算器を構成可能 p 演算器を組み合わせて、任意 の回路路を構成 どうやって必要な演算器を⽤用意するか? LUTLUTLUT LUT LUT LUT LUT LUTLUT FPGA上ならばビット演算器をたくさん実装できる
  72. 72. 回路路の設計⽅方法 72 1. 元々のプログラムの記述 2. 仕様決め Ø タイムチャート、状態遷移図、要求性能、回路路 内部のブロック図 3. 動作モデル作成 4. クロックを考えながらスケジューリング 5. 回路路記述 森岡澄夫,  “HDLによる高性能ディジタル回路設計”,  CQ出版
  73. 73. 回路路記述のコスト p 回路路の記述には、ソフトに⽐比べて余分な コストがかかる Ø 記述量量の多さ Ø 回路路上の時間の流流れの考慮 73
  74. 74. ソフトとハードの記述におけるギャップ (1) 74 記述量量が多い Y  =  X.dot(W)+B Python:1行 C言語:15行 Verilog:50行以上 ※イメージ
  75. 75. 時間軸⽅方向の流流れがある 75 クロック ソフトとハードの記述におけるギャップ (2) 演算器 A 演算器 B 演算器 C
  76. 76. 76 クロック ソフトとハードの記述におけるギャップ (2) 演算器 A 演算器 B 演算器 C 時間軸⽅方向の流流れがある
  77. 77. 77 クロック ソフトとハードの記述におけるギャップ (2) 演算器 A 演算器 B 演算器 C 時間軸⽅方向の流流れがある
  78. 78. 78 クロック ソフトとハードの記述におけるギャップ (2) 演算器 A 演算器 B 演算器 C 時間軸⽅方向の流流れがある 複数の回路路の同時に起きる動作パターンを考慮することは難しい
  79. 79. 79 そこで高位合成
  80. 80. ⾼高位合成とは p ⾼高位合成 →C⾔言語などの抽象度度の⾼高い記述からハード ウェア記述⾔言語に変換する技術 p 出⼒力力回路路の最適化 Ø プログラムに指⽰示⼦子を書き加える Ø 並列列化度度合い・変数のビット幅等を操作 80
  81. 81. 1. 元々のプログラムの記述 2. 仕様決め Ø タイムチャート、状態遷移図、要求性能、回路路 内部のブロック図 3. 動作モデル作成 4. クロックを考えながらスケジューリング 5. 回路路記述 ⾼高位合成によって⾃自動化される部分 81
  82. 82. Binarized Neural  Network(再掲) 82 𝑥! −1 1 1 ℎ! ℎ" ℎ# ℎ2 𝑧# 𝑧! 𝑧" 𝑥! 𝑥" 𝑥# 𝑥2 入 力 𝑧# 𝑧! 𝑧" 出 力 ×−1 ×+1 ×+1 ℎ" = 𝑠𝑖𝑔𝑛 +1 − (−1) + 1 = 𝑠𝑖𝑔𝑛 3 = 1 重み・活性の両⽅方をバイナリ化 ⾼高位合成を⽤用いてFPGA上で最適化されたBNNを作る
  83. 83. FINN Y.  Umuroglu,  N.  J.    Fraser,  G.  Gambardella,  M.  Blott,  P.  Leong,  M.  Jahre,  &  K.   Vissers,  (2017,  February).  “Finn:  A  framework  for  fast,  scalable  binarized neural  network  inference”.  In Proceedings  of  the  2017  ACM/SIGDA   International  Symposium  on  Field-‐‑‒Programmable  Gate  Arrays (pp.  65-‐‑‒74).   ACM. 83
  84. 84. FINN p 学習済みBNNモデルに適した回路路を出⼒力力 Ø BNNモデルを⾼高位合成⽤用C++に変換 Ø ⾼高位合成によりC++から半⾃自動で回路路を出⼒力力 p 各種最適化による⾼高速化 Ø 積和演算の並列列化 Ø 閾値処理理によるBatch  Normalizationの代⽤用 p 要求速度度に対応できるフレームワーク Ø 要求速度度から適切切な並列列度度を決定 Ø BNNでの各演算はライブラリでカバー 84
  85. 85. 効率率率的な回路路の実現へ p チップ内のメモリに重みを全て格納 Ø チップ外へのメモリアクセスは遅いため⾏行行わない p 各層ごとに専⽤用の演算回路路 Ø 必要な計算量量に合わせて演算器の数を決定 Ø 結果、無駄のない回路路を構成 85 1層 パラメーター 2層 パラメーター 3層 パラメーター メインメモリ画像 結果 …312021 …
  86. 86. ネットワーク構成の決定 p 重み及び活性の同時バイナリ化 Ø全ての⼊入⼒力力活性・重み・出⼒力力活性を+1/-‐‑‒1にバイナリ化 する p 活性化関数の前にBatch  Normalization p 活性化関数は sign 𝑥 = ? 1                             𝑥 ≥ 0, −1                    それ以外. 86
  87. 87. Matrix  Vector  Threshold  Unit 87 層ごとの演算を⾏行行う回路路 隠れユニットを⼀一度度にP個処理理できる
  88. 88. MVTUのProcessing  Element 88 活性への⼊入⼒力力を⼀一度度にS個処理理できる 活性と重みの積和演算をバイナリで⾏行行う回路路 累累算器 閾値メモリ 𝑾 𝒃メモリ XNOR bitcount + ≥ 活性インデックス 出⼒力力 S S S T T T 1
  89. 89. PEの計算の流流れ 89 𝑾 𝒃メモリ XNOR bitcount 活性インデックス S S S 累累算器 + T 閾値メモリ ≥ 出⼒力力 T 1T ①バイナリの⼊入⼒力力活性 とバイナリの重みの 積和演算の⼀一部を XNOR-‐‑‒bitcountに よって計算
  90. 90. PEの計算の流流れ 90 𝑾 𝒃メモリ XNOR bitcount 活性インデックス S S S 累累算器 + T 閾値メモリ ≥ 出⼒力力 T 1T ①バイナリの⼊入⼒力力活性 とバイナリの重みの 積和演算の⼀一部を XNOR-‐‑‒bitcountに よって計算 ②積和演算が全て終わる まで累累積
  91. 91. PEの計算の流流れ 91 𝑾 𝒃メモリ XNOR bitcount 活性インデックス S S S 累累算器 + T 閾値メモリ ≥ 出⼒力力 T 1 ①バイナリの⼊入⼒力力活性 とバイナリの重みの 積和演算の⼀一部を XNOR-‐‑‒bitcountに よって計算 ②積和演算が全て終わる まで累累積 ③閾値と⽐比較することで BNと活性化を代⽤用 T
  92. 92. ワークフロー 92 FINN シンセサイザー要求速度度 BNNの トポロジー& パラメーター ⾼高位合成可能な BNNのC++記述 高位合成ツール FIN ハードウェア ライブラリー FPGA⽤用回路路 FPGA ※  緑:ソフトウェア ⻘青:処理理・実⾏行行 MVTUなど
  93. 93. 実験 pデータセット ØMNIST,  CIFAR-‐‑‒10,  SVHN pネットワークの構成 MNIST ØSFC:256ユニット隠れ層3段の全結合 ØLFC:1024ユニット隠れ層3段の全結合 CIFAR-‐‑‒10・SVHN ØCNV:(畳み込み2層-‐‑‒プーリング層)×3段-‐‑‒ -‐‑‒512ユニット隠れ層2段-‐‑‒16bitの⼩小数10個 93
  94. 94. 実験 p ハードウェア Øボード:Xilinx  Zynq-‐‑‒7000  All  programmable   SoC ZC706Evaluation  Kit Øチップ:Zynq ZC706 -CPU   :ARM  Cortex  A-‐‑‒9  ×2 -FPGA:218600  LUTs,    545  BRAMs 94
  95. 95. ⼆二つの実験シナリオ ⼆二つの実験シナリオでこの⼿手法の柔軟性を⽰示す p max Ø回路路リソースの範囲内で最⼤大限の速度度を要求 ØSFC-‐‑‒max・LFC-‐‑‒max・CNV-‐‑‒maxの3種類 p fix Ø要求速度度は固定で 9000  (9k)  FPS Ø「30  FPSで送られてくる640×480の映像を、 32×32に分割して処理理する」という想定 Ø •2–×2—–×"– "#×"# = 9000 FPS 95
  96. 96. 実験結果:誤答率率率 96 MNIST SVHN CIFAR-‐‑‒10 提案⼿手法 1.60% [SFCmax]    5.10% [CNVmax] 19.90% [CNVmax] BNN 0.96% 2.8% 11.40% BinaryConnect 1.29 ± 0.08% 2.30% 9.90% 正規化の近似のためか、誤答率率率の上昇がみられる
  97. 97. 実験結果:消費電⼒力力 97 組み込み機器において現実的な消費電⼒力力でNNを使⽤用可能 7.3 8.8 3.6 0.4 0.8 2.3 21.2 22.6 11.7 8.1 7.9 10 0 10 20 30 SFC-­‐max LFC-­‐max CNV-­‐max SFC-­‐fix LFC-­‐fix CNV-­‐fix P(chip) P(Wall)[W] Pchip:Chipの消費電⼒力力[W] Pwall:ボード全体の消費電⼒力力[W] ボードのアイドル状態での消費電⼒力力は約7  W
  98. 98. 実験結果:速度度 98 速度度 :⼀一秒当たりの処理理枚数(FPS)を計測 要求速度度(max):可能な限り⾼高速に 要求速度度(fix)      :9000  (9k)  FPS maxのシナリオにおいて1000万FPSを実現 12361 1561 21.9 12.2 12.2 11.6 0 5000 10000 15000 SFC-­‐max LFC-­‐max CNV-­‐max SFC-­‐fix LFC-­‐fix CNV-­‐fix [k  FPS]
  99. 99. 実験結果:リソース 99 リソース :FPGAの回路路構成要素LUTの数 要求速度度(max):可能な限り⾼高速に 要求速度度(fix)      :9000  (9k)  FPS 以上⼆二つのシナリオに問題なく対応できた 91131 82988 46253 5155 5636 26274 0 50000 100000 SFC-­‐max LFC-­‐max CNV-­‐max SFC-­‐fix LFC-­‐fix CNV-­‐fix [個]
  100. 100. バイナリNNとハードの関係まとめ p ⼤大量量のbit演算をCPUで⾏行行うには若若⼲干の無駄が ある p バイナリNNのFPGA実装は計算効率率率に優れる p フレームワークと⾼高位合成を駆使すればFPGAの 利利便便性が⼤大幅に向上する 100
  101. 101. ⽬目次 1. バイナリ化⼊入⾨門 2. 表現ビット数の限界に迫る:バイナリNNの数々 Ø BinaryConnect Ø Binarized Neural  Network Ø XNOR-‐‑‒Net 3. BNNの性能限界を探る:FPGAの視点から Ø ハードウェアの性能を引き出す Ø FINN:  Fast,  Scalable  and  Binarized 4. BNNから⾒見見るハードウェアの未来 101
  102. 102. バイナリ化の限界 p バイナリ化されたNNで現在達成されている 精度度では必ずしも実⽤用に耐えうる性能を もつとは⾔言えない p あくまで実験レベルの基礎的な研究にすぎ ない →それでも、バイナリNN専⽤用ハードウェアに は可能性がある! 102
  103. 103. バイナリ化から考える組み込みの未来 バイナリ化やハードレベルの最適化を通じて、 p NNが組み込み機器に浸透する p 組み込み機器のあり⽅方が変わる p 我々の⽣生活が豊かになる 103
  104. 104. appendix 104
  105. 105. 実験結果 105
  106. 106. 乗算と加算の回路路⾯面積 106 Horowitz,  “Computing’s  Energy  Problem  (and  what  we  can  do  about  it)”,  ISSCC  2014 3495 137 0 500 1000 1500 2000 2500 3000 3500 32bit  乗算 32bit  加算 加算と乗算の回路路⾯面積[μm2] 乗算の約1/25
  107. 107. 乗算と加算の回路路⾯面積 107 Horowitz,  “Computing’s  Energy  Problem  (and  what  we  can  do  about  it)”,  ISSCC  2014 3495 137 0 500 1000 1500 2000 2500 3000 3500 32bit  乗算 32bit  加算 乗算と加算の回路路⾯面積[μm2] 同じ面積で24個 多く実装できる※ ※回路路によって多少異異なる

×