Vengineerの戯言

人生は短いけど、長いです。人生を楽しみましょう!

TensorFlow XLAの衝撃


TensorFlow 1.0がリリースされましたね。

その中で、TensorFlow XLAなるものも正式発表されました。

TensorFlow Dev Summit 2017のKeynoteビデオの14分34秒から15分30秒で紹介されました。


XLAは、RC 1.0の時点で公開されていました。



Hacker Newsでも取り上げています。

なんと、スライド
TensorFlow w/XLA: TensorFlow, Compiled! Expressiveness with performance
も公開されていました。

Twitter検索したら、一番早いものは2016月11月10日のツイートでした。

TensorFlowはあくまでも学習側のためと思っていたので、
全くフォローできていませんでした。

TensorFlow 1.0では、XLA単体だけでなく、tfcompile というツールもリリーリされています。

 ・学習側で作り込んだグラフとそれに伴うパラメータを
 ・XLAを使って、実際には、tfcompileを使って、
 ・TensorFlow表記をCPUの実行コードに変換できる
ようになったわけですよ。

これ、あたしにとっては、めっちゃ、衝撃でしたよ。

通常は、TensorFlow Runtime上で動いています。
TensorFlow Runtimeのオーバーヘッド(実行時間およびメモリ容量)がありますが、
XLAによって、CPUの実行プログラムに変換するのでTensorFlow Runtimeを使わないんですよ。
つまり、TensorFlow Runtimeのオーバーヘッドが無くなるということなんですよ。
これにより、
スマホや組み込みシステム内のCPUコアでもTensorFlowのコードが動いちゃうんですよね。

pipでTensorFlowでインストールしても tfcompile はインストールできないので、
下記のようにソースコードからビルドします。
  ソースコードgithub から clone します。
  % git clone https://github.com/tensorflow/tensorflow.git

  configure で準備をします。このとき、XLAを有効にします。
  % ./configure
  ...
  Do you wish to build TensorFlow with the XLA just-in-time compiler (experimental)? [y/N]
  で、y を入力する必要があります。 

  bazel で tfcompile をビルドします。
  % bazel build //tensorflow/compiler/aot:tfcompile

中原先生のツールフローを使えば、
TensorFlowなどからFPGA(Xilinx/Intel)にマッピングできますが、
CPUへのマッピングがこのTensorFlow XLAを使えばできるんですよ。

XLA Overviewの最初にも書いてありますが、

Hardware Accelerators

にも適用していけるんですよね。例えば、Google TPU (Tensor Processing Unit)とかに。

ということは、FPGAへのマッピングもできちゃいますよね。

ということで、

TensorFLow XLA の勉強会

をやりたいと思います。

3月は無理かもしれないけど、4月ぐらいまでには。。。