- 個人的防備録として。検証のための動作確認は未実施。実施後追記予定。
- 主にchainerとtensorflowを使っているので、これらのフレームワークで使えるものを調査した
- コンパイルを行わない方法に関しては、主にMKL-DNNライブラリを用いて高速化を行っているようだ
- コンパイルを行う方法に関しては、TensorFlow XLA, Nervana Graph Compiler, TVM/LLVMなどがあるようだ
Intel nGraph
- ONNX形式をサポートしているため、chainerのモデルをインポートできると思われる(未確認)。
- IntelはNervana Graph CompilerおよびMKL DNNライブラリによる高速化を実施している
- 両者の違いはこのページが分かりやすい
- Nervana Graph Compilerでハードウェアに依存しない最適化を実施する
- 後述のTensorFlow XLAと類似の機能と思われる(Intel Nervana Graph とは?)
- MKL DNNでIntel CPUに特化した最適化を行う
- MKL-DNN単体のみでの利用も可能(後述のフレームワークはMKL-DNNライブラリ利用したものが多い)で、Nervana Graph Compilerの単体利用も可能
- MKL DNNの概要は以下
TensorFlow
-
TensorFlow with Intel® MKL DNN
- MKL DNNを利用したTensorFlow
-
TensorFlow XLA
-
TensorFlow コンパイラ 「XLA」を提供
- IntelのNervana Graph Compilerと似た位置づけ(こちらのほうが先?)
- 解説記事を書いてくださっている方が結構いる
-
TensorFlow コンパイラ 「XLA」を提供
- Google TPUに合わせた最適化もできそう
Chainer v4.0.0以降
-
Intel Deep Learning Package (iDeep)に対応し、Intel CPUでの学習および推論の高速化を実現
- gitのreadmeを見る限り、iDeepもまたMKL DNNのようだ
- 参考にさせていただいた記事
NNVM/TVM
- Nervana Graph CompilerやTensorFlow XLAと思想は同じ
- 解説記事を書いてくださっている方が何人かいる
- バックエンドとしてFPGAもサポートしているようだ