SlideShare a Scribd company logo
LeapMind株式会社 HW開発チーム
コンパイラ&合成ユニット リーダー
今井 健男
2017/12/21 @ TFUG KANSAI
JUIZ DLK
組込み向け
Deep Learningコンパイラ
Contents
1. 発表者紹介
2. LeapMindの紹介
3. JUIZ DLK 概要
4. JUIZ DLK における量子化の取り扱い
5. 余談を少し
LeapMind, Inc. © 2017
今井健男 Takeo Imai
経歴
大阪大学基礎工学部情報工学科卒
LSI高位設計、HW&SW協調設計
東京大学大学院理学系研究科情報科学専攻 修士了
分散・並列プログラミング言語設計
長らく某大手電機メーカーの研究所に所属
LSI設計自動化(EDA)
プログラミング言語
ソフトウェア工学
の研究に従事
2017年、LeapMindにジョイン
Deep Learning 向けコンパイラ開発 を担当
訳書(共訳)
『抽象によるソフトウェア設計−Alloyではじめる形式手法−』
『型システム入門−プログラミング言語と型の理論−』
発表者紹介
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
研究 ソリューション
ライセンス
サービス提供共同研究
技術提供
LeapMind, Inc. © 2017
LeapMind’s Concept
Smaller, Faster, More Efficient
We enable Deep Learning of Things(DoT)
LeapMind, Inc. © 2017
New market for Deep Learning Computing
Calculation Environment
for GPU
New Market Calculation
Environment
Calculation Environment
for Cloud
LeapMind, Inc. © 2017
LeapMindが狙うアプリケーション
• 自動運転車
• 瓦礫撤去ロボット
• 発電所での異常検知
• 食物の異物混入検査
• ドローンを用いたビル監視
• スマート家電
• etc.
LeapMind, Inc. © 2017
LeapMindのサービス形態
コンパイル&最適化Deep Learning モデル
JUIZ DoT
Client Original
JUIZ DLK
さまざまな製品へデプロイ
LeapMind, Inc. © 2017
LeapMindコアプロダクト開発体制
全社員の約1/4がココ
なぜか全員外国人
ほぼ全員がモデル圧縮
(量子化, pruning, 蒸留, etc.)
の研究
Deep Learningモデル向け
コンパイラ開発
FPGAアクセラレータ設計
研究チームの開発した
アルゴリズムをライブラリ化、
製品化、サービス化
JUIZ DLKの概要
LeapMind, Inc. © 2017
JUIZ DLKとは
GPU
FPGA
(SoC)
CUDA
OpenCL
ARM
Intel
JUIZ DLK
CoreML LLVM
NNVM TVM
LeapMind, Inc. © 2017
JUIZ DLKとは
GPU
FPGA
(SoC)
CUDA
OpenCL
ARM
Intel
JUIZ DLK
CoreML LLVM
NNVM TVM
LeapMind, Inc. © 2017
JUIZ DLKとは
GPU
FPGA
(SoC)
CUDA
OpenCL
ARM
Intel
JUIZ DLK
CoreML LLVM
NNVM TVM
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をターゲットに拡張
LeapMind, Inc. © 2017
ん?
GPU
FPGA
(SoC)
CUDA
OpenCL
ARM
Intel
JUIZ DLK
CoreML LLVM
NNVM TVM
?????
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への変換をサポートした
(完璧な)ツールはまだない!!
???
LeapMind, Inc. © 2017
そこで
GPU
FPGA
(SoC)
CUDA
OpenCL
ARM
Intel
JUIZ DLK
CoreML LLVM
NNVM TVM
tensorflow-onnx
LeapMind, Inc. © 2017
tensorflow-onnx開発してます!
TensorFlow の Protobuf ファイルを ONNX フォーマットに変換
特定のオペレータ(の並び)
を削除するなど可能
単なる変換ツールではなく
様々なユーザ定義処理を
合間に挟むことのできる
フレームワークとして設計
OSSとして公開予定
JUIZ DLKにおける
量子化の取り扱い
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 のライブラリが存在
LeapMind, Inc. © 2017
LeapMindにおける量子化テクニックの開発
2bit hogehoge quantization
できた!
めっちゃ精度ええで!
LeapMind, Inc. © 2017
LeapMindにおける量子化テクニックの開発
2bit hogehoge quantization
できた!
めっちゃ精度ええで!
おっ、
なかなかええんちゃう?
HWにもええ具合に落ちそう
SWチームさん、どう?
LeapMind, Inc. © 2017
LeapMindにおける量子化テクニックの開発
2bit hogehoge quantization
できた!
めっちゃ精度ええで!
おっ、
なかなかええんちゃう?
HWにもええ具合に落ちそう
SWチームさん、どう?
よっしゃーウチで
モデル作って
ライブラリに加えるわ
できたらFPGA焼いたってー
LeapMind, Inc. © 2017
LeapMindにおける量子化テクニックの開発
6bit hogefuga quantization
できた!
こいつ半端ないわマジで!
LeapMind, Inc. © 2017
LeapMindにおける量子化テクニックの開発
6bit hogefuga quantization
できた!
こいつ半端ないわマジで!
アホか!
6bitなんかアラインメント
かけたら8bitやないか
そんなん意味あるかボケ!
LeapMind, Inc. © 2017
LeapMindにおける量子化テクニックの開発
6bit hogefuga quantization
できた!
こいつ半端ないわマジで!
アホか!
6bitなんかアラインメント
かけたら8bitやないか
そんなん意味あるかボケ!はあ?
そういうことは先に
言わんかいこのクソが!
LeapMind, Inc. © 2017
量子化モデルの処理の流れ
GPU
FPGA
(SoC)
CUDA
OpenCL
ARM
Intel
JUIZ DLK
CoreML LLVM
NNVM TVM
量子化オペレータ
付モデル
LeapMind, Inc. © 2017
TensorFlow + 量子化オペレータ
 「量子化」をカスタムオペレータを使って表現
 attribute: ビット幅? 量子化の方式は? etc.
 実現方法
→ Qiita TensorFlow Advent Calendar 2017
12/17 「 tensorflow Defun で ternary weight 」
LeapMind, Inc. © 2017
量子化モデルの処理の流れ
GPU
FPGA
(SoC)
CUDA
OpenCL
ARM
Intel
JUIZ DLK
CoreML LLVM
NNVM TVM
tensorflow-onnx
量子化オペレータ
付モデル
量子化オペレータの
合成(fusion)
FPGAバイナリ
生成
LeapMind, Inc. © 2017
TVMからFPGA向けVerilog HDLの生成
TVM (HalideIR)
C++
Verilog HDL
 TVMの機能に則った、タイリング、テンソル化→ 並列化
 スパース性を考慮したループの圧縮
 etc.
 サードパーティ製HLSを目的に応じて利用
 Intel (Altera) HLS
 Vivado HLS
 某社(ひみつ)とも共同開発中
余談
LeapMind, Inc. © 2017
すいません公開できません
都合により
ばっさりカットします
( ;´Д`)
LeapMind, Inc. © 2017
そんなこんなで
日々のめまぐるしい
競争にもめげず
僕らLeapMindは
開発ガンバってます
LeapMind, Inc. © 2017 34
info@leapmimd.io
imai@leapmind.io
http://leapmind.io/
ご質問などございましたら、お気軽にご連絡ください。

More Related Content

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

  • 1. LeapMind株式会社 HW開発チーム コンパイラ&合成ユニット リーダー 今井 健男 2017/12/21 @ TFUG KANSAI JUIZ DLK 組込み向け Deep Learningコンパイラ
  • 2. Contents 1. 発表者紹介 2. LeapMindの紹介 3. JUIZ DLK 概要 4. JUIZ DLK における量子化の取り扱い 5. 余談を少し
  • 3. LeapMind, Inc. © 2017 今井健男 Takeo Imai 経歴 大阪大学基礎工学部情報工学科卒 LSI高位設計、HW&SW協調設計 東京大学大学院理学系研究科情報科学専攻 修士了 分散・並列プログラミング言語設計 長らく某大手電機メーカーの研究所に所属 LSI設計自動化(EDA) プログラミング言語 ソフトウェア工学 の研究に従事 2017年、LeapMindにジョイン Deep Learning 向けコンパイラ開発 を担当 訳書(共訳) 『抽象によるソフトウェア設計−Alloyではじめる形式手法−』 『型システム入門−プログラミング言語と型の理論−』 発表者紹介
  • 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. LeapMind, Inc. © 2017 LeapMind’s Concept Smaller, Faster, More Efficient We enable Deep Learning of Things(DoT)
  • 6. LeapMind, Inc. © 2017 New market for Deep Learning Computing Calculation Environment for GPU New Market Calculation Environment Calculation Environment for Cloud
  • 7. LeapMind, Inc. © 2017 LeapMindが狙うアプリケーション • 自動運転車 • 瓦礫撤去ロボット • 発電所での異常検知 • 食物の異物混入検査 • ドローンを用いたビル監視 • スマート家電 • etc.
  • 8. LeapMind, Inc. © 2017 LeapMindのサービス形態 コンパイル&最適化Deep Learning モデル JUIZ DoT Client Original JUIZ DLK さまざまな製品へデプロイ
  • 9. LeapMind, Inc. © 2017 LeapMindコアプロダクト開発体制 全社員の約1/4がココ なぜか全員外国人 ほぼ全員がモデル圧縮 (量子化, pruning, 蒸留, etc.) の研究 Deep Learningモデル向け コンパイラ開発 FPGAアクセラレータ設計 研究チームの開発した アルゴリズムをライブラリ化、 製品化、サービス化
  • 11. LeapMind, Inc. © 2017 JUIZ DLKとは GPU FPGA (SoC) CUDA OpenCL ARM Intel JUIZ DLK CoreML LLVM NNVM TVM
  • 12. LeapMind, Inc. © 2017 JUIZ DLKとは GPU FPGA (SoC) CUDA OpenCL ARM Intel JUIZ DLK CoreML LLVM NNVM TVM
  • 13. LeapMind, Inc. © 2017 JUIZ DLKとは GPU FPGA (SoC) CUDA OpenCL ARM Intel JUIZ DLK CoreML LLVM NNVM TVM
  • 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. LeapMind, Inc. © 2017 ん? GPU FPGA (SoC) CUDA OpenCL ARM Intel JUIZ DLK CoreML LLVM NNVM TVM ?????
  • 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. LeapMind, Inc. © 2017 そこで GPU FPGA (SoC) CUDA OpenCL ARM Intel JUIZ DLK CoreML LLVM NNVM TVM tensorflow-onnx
  • 18. LeapMind, Inc. © 2017 tensorflow-onnx開発してます! TensorFlow の Protobuf ファイルを ONNX フォーマットに変換 特定のオペレータ(の並び) を削除するなど可能 単なる変換ツールではなく 様々なユーザ定義処理を 合間に挟むことのできる フレームワークとして設計 OSSとして公開予定
  • 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. LeapMind, Inc. © 2017 LeapMindにおける量子化テクニックの開発 2bit hogehoge quantization できた! めっちゃ精度ええで!
  • 22. LeapMind, Inc. © 2017 LeapMindにおける量子化テクニックの開発 2bit hogehoge quantization できた! めっちゃ精度ええで! おっ、 なかなかええんちゃう? HWにもええ具合に落ちそう SWチームさん、どう?
  • 23. LeapMind, Inc. © 2017 LeapMindにおける量子化テクニックの開発 2bit hogehoge quantization できた! めっちゃ精度ええで! おっ、 なかなかええんちゃう? HWにもええ具合に落ちそう SWチームさん、どう? よっしゃーウチで モデル作って ライブラリに加えるわ できたらFPGA焼いたってー
  • 24. LeapMind, Inc. © 2017 LeapMindにおける量子化テクニックの開発 6bit hogefuga quantization できた! こいつ半端ないわマジで!
  • 25. LeapMind, Inc. © 2017 LeapMindにおける量子化テクニックの開発 6bit hogefuga quantization できた! こいつ半端ないわマジで! アホか! 6bitなんかアラインメント かけたら8bitやないか そんなん意味あるかボケ!
  • 26. LeapMind, Inc. © 2017 LeapMindにおける量子化テクニックの開発 6bit hogefuga quantization できた! こいつ半端ないわマジで! アホか! 6bitなんかアラインメント かけたら8bitやないか そんなん意味あるかボケ!はあ? そういうことは先に 言わんかいこのクソが!
  • 27. LeapMind, Inc. © 2017 量子化モデルの処理の流れ GPU FPGA (SoC) CUDA OpenCL ARM Intel JUIZ DLK CoreML LLVM NNVM TVM 量子化オペレータ 付モデル
  • 28. LeapMind, Inc. © 2017 TensorFlow + 量子化オペレータ  「量子化」をカスタムオペレータを使って表現  attribute: ビット幅? 量子化の方式は? etc.  実現方法 → Qiita TensorFlow Advent Calendar 2017 12/17 「 tensorflow Defun で ternary weight 」
  • 29. LeapMind, Inc. © 2017 量子化モデルの処理の流れ GPU FPGA (SoC) CUDA OpenCL ARM Intel JUIZ DLK CoreML LLVM NNVM TVM tensorflow-onnx 量子化オペレータ 付モデル 量子化オペレータの 合成(fusion) FPGAバイナリ 生成
  • 30. LeapMind, Inc. © 2017 TVMからFPGA向けVerilog HDLの生成 TVM (HalideIR) C++ Verilog HDL  TVMの機能に則った、タイリング、テンソル化→ 並列化  スパース性を考慮したループの圧縮  etc.  サードパーティ製HLSを目的に応じて利用  Intel (Altera) HLS  Vivado HLS  某社(ひみつ)とも共同開発中
  • 32. LeapMind, Inc. © 2017 すいません公開できません 都合により ばっさりカットします ( ;´Д`)
  • 33. LeapMind, Inc. © 2017 そんなこんなで 日々のめまぐるしい 競争にもめげず 僕らLeapMindは 開発ガンバってます
  • 34. LeapMind, Inc. © 2017 34 [email protected] [email protected] http://leapmind.io/ ご質問などございましたら、お気軽にご連絡ください。