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.

20180831 [DeLTA TECH] 新・深層の世紀 〜第3集 ディープラーニング・時代はAIを求めた 〜

1,109 views

Published on

新・深層の世紀 〜第3集 ディープラーニング・時代はAIを求めた 〜

なぜ人々はAIを迎え入れたのか。なぜ世界はAIを止められなかったのか。
世界がその狂気に気づいたとき、期待値は制御できないほどに膨れ上がっていた――
LeapMindはなぜ今このような世界に生きているのか。
その答えは本講演の中に探していく。
これは、AIなるものに未来を託し、世界を狂乱に追い込んだ者たちの物語である。
ということで本講演では、ディープラーニング開発フレームワークの歴史とLeapMindの歩みを振り返ります。

講演者:
LeapMind Inc,
Compiler Engineer
今井 健男

Published in: Engineering
  • Be the first to comment

20180831 [DeLTA TECH] 新・深層の世紀 〜第3集 ディープラーニング・時代はAIを求めた 〜

  1. 1. 新・深層の世紀 〜第3集 ディープラーニング・時代はAIを求めた 〜 LeapMind Inc. Compiler Engineer 今井 健男 Takeo IMAI
  2. 2. 新・深層の世紀 〜第3集 ディープラーニング・時代はAIを求めた 〜 エッジデバイスでのDeep Learning推論を FPGAでどう実現するか LeapMind Inc. Compiler Engineer 今井 健男 Takeo IMAI
  3. 3. LeapMind Inc. © 2018 講演者紹介 今井健男 Takeo Imai 経歴 大阪大学基礎工学部情報工学科卒 LSI高位設計、HW&SW協調設計 東京大学大学院理学系研究科情報科学専攻 修士了 分散・並列プログラミング言語設計 長らく某大手電機メーカーの研究所に所属 LSI設計自動化(EDA) プログラミング言語 ソフトウェア工学 の研究に従事 2017年、LeapMindにジョイン Deep Learning 向けコンパイラ開発 を担当 訳書(共訳) 『抽象によるソフトウェア設計−Alloyではじめる形式手法−』 『型システム入門−プログラミング言語と型の理論−』
  4. 4. Agenda 1. エッジデバイスでDeep Learning推論を実現するために 2. 組込みDeep Learningのためのモデル圧縮 3. FPGA SoCを使った推論のアクセラレーション 4. まとめ
  5. 5. 1.エッジデバイスで Deep Learning推論を実現するために
  6. 6. LeapMind Inc. © 2018 組込みDeep Learningにおける課題 1. モデルのサイズが大きい 一般的なモデルで100MB〜数MB 某M社で利用しているモデルのサイズは15GB 2. デバイス・ハードウェアが貧弱 利用環境から来る電力、スペース等への様々な制約が存在 必然的に貧弱なデバイスを選択せざるを得ない GPUは強力だが、電力使用量や発熱などの問題
  7. 7. LeapMind Inc. © 2018 1. モデルのサイズが大きい 一般的なモデルで100MB〜数MB 某M社で利用しているモデルのサイズは15GB ⇒ モデル圧縮 2. デバイス・ハードウェアが貧弱 利用環境から来る電力、スペース等への様々な制約が存在 必然的に貧弱なデバイスを選択せざるを得ない GPUは強力だが、電力使用量や発熱などの問題 ⇒ FPGAによるアクセラレーションの実現 組込みDeep Learningにおける課題
  8. 8. 2. 組込みDeep Learningのための モデル圧縮
  9. 9. LeapMind Inc. © 2018 Deep Learningにおける主なモデル圧縮手法 4 Distillation 蒸留 Sharing 共有 Pruning 剪定 Quantization 量子化 一旦学習したネットワーク(教師モデル)の出力を 再現するようなネットワーク(生徒モデル)を新たに学習 近い値を持つパラメータをデータ構造として共有 影響の小さいシナプスあるいはニューロンを削除 重みなどのパラメータのビット幅を削減 3 2 1
  10. 10. LeapMind Inc. © 2018 その前に)精度はどこまで重要か りんご 92.6% みかん 35.3% … 画像分類の場合、多少の精度劣化は影響しない りんご 75.0% みかん 52.0% …
  11. 11. LeapMind Inc. © 2018 その前に)精度はどこまで重要か 一方、たとえば物体検出の場合、 精度や誤差は領域の特定誤差に直接影響する 物体を覆う矩形(bounding box)が正しく描けなくなる
  12. 12. LeapMind Inc. © 2018 剪定 Pruning 目的に大きく影響しないシナプス あるいはニューロンを刈る これにより、データ量の圧縮と計算回数の 大幅な削減が同時に図れる 剪定によりテンソルが疎になるため 疎な箇所を圧縮して保持するデータ構造と そのデータ構造を解釈するハードウェアを 用意すると効果が大きくなる
  13. 13. LeapMind Inc. © 2018 量子化 Quantization DNNが保持するパラメータを 低ビット幅のデータに変換する 全体でのデータ量を削減できる他 ハードウェアの演算データパス幅を 削減する効果がある 特に1~2ビットにおいては積和演算を XNORゲートで実現できるため 計算効率は飛躍的に向上する 低ビット表現で同じ値となるパラメータを モデル内で共有することでサイズを圧縮できる
  14. 14. LeapMind Inc. © 2018 蒸留 Distillation 大きなDNNを教師モデルとし その入出力を模擬するような 生徒モデルを小さなDNNで新たに学習させる モデル圧縮の効果以外に、精度の向上を見込める場合もある
  15. 15. LeapMind Inc. © 2018 剪定に関する考察 再学習をしない剪定は容易に精度劣化を引き起こす 剪定と再学習を繰り返すことで、精度劣化を低減できる Han et al., Learning both weights and connections for efficient neural networks, NIPS’15
  16. 16. LeapMind Inc. © 2018 剪定後の疎テンソル処理高速化 特定DNN ハードウェア 汎用DNN アクセラレータ GPU CPU 専用回路もしくはハードワイヤードに分岐処理 効率的な処理が可能 専用回路を組み込むことで 高圧縮率と高速化を同時に実現可能 スループットに特化した構造 疎な行列計算には非効率なアーキテクチャ スループットよりもレイテンシ 分岐予測やキャッシュが外れるとオーバーヘッドが発生
  17. 17. LeapMind Inc. © 2018 量子化によるビット幅と各ネットワークの精度低下の関連性 出典:A Survey of FPGA Based Neural Network Accelerator: https://arxiv.org/abs/1712.08934 1%程度の誤差低下における許容範囲 精度を重視するなら量子化の限界は8ビット
  18. 18. LeapMind Inc. © 2018 量子化において考えるべきこと 対象となる ハードウェアの選定 量子化ビット数 学習の必要性
  19. 19. LeapMind Inc. © 2018 量子化において考えるべきこと 対象となる ハードウェアの選定 学習の必要性 8ビット整数または固定小数点数までの 量子化ならば 精度を落とさず実現可能 しかし特定ハードウェア 特に廉価なFPGAで8ビットでは多すぎる 量子化ビット数
  20. 20. LeapMind Inc. © 2018 量子化において考えるべきこと 対象となる ハードウェアの選定 剪定と同様に 量子化も学習または再学習しながら 行うことによって 精度劣化を低減できることが いくつかの研究で報告されている 量子化ビット数 学習の必要性
  21. 21. LeapMind Inc. © 2018 量子化において考えるべきこと 学習の必要性 GPUを採用する場合 8ビットより少ないビット数を採用しても あまり意味がない 専用ハードウェアの場合 特に2値、3値を採用すると 乗算をXNORゲートで代替でき 大幅な省面積化と高速化が期待できる 量子化ビット数 対象となる ハードウェアの選定
  22. 22. 3. FPGA SoCを使ったDNN推論の アクセラレーション
  23. 23. LeapMind, Inc. © 2018 DNNのサイズは大きい 圧縮しなければ、たとえば8.5MB(MobileNet) 究極に圧縮して89KB エッジ向けFPGA内BRAMは~1MB なので、FPGA内に収めることは可能 ただしDNNの設計や精度保証の仕方によっては FPGA内に収まらず、Host RAMに出す必要あり Deep LearningのためのHW(FPGA)アクセラレータ設計 CPU Host RAM FPGA logic Computation unit BRAM DSP Interconnec t 課題 Interconnect通信が律速 なるべくFPGA内通信に収める 通信量を減らす 計算速度が遅い FPGA/CPUに適した演算を利用する 高速な計算ユニットを使う 動作周波数を上げる
  24. 24. LeapMind, Inc. © 2018 通信コスト削減 計算リソース(面積)削減 対策1:量子化 CPU Host RAM FPGA logic Computation unit BRAM DSP Interconnec t
  25. 25. LeapMind, Inc. © 2018 対策1:量子化 出典: A Survey of FPGA Based Neural Network Accelerator: https://arxiv.org/abs/1712.08934 量子化のスライドで示した各ビット幅に対して、加算と乗算器の合成に必要 なLUTとFFのリソースを示す。(Vivado2017.2を利用、xilinx XC7VX69T?)
  26. 26. LeapMind, Inc. © 2018 対策1:量子化 Float32に対してfixed16は約70%のリソース節約! → 1.4倍の高速化 量子化のスライドで示した各ビット幅に対して、加算と乗算器の合成に必要 なLUTとFFのリソースを示す。(Vivado2017.2を利用、xilinx XC7VX69T?) 出典: A Survey of FPGA Based Neural Network Accelerator: https://arxiv.org/abs/1712.08934
  27. 27. LeapMind, Inc. © 2018 対策1:量子化 Float32に対してfixed8は約93%のリソース節約!! → 約14倍 量子化のスライドで示した各ビット幅に対して、加算と乗算器の合成に必要 なLUTとFFのリソースを示す。(Vivado2017.2を利用、xilinx XC7VX69T?) 出典: A Survey of FPGA Based Neural Network Accelerator: https://arxiv.org/abs/1712.08934
  28. 28. LeapMind, Inc. © 2018 対策1:量子化 Float32に対してfixed4は約98%のリソース節約!!!! → 約54倍 量子化のスライドで示した各ビット幅に対して、加算と乗算器の合成に必要 なLUTとFFのリソースを示す。(Vivado2017.2を利用、xilinx XC7VX69T?) 出典: A Survey of FPGA Based Neural Network Accelerator: https://arxiv.org/abs/1712.08934
  29. 29. LeapMind, Inc. © 2018 FPGAにはFPGA(HW回路)が、CPUにはCPUが得意な演算が存在 よって、FPGAとCPUが得意な演算のみでニューラルネットワークを構成し それぞれが得意な計算を連続して行えるように処理を設計 対策2:FPGA/CPUに適した演算を使う CPU Host RAM FPGA logic Computation unit BRAM DSP Interconnec t
  30. 30. LeapMind, Inc. © 2018 1ビット量子化の場合、全ての積和演算をXNORで実現可能 圧倒的な計算リソース(時間的・空間的)の効率化 ただし、精度を出すのは非常に難しい 複数ビットでの量子化であれば、積和演算のためにDSPを 積極的に活用することで高速な計算が可能に 対策2(a):積和演算の高速化 CPU Host RAM FPGA logic Computation unit BRAM DSP Interconnec t
  31. 31. LeapMind, Inc. © 2018 FPGAは元来動作周波数が低いデバイスなので、様々な方策による周波数Upが有効 ■テンソル積演算器のハードウェア化 ■ニューロンの共有化による fan-in/fan-out 削減、ルーティング回避 ■DSPの効率的活用 一般的なFPGA内DSP:理論的には 700-900MHz で動作 ⇔ 実際には、RAMとの間のルーティングが律速して 100MHz-300MHz 対策3:動作周波数の最適化 CPU Host RAM FPGA logic Computation unit BRAM DSP Interconnec t
  32. 32. LeapMind, Inc. © 2018 ネットワーク内の各ノードでの入出力は「テンソル」=多次元配列 よって、各ノードで多重ループを回して処理 → ハードウェアに合わせた最適化をすることで高速化を図れる 例) • 並列化 • タイリング(または「ブロック化」、ループをキャッシュが効くサイズに分割) • テンソル化(一定の大きさのテンソルを分割、直接ハードウェアで処理) →テンソルとHWのサイズに見合った分割を行うことが重要 その他の対策:多重ループの最適化 適切なループの分割 不適切なループの分割
  33. 33. 4. まとめ
  34. 34. LeapMind Inc. © 2018 以下のお話をしました 組込みDeep Learningのためには、 1. モデルのサイズが大きい ⇒ モデル圧縮 2. デバイスが貧弱 ⇒ FPGAを使ったアクセラレーション
  35. 35. LeapMind Inc. © 2018 モデル圧縮 まとめ ■ 剪定、量子化、共有、蒸留 といった技術が存在 ■ いずれも、再学習が前提 or 再学習なしでは 大幅な精度劣化を招く ■組込み環境でDeep Learningを実現するには モデル圧縮とFPGAを組み合わせると効率的
  36. 36. LeapMind Inc. © 2018 FPGAを使ったアクセラレーション まとめ ■ CPU⇔FPGA間通信をなるべく削減する ■ FPGA/CPUに適した演算のみを利用する ■ 積和演算を高速化させる ■ 動作周波数の最適化させる ■ 多重ループを最適化させる
  37. 37. LeapMind Inc. © 2018 37 ご質問などございましたら、お気軽にご連絡ください。 deltatech@leapmimd.io http://leapmind.io/

×