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.

JUIZ DLK: 組込み向け Deep Learning コンパイラ

28,441 views

Published on

Talk @ TFUG KANSAI ハード部 #1
https://leapmind.connpass.com/event/74156/

Published in: Engineering

JUIZ DLK: 組込み向け Deep Learning コンパイラ

  1. 1. LeapMind株式会社 HW開発チーム コンパイラ&合成ユニット リーダー 今井 健男 2017/12/21 @ TFUG KANSAI JUIZ DLK 組込み向け Deep Learningコンパイラ
  2. 2. Contents 1. 発表者紹介 2. LeapMindの紹介 3. JUIZ DLK 概要 4. JUIZ DLK における量子化の取り扱い 5. 余談を少し
  3. 3. LeapMind, Inc. © 2017 今井健男 Takeo Imai 経歴 大阪大学基礎工学部情報工学科卒 LSI高位設計、HW&SW協調設計 東京大学大学院理学系研究科情報科学専攻 修士了 分散・並列プログラミング言語設計 長らく某大手電機メーカーの研究所に所属 LSI設計自動化(EDA) プログラミング言語 ソフトウェア工学 の研究に従事 2017年、LeapMindにジョイン Deep Learning 向けコンパイラ開発 を担当 訳書(共訳) 『抽象によるソフトウェア設計−Alloyではじめる形式手法−』 『型システム入門−プログラミング言語と型の理論−』 発表者紹介
  4. 4. LeapMind, Inc. © 2017 会社概要 & ビジネス Company LeapMind株式会社 Established in 2012年12月25日 Capital 781,984,235円 (総投資額 $14M) CEO 松田 総一 Major Shareholder Intel capital、伊藤忠テクノロジー ベンチャーズ、Visionnaire Ventures、NTTデータ、NECキャ ピタル Employees 47名 Head Office 東京都渋谷区渋谷3-15-3 土屋ビル3F 研究 ソリューション ライセンス サービス提供共同研究 技術提供
  5. 5. LeapMind, Inc. © 2017 LeapMind’s Concept Smaller, Faster, More Efficient We enable Deep Learning of Things(DoT)
  6. 6. LeapMind, Inc. © 2017 New market for Deep Learning Computing Calculation Environment for GPU New Market Calculation Environment Calculation Environment for Cloud
  7. 7. LeapMind, Inc. © 2017 LeapMindが狙うアプリケーション • 自動運転車 • 瓦礫撤去ロボット • 発電所での異常検知 • 食物の異物混入検査 • ドローンを用いたビル監視 • スマート家電 • etc.
  8. 8. LeapMind, Inc. © 2017 LeapMindのサービス形態 コンパイル&最適化Deep Learning モデル JUIZ DoT Client Original JUIZ DLK さまざまな製品へデプロイ
  9. 9. LeapMind, Inc. © 2017 LeapMindコアプロダクト開発体制 全社員の約1/4がココ なぜか全員外国人 ほぼ全員がモデル圧縮 (量子化, pruning, 蒸留, etc.) の研究 Deep Learningモデル向け コンパイラ開発 FPGAアクセラレータ設計 研究チームの開発した アルゴリズムをライブラリ化、 製品化、サービス化
  10. 10. JUIZ DLKの概要
  11. 11. LeapMind, Inc. © 2017 JUIZ DLKとは GPU FPGA (SoC) CUDA OpenCL ARM Intel JUIZ DLK CoreML LLVM NNVM TVM
  12. 12. LeapMind, Inc. © 2017 JUIZ DLKとは GPU FPGA (SoC) CUDA OpenCL ARM Intel JUIZ DLK CoreML LLVM NNVM TVM
  13. 13. LeapMind, Inc. © 2017 JUIZ DLKとは GPU FPGA (SoC) CUDA OpenCL ARM Intel JUIZ DLK CoreML LLVM NNVM TVM
  14. 14. LeapMind, Inc. © 2017 NNVM / TVMとは 開発者 Tianqi Chen(ワシントン大) w/ DMLC (Distributed (Deep) Machine Learning Community) MXNet, XGBoost, TinyFlow等を開発 NNVM (Neural Network Virtual Machine) ONNX/CoreMLを介して、様々なフレームワークのモデルをインポート DNNのグラフを最適化 グラフ中の複数オペレータを合成(fusion) TVM (Tensor Virtual Machine) Tensor演算(=多重ループ)の最適化、並列化 タイリング、「テンソル化」、etc. 様々なターゲットHW向けのコード生成、コンパイル CPU(Intel, ARM, ...), GPU(OpenCL, CUDA) ↑LeapMindはFPGAをターゲットに拡張
  15. 15. LeapMind, Inc. © 2017 ん? GPU FPGA (SoC) CUDA OpenCL ARM Intel JUIZ DLK CoreML LLVM NNVM TVM ?????
  16. 16. LeapMind, Inc. © 2017 TensorFlow → ONNX ? ONNX (Open Neural Network Exchange) FacebookとMicrosoftが共同提案した、 フレームワーク非依存なDNNの標準フォーマット 現在、多数の企業が協賛・公式サポートを表明 onnx-tensorflow IBM Research が開発、ONNXにて公式採用 (https://github.com/onnx/onnx-tensorflow) ONNXファイルをTensorFlowにインポートして実行できる(ONNX→TensorFlow) TensorFlowからONNXへは限定的? TensorFlowからONNXへの変換をサポートした (完璧な)ツールはまだない!! ???
  17. 17. LeapMind, Inc. © 2017 そこで GPU FPGA (SoC) CUDA OpenCL ARM Intel JUIZ DLK CoreML LLVM NNVM TVM tensorflow-onnx
  18. 18. LeapMind, Inc. © 2017 tensorflow-onnx開発してます! TensorFlow の Protobuf ファイルを ONNX フォーマットに変換 特定のオペレータ(の並び) を削除するなど可能 単なる変換ツールではなく 様々なユーザ定義処理を 合間に挟むことのできる フレームワークとして設計 OSSとして公開予定
  19. 19. JUIZ DLKにおける 量子化の取り扱い
  20. 20. LeapMind, Inc. © 2017 量子化 (quantization) って?  モデル圧縮のテクニックの1つ  通常なら32bit floatでなされているDNN内計算を n bit integer (n=1…)に圧縮  様々な細かいテクニックが存在  ビット幅 n を幾つにするか? • BNN … 重み, アクティベーションとも1bit • DoReFa … 重み1bit, アクティベーション2bit 他 • etc.  どう変換するか? • linear quantization(線形変換) • log quantization(対数変換) • etc.  TensorFlow には 8bit linear quantization のライブラリが存在
  21. 21. LeapMind, Inc. © 2017 LeapMindにおける量子化テクニックの開発 2bit hogehoge quantization できた! めっちゃ精度ええで!
  22. 22. LeapMind, Inc. © 2017 LeapMindにおける量子化テクニックの開発 2bit hogehoge quantization できた! めっちゃ精度ええで! おっ、 なかなかええんちゃう? HWにもええ具合に落ちそう SWチームさん、どう?
  23. 23. LeapMind, Inc. © 2017 LeapMindにおける量子化テクニックの開発 2bit hogehoge quantization できた! めっちゃ精度ええで! おっ、 なかなかええんちゃう? HWにもええ具合に落ちそう SWチームさん、どう? よっしゃーウチで モデル作って ライブラリに加えるわ できたらFPGA焼いたってー
  24. 24. LeapMind, Inc. © 2017 LeapMindにおける量子化テクニックの開発 6bit hogefuga quantization できた! こいつ半端ないわマジで!
  25. 25. LeapMind, Inc. © 2017 LeapMindにおける量子化テクニックの開発 6bit hogefuga quantization できた! こいつ半端ないわマジで! アホか! 6bitなんかアラインメント かけたら8bitやないか そんなん意味あるかボケ!
  26. 26. LeapMind, Inc. © 2017 LeapMindにおける量子化テクニックの開発 6bit hogefuga quantization できた! こいつ半端ないわマジで! アホか! 6bitなんかアラインメント かけたら8bitやないか そんなん意味あるかボケ!はあ? そういうことは先に 言わんかいこのクソが!
  27. 27. LeapMind, Inc. © 2017 量子化モデルの処理の流れ GPU FPGA (SoC) CUDA OpenCL ARM Intel JUIZ DLK CoreML LLVM NNVM TVM 量子化オペレータ 付モデル
  28. 28. LeapMind, Inc. © 2017 TensorFlow + 量子化オペレータ  「量子化」をカスタムオペレータを使って表現  attribute: ビット幅? 量子化の方式は? etc.  実現方法 → Qiita TensorFlow Advent Calendar 2017 12/17 「 tensorflow Defun で ternary weight 」
  29. 29. LeapMind, Inc. © 2017 量子化モデルの処理の流れ GPU FPGA (SoC) CUDA OpenCL ARM Intel JUIZ DLK CoreML LLVM NNVM TVM tensorflow-onnx 量子化オペレータ 付モデル 量子化オペレータの 合成(fusion) FPGAバイナリ 生成
  30. 30. LeapMind, Inc. © 2017 TVMからFPGA向けVerilog HDLの生成 TVM (HalideIR) C++ Verilog HDL  TVMの機能に則った、タイリング、テンソル化→ 並列化  スパース性を考慮したループの圧縮  etc.  サードパーティ製HLSを目的に応じて利用  Intel (Altera) HLS  Vivado HLS  某社(ひみつ)とも共同開発中
  31. 31. 余談
  32. 32. LeapMind, Inc. © 2017 すいません公開できません 都合により ばっさりカットします ( ;´Д`)
  33. 33. LeapMind, Inc. © 2017 そんなこんなで 日々のめまぐるしい 競争にもめげず 僕らLeapMindは 開発ガンバってます
  34. 34. LeapMind, Inc. © 2017 34 info@leapmimd.io imai@leapmind.io http://leapmind.io/ ご質問などございましたら、お気軽にご連絡ください。

×