Weitere ähnliche Inhalte
Ähnlich wie AutoTVM紹介 (20)
Kürzlich hochgeladen (10)
AutoTVM紹介
- 1. © DeNA Co., Ltd.
AutoTVMの紹介
Halide勉強会 LT
July 28, 2018
Tomohiro Kato
AI System Dept.
DeNA Co., Ltd.
- 4. © DeNA Co., Ltd.
自己紹介
加藤 倫弘 (かとう ともひろ)
㈱ DeNA システム本部 AIシステム部
Computer Vision関連のプロジェクトを担当
最近書いた(link)
Chainer → NNVM/TVM → Androidの話
NN DistillerでPytorchモデルのpruningする
DeepLearningのモデル軽量化 (ICLR2018)
Efficient Neural Network Architecture Serach論文紹介
4
@_tkato_Twitter
- 5. © DeNA Co., Ltd.
背景
DeepLearning技術をプロダクトで利用したい
サーバーサイドGPUだけでなく、モバイルCPU/GPUで動かしたい
多様なデバイスに対応したい
⁃ でも高速に動かしたい
⁃ でも精度は保ちたい
• でも開発コストを抑えたい
Tensorflow Lite, Caffe2, OpenCVなど選択肢が増えては来たが、
速度とデプロイ周りのtoolchain的にTVMには期待し、調査中
5
- 6. © DeNA Co., Ltd.
TVM Stack overview
DeepLearningモデル → ターゲットHWで動くlow-level codeを生成
推論用
6from [1]
計算グラフの最適化
実装の最適化
ONNXなど経由して
モデルをインポート
ターゲット向けビルド
- 7. © DeNA Co., Ltd.
TVMのspeed
cuDNN等は使わず、直接GPUカーネルを生成できる
workload毎にScheduleを最適化でき、End-to-Endの推論も高速化
7
ひとえにconv2dと言っても
入出力サイズやカーネルサイズに応じて
ハードウェアを効率よく使うために
実装の最適化が必要
人手でやるのは、とてもつらい
from [1]
- 8. © DeNA Co., Ltd.
Schedule
ScheduleはPythonで記述するが、ハイパーパラメータチューニングは必須
⁃ 以下、行列の積和演算がScheduleによってどんなlow level codeになるかの例
⁃ これはまだ単純だが、convとかになると複雑に...
8from [2] Figue.1
- 10. © DeNA Co., Ltd.
AutoTVM overview
“Learning to Optimize Tensor Programs” [2]
⁃ 問題を定式化しAutoTVMの提案、各コンポーネントの設計戦略を実験的に評価
⁃ コストモデルでlow level codeの実行時間を推定し、速いcodeを探索
⁃ 探索を重ねる毎に、高速化されていく
⁃ あるモデルについて既存DeepLearningフレームワークより x1.2 ~ x3.8 高速化
[AUTOTVM] Auto-tuning module for tvm #1311
⁃ https://github.com/dmlc/tvm/issues/1311
⁃ コアコンポーネントはマージ済
• https://github.com/dmlc/tvm/tree/master/python/tvm/autotvm
⁃ Tutorialもあるので、本日デモします
10
- 11. © DeNA Co., Ltd.
AutoTVM components
11アルゴリズムの詳細は[2]、または autotvm/tuner/tuner.py#L67-L131 参照
数式とScheduleからlow level code生成
そのコスト(実行時間)を最小化するScheduleを探索
while n_trials < max_trials:
コストモデルが推定するコストが低いscheduleをサンプル
デバイスでscheduleを実測
実測結果でコストモデルを更新(学習)
trialの履歴から最速のscheduleを選択
from [2] Figure.2
- 12. © DeNA Co., Ltd.
Demo
Tuning High Performance Convolution on NVIDIA GPUs
https://docs.tvm.ai/tutorials/autotvm/tune_cuda_conv2d.html
⁃ TVMが公式に提供するAutoTVMの簡単なtutorial
⁃ 仕組みを把握するのに便利
⁃ AutoTVMのAPIは、ローカルのGPUだけでなく、
RPCでAndroidやRaspberry Piでも使えるように対応されているので
あとで試してみたい
12
- 13. © DeNA Co., Ltd.
statistical cost model
モデル
⁃ XGBoost or TreeGRU
特徴量
⁃ loop length, annotation(unrollなど), メモリのアクセス回数など
⁃ workloadによらない汎用的な特徴とすることで、転移学習もできる
⁃ 詳細は [2] appendix or 実装
Loss関数
⁃ 実行時間の回帰より、rank lossが性能が良かった
13
- 14. © DeNA Co., Ltd.
実験結果: コストモデルの比較
提案のGBT, TreeGRUが最終的な性能も収束の速さでも優れている
⁃ C1などはconvolutionの異なるworkload
⁃ C3はconv1x1。差がないのは実装的に最適化しやすいから?
14from [2]
- 15. © DeNA Co., Ltd.
実験結果: 転移学習の有無
学習したコストモデルを異なるworkload探索時の初期値としてつかう
⁃ コストモデルの併用もできる
転移学習したほうが収束が速い
convで学習したモデルがfully connectedにも有効
15from [2]
- 16. © DeNA Co., Ltd.
実験結果: End-to-Endの性能
DeepLearningモデル全体の推論においても、既存フレームワークより高速
16from [2]
- 17. © DeNA Co., Ltd.
まとめと所感
まとめ
⁃ AutoTVMにより、scheduleの自動調整が可能になってきた
所感
⁃ End-to-Endで数倍速くなるのは嬉しい
⁃ 実装が遅いからXXXレイヤーは使えないね!と言ったモデル設計からの開放
⁃ DeepLearningモデルとデバイスだけ用意したら、
あとは勝手に最適化してくれる世界がくるんでしょうか...? 期待
⁃ ResNetなど一般的なモデルの全WorkloadのEnd-to-Endな最適化には
どれくらい時間がかかるんだろうか?試してみたい
17
- 18. © DeNA Co., Ltd.
Reference
1. Tianqi Chen. TVM: An Automated End-to-End Optimizing Compiler for Deep Learning.
arXiv:1802.04799
⁃ https://arxiv.org/abs/1802.04799
2. Tianqi Chen. Learning to Optimize Tensor Programs. arXiv:1805.08166
⁃ https://arxiv.org/abs/1805.08166
18