DNNコンパイラ
学習済みモデルを最適化し、様々なハードウェア向けにコード生成をする
ONNXなどを入力にとり
推論用の最適化コードを出力
機械学習モデル→機械学習演算に特化したハードウェアの最適な実行コード、に変換
何が嬉しいか
2段階の最適化
①計算グラフレベルでの最適化
②primitiveな演算セットレベルでの最適化
↑ターゲットとなるハードウェアの特性を活かしたもの
新しく出てくるハードに対応しやすい
モデルサイズは小さくなるの?mrsekut.icon
https://image.slidesharecdn.com/tvmintro-181108053329/95/tvm-3-638.jpg
例 ref
nGraph
TensorFlow XLA
TVM
PlaidML
DLVM
Tensor Comprehensions
TIRAMISU
Glow
ONNC
chainer-compiler
例
TensorFlow XLA
① High Level Optimizer(HLO)
② Low Level Optimizer(LLO)
TVM
① NNVM(Relay)
② TVM
chainer-compiler
①
②
Glow
① GraphOptimizer
② IROptimizer
Glowコンパイラの内部構造とONNX形式のモデル実行 - Qiita
参考
DNNコンパイラの歩みと最近の動向 〜TVMを中心に〜
Glowコンパイラの内部構造とONNX形式のモデル実行 - Qiita
http://xsig.hpcc.jp/2019/wp-content/uploads/sites/6/2019/06/imai_20190529_xSiG_public_s.pdf
https://www.c4ml.org/