Vengineerの妄想

人生を妄想しています。

TensorFlow Runtime のソースコードが公開された。

@Vengineerの戯言 : Twitter
SystemVerilogの世界へようこそすべては、SystemC v0.9公開から始まった 

このブログでも2回紹介して TensorFlow Runtime

vengineer.hatenablog.com

vengineer.hatenablog.com

その、TensorFlow Runtime のソースコードが公開された模様。

 TensorFlowの本体ではなく、別に公開。

github.com

現在のTensorFlowのRuntimeは、下記の Host Runtime のドキュメントによると、2014-2015の頃なので、

github.com

  • Efficient eager op execution
  • Unified CPU threading model for graph level and kernel level parallelism
  • Asynchrony as a first-class citizen in runtime
  • Compiler friendly cross-kernel optimization
  • Modular and “pluggable” support for new accelerator devices
  • Unified infrastructure across mobile and server. E.g. train on server and serve on mobile with minimal model conversion, and use the same kernels between mobile and server stacks when possible.

に関して、考慮していなかった。それを MLIR ベースに作り直しているのが、今回ソースコードが公開された TensorFlow Runtime (TFRT) 。


TensorFlowは、Graph Execution を実行させるためのものだったが、世の中の流れで、v2 で Eager mode がデフォルトになり、Eager modeでの Op 毎の実行が効率的でなかった。TFRTでは、この Op 毎の実行を効率的にするもの。

 

下図は、TFRT の説明の図 (URL組み込みで画像を引用してます)

https://1.bp.blogspot.com/-0m9v6oLvo70/XqhqxI8rAfI/AAAAAAAADDE/tvUuamxh7L4A2DTaG4LD99Eka3tEQBzxACLcBGAsYHQ/s1600/tfrtroleingraph.png

この図にあるように、TensorFlow APIから各Opを直接実行するだけでなく、TensorFlowのGraphを BEF に変換して実行するパスもある。

直接実行するパスが Eager Mode (v2.x)で、BEFに変換するのが Graph Mode (v1.x)である。

 

現在公開されているのは、CPU版のみで。対応するOpも限定的である。今後は対応するOpを増やすのと、GPU、TPU、Mobile対応もしていくのでしょう。

TensorFlowでは、Mobile対応は、TensorFlow Lite でしたが、TFRTでは同じものをMobile対応するということになりそうですね。

 

明日と明後日でソースコードを探っていきたいと思います。