SlideShare a Scribd company logo
1 of 34
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

What's hot

Final LINQ extensions III
Final LINQ extensions IIIFinal LINQ extensions III
Final LINQ extensions IIIKouji Matsui
 
TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎Etsuji Nakai
 
NIPS2013読み会: Distributed Representations of Words and Phrases and their Compo...
NIPS2013読み会: Distributed Representations of Words and Phrases and their Compo...NIPS2013読み会: Distributed Representations of Words and Phrases and their Compo...
NIPS2013読み会: Distributed Representations of Words and Phrases and their Compo...Yuya Unno
 
Epub3.0の国際デジュール動向、現在協議検討されていることについて
Epub3.0の国際デジュール動向、現在協議検討されていることについてEpub3.0の国際デジュール動向、現在協議検討されていることについて
Epub3.0の国際デジュール動向、現在協議検討されていることについてMakoto Murata
 
20170419PFNオープンハウス リサーチャーの仕事_公開用
20170419PFNオープンハウス リサーチャーの仕事_公開用20170419PFNオープンハウス リサーチャーの仕事_公開用
20170419PFNオープンハウス リサーチャーの仕事_公開用Preferred Networks
 
ディープラーニング最新動向と技術情報
ディープラーニング最新動向と技術情報ディープラーニング最新動向と技術情報
ディープラーニング最新動向と技術情報NVIDIA Japan
 
深層学習による機械とのコミュニケーション
深層学習による機械とのコミュニケーション深層学習による機械とのコミュニケーション
深層学習による機械とのコミュニケーションYuya Unno
 
深層学習フレームワークChainerの特徴
深層学習フレームワークChainerの特徴深層学習フレームワークChainerの特徴
深層学習フレームワークChainerの特徴Yuya Unno
 
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化Yutaka Kato
 
Pythonはどうやってlen関数で長さを手にいれているの?
Pythonはどうやってlen関数で長さを手にいれているの?Pythonはどうやってlen関数で長さを手にいれているの?
Pythonはどうやってlen関数で長さを手にいれているの?Takayuki Shimizukawa
 
Chainerの使い方と 自然言語処理への応用
Chainerの使い方と自然言語処理への応用Chainerの使い方と自然言語処理への応用
Chainerの使い方と 自然言語処理への応用Yuya Unno
 
Chainer meetup2016 03-19pub
Chainer meetup2016 03-19pubChainer meetup2016 03-19pub
Chainer meetup2016 03-19pubYuta Kashino
 
Tensor flow勉強会 (ayashiminagaranotensorflow)
Tensor flow勉強会 (ayashiminagaranotensorflow)Tensor flow勉強会 (ayashiminagaranotensorflow)
Tensor flow勉強会 (ayashiminagaranotensorflow)tak9029
 
TensorFlowで逆強化学習
TensorFlowで逆強化学習TensorFlowで逆強化学習
TensorFlowで逆強化学習Mitsuhisa Ohta
 
ソフトウェア技術者から見たFPGAの魅力と可能性
ソフトウェア技術者から見たFPGAの魅力と可能性ソフトウェア技術者から見たFPGAの魅力と可能性
ソフトウェア技術者から見たFPGAの魅力と可能性Kenichiro MITSUDA
 
機械学習モデルフォーマットの話:さようならPMML、こんにちはPFA
機械学習モデルフォーマットの話:さようならPMML、こんにちはPFA機械学習モデルフォーマットの話:さようならPMML、こんにちはPFA
機械学習モデルフォーマットの話:さようならPMML、こんにちはPFAShohei Hido
 
高位合成におけるC++テンプレートメタプログラミングの効果
高位合成におけるC++テンプレートメタプログラミングの効果高位合成におけるC++テンプレートメタプログラミングの効果
高位合成におけるC++テンプレートメタプログラミングの効果Kenichiro MITSUDA
 
捗るリコメンドシステムの裏事情(ハッカドール)
捗るリコメンドシステムの裏事情(ハッカドール)捗るリコメンドシステムの裏事情(ハッカドール)
捗るリコメンドシステムの裏事情(ハッカドール)mosa siru
 
Facebookの人工知能アルゴリズム「memory networks」について調べてみた
Facebookの人工知能アルゴリズム「memory networks」について調べてみたFacebookの人工知能アルゴリズム「memory networks」について調べてみた
Facebookの人工知能アルゴリズム「memory networks」について調べてみた株式会社メタップスホールディングス
 

What's hot (20)

Final LINQ extensions III
Final LINQ extensions IIIFinal LINQ extensions III
Final LINQ extensions III
 
TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎TensorFlowプログラミングと分類アルゴリズムの基礎
TensorFlowプログラミングと分類アルゴリズムの基礎
 
NIPS2013読み会: Distributed Representations of Words and Phrases and their Compo...
NIPS2013読み会: Distributed Representations of Words and Phrases and their Compo...NIPS2013読み会: Distributed Representations of Words and Phrases and their Compo...
NIPS2013読み会: Distributed Representations of Words and Phrases and their Compo...
 
Epub3.0の国際デジュール動向、現在協議検討されていることについて
Epub3.0の国際デジュール動向、現在協議検討されていることについてEpub3.0の国際デジュール動向、現在協議検討されていることについて
Epub3.0の国際デジュール動向、現在協議検討されていることについて
 
20170419PFNオープンハウス リサーチャーの仕事_公開用
20170419PFNオープンハウス リサーチャーの仕事_公開用20170419PFNオープンハウス リサーチャーの仕事_公開用
20170419PFNオープンハウス リサーチャーの仕事_公開用
 
ディープラーニング最新動向と技術情報
ディープラーニング最新動向と技術情報ディープラーニング最新動向と技術情報
ディープラーニング最新動向と技術情報
 
深層学習による機械とのコミュニケーション
深層学習による機械とのコミュニケーション深層学習による機械とのコミュニケーション
深層学習による機械とのコミュニケーション
 
深層学習フレームワークChainerの特徴
深層学習フレームワークChainerの特徴深層学習フレームワークChainerの特徴
深層学習フレームワークChainerの特徴
 
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
GBDC 勉強会 #1 Python を用いたツール作成工数の最小化
 
PyCharm入門
PyCharm入門PyCharm入門
PyCharm入門
 
Pythonはどうやってlen関数で長さを手にいれているの?
Pythonはどうやってlen関数で長さを手にいれているの?Pythonはどうやってlen関数で長さを手にいれているの?
Pythonはどうやってlen関数で長さを手にいれているの?
 
Chainerの使い方と 自然言語処理への応用
Chainerの使い方と自然言語処理への応用Chainerの使い方と自然言語処理への応用
Chainerの使い方と 自然言語処理への応用
 
Chainer meetup2016 03-19pub
Chainer meetup2016 03-19pubChainer meetup2016 03-19pub
Chainer meetup2016 03-19pub
 
Tensor flow勉強会 (ayashiminagaranotensorflow)
Tensor flow勉強会 (ayashiminagaranotensorflow)Tensor flow勉強会 (ayashiminagaranotensorflow)
Tensor flow勉強会 (ayashiminagaranotensorflow)
 
TensorFlowで逆強化学習
TensorFlowで逆強化学習TensorFlowで逆強化学習
TensorFlowで逆強化学習
 
ソフトウェア技術者から見たFPGAの魅力と可能性
ソフトウェア技術者から見たFPGAの魅力と可能性ソフトウェア技術者から見たFPGAの魅力と可能性
ソフトウェア技術者から見たFPGAの魅力と可能性
 
機械学習モデルフォーマットの話:さようならPMML、こんにちはPFA
機械学習モデルフォーマットの話:さようならPMML、こんにちはPFA機械学習モデルフォーマットの話:さようならPMML、こんにちはPFA
機械学習モデルフォーマットの話:さようならPMML、こんにちはPFA
 
高位合成におけるC++テンプレートメタプログラミングの効果
高位合成におけるC++テンプレートメタプログラミングの効果高位合成におけるC++テンプレートメタプログラミングの効果
高位合成におけるC++テンプレートメタプログラミングの効果
 
捗るリコメンドシステムの裏事情(ハッカドール)
捗るリコメンドシステムの裏事情(ハッカドール)捗るリコメンドシステムの裏事情(ハッカドール)
捗るリコメンドシステムの裏事情(ハッカドール)
 
Facebookの人工知能アルゴリズム「memory networks」について調べてみた
Facebookの人工知能アルゴリズム「memory networks」について調べてみたFacebookの人工知能アルゴリズム「memory networks」について調べてみた
Facebookの人工知能アルゴリズム「memory networks」について調べてみた
 

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

【ヒカ☆ラボ】株式会社エアー様~ETLツール活用法について~
【ヒカ☆ラボ】株式会社エアー様~ETLツール活用法について~【ヒカ☆ラボ】株式会社エアー様~ETLツール活用法について~
【ヒカ☆ラボ】株式会社エアー様~ETLツール活用法について~leverages_event
 
Machine learning 15min TensorFlow hub
Machine learning 15min TensorFlow hubMachine learning 15min TensorFlow hub
Machine learning 15min TensorFlow hubJunya Kamura
 
Dockerコミュニティ近況
Dockerコミュニティ近況Dockerコミュニティ近況
Dockerコミュニティ近況Akihiro Suda
 
第4回 SoftLayer勉強会 資料
第4回 SoftLayer勉強会 資料第4回 SoftLayer勉強会 資料
第4回 SoftLayer勉強会 資料Naoki Shibata
 
ユーザ・デザイナーから見たPlone CMSのアピールポイント
ユーザ・デザイナーから見たPlone CMSのアピールポイントユーザ・デザイナーから見たPlone CMSのアピールポイント
ユーザ・デザイナーから見たPlone CMSのアピールポイントMasaki NIWA
 
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~NTT DATA OSS Professional Services
 
[関東Firefox OS 勉強会10th 講演資料] リクルートにおけるFirefox osアプリへの取り組み
[関東Firefox OS 勉強会10th 講演資料] リクルートにおけるFirefox osアプリへの取り組み[関東Firefox OS 勉強会10th 講演資料] リクルートにおけるFirefox osアプリへの取り組み
[関東Firefox OS 勉強会10th 講演資料] リクルートにおけるFirefox osアプリへの取り組みRecruit Technologies
 
DBTS2016 Data as Code - Delphix
DBTS2016 Data as Code - DelphixDBTS2016 Data as Code - Delphix
DBTS2016 Data as Code - DelphixMasaya Ishikawa
 
DevOpsが引き金となるインフラエンジニアの進撃
DevOpsが引き金となるインフラエンジニアの進撃DevOpsが引き金となるインフラエンジニアの進撃
DevOpsが引き金となるインフラエンジニアの進撃Teruo Adachi
 
2018/07/26 Game change by Deep Learning and tips to make a leap
2018/07/26 Game change by Deep Learning and tips to make a leap2018/07/26 Game change by Deep Learning and tips to make a leap
2018/07/26 Game change by Deep Learning and tips to make a leapSony Network Communications Inc.
 
Delphi開発者のためのSencha入門
Delphi開発者のためのSencha入門Delphi開発者のためのSencha入門
Delphi開発者のためのSencha入門Shinobu Kawano
 
RAD Studioで始めるマルチデバイス・クロスプラットフォーム開発ワークショップ
RAD Studioで始めるマルチデバイス・クロスプラットフォーム開発ワークショップRAD Studioで始めるマルチデバイス・クロスプラットフォーム開発ワークショップ
RAD Studioで始めるマルチデバイス・クロスプラットフォーム開発ワークショップKaz Aiso
 
脆弱性の探し方 ~発見と対応のノウハウ in NTTDATA~
脆弱性の探し方 ~発見と対応のノウハウ in NTTDATA~脆弱性の探し方 ~発見と対応のノウハウ in NTTDATA~
脆弱性の探し方 ~発見と対応のノウハウ in NTTDATA~apkiban
 
DevOpsにおけるAnsibleの立ち位置と使い所
DevOpsにおけるAnsibleの立ち位置と使い所DevOpsにおけるAnsibleの立ち位置と使い所
DevOpsにおけるAnsibleの立ち位置と使い所Hidetoshi Hirokawa
 
アプリエンジニアでもできる閉域網構築のススメ!
アプリエンジニアでもできる閉域網構築のススメ!アプリエンジニアでもできる閉域網構築のススメ!
アプリエンジニアでもできる閉域網構築のススメ!Tosihiyuki Hirai
 
2018/3/23 Introduction to Deep Learning by Neural Network Console
2018/3/23 Introduction to Deep Learning by Neural Network Console2018/3/23 Introduction to Deep Learning by Neural Network Console
2018/3/23 Introduction to Deep Learning by Neural Network ConsoleSony Network Communications Inc.
 
[Cloud OnAir] Google Cloud Next '18 最新情報 2018年7月26日 放送
[Cloud OnAir] Google Cloud Next '18 最新情報 2018年7月26日 放送[Cloud OnAir] Google Cloud Next '18 最新情報 2018年7月26日 放送
[Cloud OnAir] Google Cloud Next '18 最新情報 2018年7月26日 放送Google Cloud Platform - Japan
 
TensorFlowによるCNNアーキテクチャ構築
TensorFlowによるCNNアーキテクチャ構築TensorFlowによるCNNアーキテクチャ構築
TensorFlowによるCNNアーキテクチャ構築Hirokatsu Kataoka
 
ソニーでElectronアプリをリリースしてみた
ソニーでElectronアプリをリリースしてみたソニーでElectronアプリをリリースしてみた
ソニーでElectronアプリをリリースしてみたYasuharu Seki
 

Similar to JUIZ DLK: 組込み向け Deep Learning コンパイラ (20)

【ヒカ☆ラボ】株式会社エアー様~ETLツール活用法について~
【ヒカ☆ラボ】株式会社エアー様~ETLツール活用法について~【ヒカ☆ラボ】株式会社エアー様~ETLツール活用法について~
【ヒカ☆ラボ】株式会社エアー様~ETLツール活用法について~
 
Machine learning 15min TensorFlow hub
Machine learning 15min TensorFlow hubMachine learning 15min TensorFlow hub
Machine learning 15min TensorFlow hub
 
Dockerコミュニティ近況
Dockerコミュニティ近況Dockerコミュニティ近況
Dockerコミュニティ近況
 
第4回 SoftLayer勉強会 資料
第4回 SoftLayer勉強会 資料第4回 SoftLayer勉強会 資料
第4回 SoftLayer勉強会 資料
 
ユーザ・デザイナーから見たPlone CMSのアピールポイント
ユーザ・デザイナーから見たPlone CMSのアピールポイントユーザ・デザイナーから見たPlone CMSのアピールポイント
ユーザ・デザイナーから見たPlone CMSのアピールポイント
 
OSS Market Momentum In Japan
OSS Market Momentum In JapanOSS Market Momentum In Japan
OSS Market Momentum In Japan
 
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~
SIerとオープンソースの美味しい関係 ~コミュニティの力を活かして世界を目指そう~
 
[関東Firefox OS 勉強会10th 講演資料] リクルートにおけるFirefox osアプリへの取り組み
[関東Firefox OS 勉強会10th 講演資料] リクルートにおけるFirefox osアプリへの取り組み[関東Firefox OS 勉強会10th 講演資料] リクルートにおけるFirefox osアプリへの取り組み
[関東Firefox OS 勉強会10th 講演資料] リクルートにおけるFirefox osアプリへの取り組み
 
DBTS2016 Data as Code - Delphix
DBTS2016 Data as Code - DelphixDBTS2016 Data as Code - Delphix
DBTS2016 Data as Code - Delphix
 
DevOpsが引き金となるインフラエンジニアの進撃
DevOpsが引き金となるインフラエンジニアの進撃DevOpsが引き金となるインフラエンジニアの進撃
DevOpsが引き金となるインフラエンジニアの進撃
 
2018/07/26 Game change by Deep Learning and tips to make a leap
2018/07/26 Game change by Deep Learning and tips to make a leap2018/07/26 Game change by Deep Learning and tips to make a leap
2018/07/26 Game change by Deep Learning and tips to make a leap
 
Delphi開発者のためのSencha入門
Delphi開発者のためのSencha入門Delphi開発者のためのSencha入門
Delphi開発者のためのSencha入門
 
RAD Studioで始めるマルチデバイス・クロスプラットフォーム開発ワークショップ
RAD Studioで始めるマルチデバイス・クロスプラットフォーム開発ワークショップRAD Studioで始めるマルチデバイス・クロスプラットフォーム開発ワークショップ
RAD Studioで始めるマルチデバイス・クロスプラットフォーム開発ワークショップ
 
脆弱性の探し方 ~発見と対応のノウハウ in NTTDATA~
脆弱性の探し方 ~発見と対応のノウハウ in NTTDATA~脆弱性の探し方 ~発見と対応のノウハウ in NTTDATA~
脆弱性の探し方 ~発見と対応のノウハウ in NTTDATA~
 
DevOpsにおけるAnsibleの立ち位置と使い所
DevOpsにおけるAnsibleの立ち位置と使い所DevOpsにおけるAnsibleの立ち位置と使い所
DevOpsにおけるAnsibleの立ち位置と使い所
 
アプリエンジニアでもできる閉域網構築のススメ!
アプリエンジニアでもできる閉域網構築のススメ!アプリエンジニアでもできる閉域網構築のススメ!
アプリエンジニアでもできる閉域網構築のススメ!
 
2018/3/23 Introduction to Deep Learning by Neural Network Console
2018/3/23 Introduction to Deep Learning by Neural Network Console2018/3/23 Introduction to Deep Learning by Neural Network Console
2018/3/23 Introduction to Deep Learning by Neural Network Console
 
[Cloud OnAir] Google Cloud Next '18 最新情報 2018年7月26日 放送
[Cloud OnAir] Google Cloud Next '18 最新情報 2018年7月26日 放送[Cloud OnAir] Google Cloud Next '18 最新情報 2018年7月26日 放送
[Cloud OnAir] Google Cloud Next '18 最新情報 2018年7月26日 放送
 
TensorFlowによるCNNアーキテクチャ構築
TensorFlowによるCNNアーキテクチャ構築TensorFlowによるCNNアーキテクチャ構築
TensorFlowによるCNNアーキテクチャ構築
 
ソニーでElectronアプリをリリースしてみた
ソニーでElectronアプリをリリースしてみたソニーでElectronアプリをリリースしてみた
ソニーでElectronアプリをリリースしてみた
 

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 info@leapmimd.io imai@leapmind.io http://leapmind.io/ ご質問などございましたら、お気軽にご連絡ください。