@Vengineerの戯言 : Twitter SystemVerilogの世界へようこそ、すべては、SystemC v0.9公開から始まった
はじめに
TensorFlow Lite for Micro controller は、TensorFlow の repo から独立して、tflite-micro になりました。 とはいえ、TensorFlow との関係は継続しているようです。
それから、TensorFlow Lite に関して、TACというのを見つけました。
TAC (Target aware convertion for TFLite model)
compiler/mlir/lite/experimental/tac になっているので、まだ、実験的な感じ。commit には、「OSS target aware conversion」とあるので、Googleの中ではいろいろとやっているんですね。
モデル内の各Opのコストモデルを使って、どのHardwareで実行するとより速くなるかをやってくれるようです。
ただし、Op間でHardwareをSwitchしたときのコストはどうなるのだろうか?と思いましたが、各Hardwareモデル内のGetHardwareSwitchingCostというメソッドがあるので、Switching Cost も考慮できそうですね。各Opに対しては、GetOpCostというメソッドがあります
tac_translate と
tac_translate というプログラムで、TensorFlow Liteのモデルを変換できるようです。 また、Pythonでは、tac.py の中の run_tac 関数でモデルの変換ができるようです。
対応しているモデル
です。
独自Hardware に対しては、SimpleHardwareクラスを継承してモデルを作ればできるようです。ここに簡単な説明があります。TagetHardwareクラス(SimpleHardwareクラスの親クラス)を使うことの説明もあります。
おわりに
Google Edge TPU がモデルとして追加される日はいつでしょうかね。