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.

組込向けDeep Learning最新技術の紹介 量子化テクニックとDorefaNetについて

5,222 views

Published on

組込向けDeep Learning最新技術の紹介 量子化テクニックとDorefaNetについて

Published in: Engineering
  • Be the first to comment

組込向けDeep Learning最新技術の紹介 量子化テクニックとDorefaNetについて

  1. 1. 組込向けDeep Learning最新技術の紹介 量子化テクニックとDorefaNetについて 2017/12/21 株式会社パソナテック 西日本支社 夏谷 1
  2. 2. アジェンダ  量子化の話  DLの基本  数値表現  量子化の話  プルーニング  Dorefaネット 2
  3. 3. 自己紹介  夏谷実  株式会社パソナテック  株式会社パソナテック  西日本支社  TFUG KANSAI  最近は半導体関連の仕事が多い  FPGAが好き  プログラミングも好き  Python  Tcl  Common Lisp、Scheme  F#  Deep Learningも好き 3
  4. 4. 4 Deep Learningの基本
  5. 5. Deep LearningはEnd to End 5 Neural Network 入力 出力 ○dog ×cat NNの出力結果をFeedBackして 精度を上げていく。(学習) 推論:NNを使って結果を得る。 学習:NNの出力と正解値から、NNのパラメータを微調整して精度を上げていく。 これらを同じ仕組みで回せるため、Deep LearningはEnd to Endと呼ばれる。 入力データから、NNを通して何 かしらの出力を得る(推論)
  6. 6. 学習と推論の違い 6 学習 推論 ・大量のデータと正解のペアが必要 ・繰り返し計算して精度を上げる。 ・出力結果をFBさせる。 ・計算精度が必要 ・推論したいデータのみが必要。 正解はない。 ・出力データをFBさせない。 ・計算は一度きり ・計算の精度はそれほど必要ない Neural Network入力 出力
  7. 7. 推論時に計算精度がいらない理由 7 'Norwegian_elkhound', 0.6510464 'malinois', 0.20971657 'German_shepherd', 0.124572 'kelpie', 0.0050396309 'Border_terrier', 0.0034161564 識別(Classification)の場合 ノルウェジアン・エルクハウンド? ニューラルネットワークの 計算結果が一番大きい物 を識別結果としている。 'Norwegian_elkhound', 0.9900 'malinois', 0.00010 'German_shepherd', 0.00012 'kelpie', 0.00002 'Border_terrier', 0.00002 'Norwegian_elkhound', 0.2100 'malinois', 0.20971657 'German_shepherd', 0.124572 'kelpie', 0.0050396309 'Border_terrier', 0.0034161564 推論時: ニューラルネットワークの計算結 果、一番大きい物が変わらなけ れば識別の結果は同じ 学習時: 微妙な違いも学習に影響する。
  8. 8. エッジでのDeep Learningとは 8 学習時は高精度 の計算を行う。 GPU使用 組込機器側では、 精度を落とした 推論のみを行う。 組込機器では学習できない End to endではない。 一般的に
  9. 9. エッジ側で計算精度を落とす方法とメリット 9 NeuralNetwork (float32) 学習済みのNN データ/演算のbit幅を落とし、モデルのデータ量削減( 例:数100MB→数10MB) - 製造コスト - DRAMアクセスが減ることで、計算速度と消費電 力で有利 - ALUの並列度向上(NEON128bit) 固定小数点化(量子化)を行い、整数演算で計算する 。 - FPUが不要になり、コスト面、電力面で有利 - 計算の速度向上 最終結果に影響が少ない計算を飛ばす(プルーニン グ) - モデルのデータ量削減 - 計算の速度向上
  10. 10. 10 数値表現
  11. 11. Float32, Float16 11 https://www.slideshare.net/insideHPC/beating-floating-point-at-its-own-game-posit-arithmetic DLは10^(-4)~10^2くらいしかでてこない FP16 max 6万程度 fp32 指数部 仮数部
  12. 12. 固定小数点化(量子化) 12 本質じゃないので符号無しで 124 1/2 1/481632 0 1 0 0 00 1 1 16 + 1 + 0.25 = 17.25 0x45 普通に10進数 にすると69 足し算はそのまま加算すればOK、かけ算は乗算後にビットシフト。 整数用のALU(整数演算命令)で小数点のついた値を扱える。 FPU(浮動小数点命令)が不要になる。
  13. 13. Deep Learning用 固定少数点数対応/Quantization(量子化) 13 ①Dynamic Precision Data Quantization レイヤーによって精度を変える。 integer part fractional part ③対数 ②Gain and Offset ④Weight Sharingとのあわせ技 →Deep Compression DSP向け Qualcomm Research Google TPU 0の位(Q) https://arxiv.org/pdf/1511.06393.pdf https://arxiv.org/abs/1510.00149
  14. 14. 数値表現と電力、コストの関係 14
  15. 15. 15 プルーニング
  16. 16. プルーニング 16 2つの出力の値が大きい方が推論結果になる。 各ニューロン(丸印)からの 出力に重みをかけて、足し合 わせていく。
  17. 17. プルーニング 17 2つの出力の値が大きい方が推論結果になる。 各ニューロン(丸印)からの 出力に重みをかけて、足し合 わせていく。 かけ算の結果がほとんど0のパス 出力がほとんど0の ニューロン
  18. 18. プルーニング 18 不要な計算パスを減らす。 Pruning synapses Pruning neurons Pruningした後、再学習が効果的 [Han et al. NIPS’15]
  19. 19. プルーニング 19
  20. 20. 20 量子化の難しさ
  21. 21. 固定小数点数の難しさ 21 'Norwegian_elkhound', 0.6510464 'malinois', 0.20971657 'German_shepherd', 0.124572 'kelpie', 0.0050396309 'Border_terrier', 0.0034161564 識別(Classification)の場合 一番大きな値を識別結果とする場合、 固定小数点数化による計算誤差の影 響は少ない。 0.65が、0.99だろうが、0.30になろうが、 識別結果(一番大きな値)は同じ。 これがバイナリネット等ができる理由 領域提案の場合 固定小数点化による計算誤差が、 そのまま領域に乗ってくる。 難易度が高い
  22. 22. 固定小数点数の難しさ 22 計算した領域が 大きくなりすぎる センターはあっているが、領域が小さすぎる。 領域提案における固定小数点数化は今後の課題 コキュートス版Tiny-YOLO(固定小数点数版)の出力例
  23. 23. 23 Dorefaネットの紹介
  24. 24. DorefaNetの特徴  バイナライズニューラルネットワークの一般化。  低ビット幅で行う学習方法の突破口を開く  重み、アクティベーション、勾配、それぞれに対して ビット幅のコンフィグレーションの探索  TensorFlowで、AlexNetを実装しました 24 W A G AlexNet 精度 (for ImageNet) 32 32 32 0.559 8 8 8 0.530 1 4 32 0.530 1 1 32 0.442(XOR-NET)
  25. 25. 固定小数点のかけ算 25 普通の整数のかけ算
  26. 26. STE(STRAIGHT-THROUGH ESTIMATOR) 26 量子化されると勾配が計算できないので、STEという手法を使って勾配を見積もる (estimate)。 量子化の勾配ではなく、量子化前の勾配をそのまま(Straight-through)使えばOK。 cを目的関数とすると、この式がなりたつ。 pq ←論文に出てくる例
  27. 27. アクティベート 27 各レイヤーの出力 活性化関数 上手く行く関数 活性化関数の範囲が0~1が保証 され、それを-1~1に拡張する
  28. 28. 重みと勾配 28 重みの範囲が-1~1に制限される 重み 勾配 σは-0.5~0.5の一様乱数 ノイズの項を加える。
  29. 29. Dorefaネット 29 W A G AlexNet 精度 (for ImageNet) 32 32 32 0.559 8 8 8 0.530 1 4 32 0.530 1 1 32 0.442(XOR-NET) 低ビットでも学習が進む様子
  30. 30. Dorefaネットの課題  入力層と最後の全結合層は量子化しない方が良い 結果になる。  FPUが必要になるのでうれしくない  直感的にはちょっと信じがたい  画像データはそもそも8bit量子化されているのでは?  上手く前処理入れたらいけるのでは?  最終層こそ誤差に目を瞑れるのでは?  CPU使用時は8, 16以外のビット幅を採用するメリット がほぼ無い。  FPGAに期待  ネットワークによって上手くいく物と行かない物がある。  やってみないとわからない。 30
  31. 31. 最後に  TFUG KANSAIのメンバー募集中です。  イベントや勉強会の企画を手伝ってくれる人がいたら連 絡ください。  こんな事がしたいだけでもOK! 31
  32. 32. ご静聴ありがとうございました。 32 量子化の話 Dorefaネットの紹介 今日の話

×