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