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.

AutoTVM紹介

1,294 views

Published on

Halide 勉強会(2018/07/28)のLT資料です
https://halide-ug.connpass.com/event/91556/

Published in: Technology
  • Be the first to comment

AutoTVM紹介

  1. 1. © DeNA Co., Ltd. AutoTVMの紹介 Halide勉強会 LT July 28, 2018 Tomohiro Kato AI System Dept. DeNA Co., Ltd.
  2. 2. © DeNA Co., Ltd. 2
  3. 3. © DeNA Co., Ltd. 3
  4. 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. 5. © DeNA Co., Ltd. 背景  DeepLearning技術をプロダクトで利用したい  サーバーサイドGPUだけでなく、モバイルCPU/GPUで動かしたい  多様なデバイスに対応したい ⁃ でも高速に動かしたい ⁃ でも精度は保ちたい • でも開発コストを抑えたい  Tensorflow Lite, Caffe2, OpenCVなど選択肢が増えては来たが、 速度とデプロイ周りのtoolchain的にTVMには期待し、調査中 5
  6. 6. © DeNA Co., Ltd. TVM Stack overview  DeepLearningモデル → ターゲットHWで動くlow-level codeを生成  推論用 6from [1] 計算グラフの最適化 実装の最適化 ONNXなど経由して モデルをインポート ターゲット向けビルド
  7. 7. © DeNA Co., Ltd. TVMのspeed  cuDNN等は使わず、直接GPUカーネルを生成できる  workload毎にScheduleを最適化でき、End-to-Endの推論も高速化 7 ひとえにconv2dと言っても 入出力サイズやカーネルサイズに応じて ハードウェアを効率よく使うために 実装の最適化が必要 人手でやるのは、とてもつらい from [1]
  8. 8. © DeNA Co., Ltd. Schedule  ScheduleはPythonで記述するが、ハイパーパラメータチューニングは必須 ⁃ 以下、行列の積和演算がScheduleによってどんなlow level codeになるかの例 ⁃ これはまだ単純だが、convとかになると複雑に... 8from [2] Figue.1
  9. 9. © DeNA Co., Ltd. 9 AutoTVM 機械学習により、高速なScheduleを獲得する
  10. 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. 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. 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. 13. © DeNA Co., Ltd. statistical cost model  モデル ⁃ XGBoost or TreeGRU  特徴量 ⁃ loop length, annotation(unrollなど), メモリのアクセス回数など ⁃ workloadによらない汎用的な特徴とすることで、転移学習もできる ⁃ 詳細は [2] appendix or 実装  Loss関数 ⁃ 実行時間の回帰より、rank lossが性能が良かった 13
  14. 14. © DeNA Co., Ltd. 実験結果: コストモデルの比較  提案のGBT, TreeGRUが最終的な性能も収束の速さでも優れている ⁃ C1などはconvolutionの異なるworkload ⁃ C3はconv1x1。差がないのは実装的に最適化しやすいから? 14from [2]
  15. 15. © DeNA Co., Ltd. 実験結果: 転移学習の有無  学習したコストモデルを異なるworkload探索時の初期値としてつかう ⁃ コストモデルの併用もできる  転移学習したほうが収束が速い  convで学習したモデルがfully connectedにも有効 15from [2]
  16. 16. © DeNA Co., Ltd. 実験結果: End-to-Endの性能  DeepLearningモデル全体の推論においても、既存フレームワークより高速 16from [2]
  17. 17. © DeNA Co., Ltd. まとめと所感  まとめ ⁃ AutoTVMにより、scheduleの自動調整が可能になってきた  所感 ⁃ End-to-Endで数倍速くなるのは嬉しい ⁃ 実装が遅いからXXXレイヤーは使えないね!と言ったモデル設計からの開放 ⁃ DeepLearningモデルとデバイスだけ用意したら、 あとは勝手に最適化してくれる世界がくるんでしょうか...? 期待 ⁃ ResNetなど一般的なモデルの全WorkloadのEnd-to-Endな最適化には どれくらい時間がかかるんだろうか?試してみたい 17
  18. 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

×