@Vengineerの戯言 : Twitter
SystemVerilogの世界へようこそ、すべては、SystemC v0.9公開から始まった
このブログでも2回紹介して TensorFlow Runtime
その、TensorFlow Runtime のソースコードが公開された模様。
We are excited to announce the open sourcing of TFRT, a new TensorFlow runtime that is going to improve the performance, extensibility, and modularity of TensorFlow.
— TensorFlow (@TensorFlow) 2020年4月29日
Read all about it → https://t.co/pLZhxLdipf pic.twitter.com/BJkxOkOYMu
TensorFlowの本体ではなく、別に公開。
現在のTensorFlowのRuntimeは、下記の Host Runtime のドキュメントによると、2014-2015の頃なので、
- 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組み込みで画像を引用してます)
この図にあるように、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対応するということになりそうですね。
明日と明後日でソースコードを探っていきたいと思います。