今日のローカルTensorFlowEverywhereイベントの出欠確認!

TensorFlow Lite と TensorFlow 演算子の互換性

TensorFlow Lite は、一般的な推論モデルで使用される多数の TensorFlow 演算をサポートしています。演算は TensorFlow Lite Optimizing Converter で処理されるため、サポートされている演算が TensorFlow Lite の相当する演算にマッピングされる前に、省略または融合されることがあります。

TensorFlow Lite のビルトイン演算子ライブラリがサポートする TensorFlow 演算子は制限されているため、すべてのモデルが互換しているわけではありません。サポートされている演算であっても、パフォーマンスの理由により、非常に特定的な使用パターンが期待されることがあります。TensorFlow Lite の将来のリリースでは、演算のサポート範囲を拡大したいと考えています。

TensorFlow Lite で使用できる TensorFlow モデルを構築する方法を理解する最善の方法は、このプロセスで課せられる制限とともに演算子がどのように変換されて最適化されるのかをよく考察することです。

サポートされている型

ほとんどの TensorFlow Lite 演算は、浮動小数点数(float32)と量子化(uint8int8)推論の両方をターゲットしていますが、多くの演算子は、tf.float16 や文字列といったほかの型をまだターゲットしていません。

浮動小数点数モデルと量子化モデルの間には、異なるバージョンの演算を使用するというだけでなく、ほかにも変換方法に違いがあります。量子化変換には、テンソルのダイナミックレンジ情報が必要です。これには、モデルのトレーニング中に「偽量子化」が必要で、較正データセット経由でレンジ情報を取得するか、「その場で」レンジ推測を行う必要があります。量子化をご覧ください。

サポートされている演算と制約

TensorFlow Lite は、いくつかの制約を伴う TensorFlow のサブセットをサポートしています。演算と制限の全リストについては、TF Lite 演算子のページをご覧ください。

明瞭な変換、定数畳み込み、および融合

多くの TensorFlow 演算は、直接相当する演算がない場合でも、TensorFlow Lite によって処理することができます。これは、単純にグラフから除外して(tf.identity)テンソルで置換(tf.placeholder)できる演算か、より複雑な演算に融合(tf.nn.bias_add)できる演算の場合です。一部のサポートされている演算であっても、これらのプロセスの一部で除外されてしまうことがあります。

次は、完全なリストではありませんが、一般的にグラフから除外される TensorFlow 演算です。

注意: こういった演算の多くには TensorFlow Lite 相当の演算がないため、省略または融合されない場合、対応するモデルには互換性が与えられません。

実験的な演算

次の TensorFlow Lite 演算は存在しますが、カスタムモデルにはまだ使用できません。

  • CALL
  • CONCAT_EMBEDDINGS
  • CUSTOM
  • EMBEDDING_LOOKUP_SPARSE
  • HASHTABLE_LOOKUP
  • LSH_PROJECTION
  • SKIP_GRAM
  • SVDF