LiteRT と TensorFlow の演算子の互換性

モデルで使用する機械学習(ML)演算子は、 変換するプロセスを TensorFlow モデルを LiteRT 形式に変換します。LiteRT コンバータ 使用される一部の TensorFlow 演算のみをサポートする つまり、すべてのモデルが直接変換可能というわけではありません。 変換ツールを使用すると、追加の演算子を含めることができますが、 そのようなモデルでは、LiteRT ランタイムの変更も必要 環境が複雑になり、結果、能力が制限される Google Cloud などの標準のランタイム デプロイ オプションを Google Play 開発者サービス

LiteRT コンバータはモデルを分析するための設計 適切に構成して最適化を適用し、 直接サポートされている演算子です。たとえば、ML オペレーターに応じて、 コンバータは それらを回避または融合する それらの演算子を LiteRT にマッピングします。

サポートされているオペレーションであっても、特定の使用パターンが予想されます。 おすすめします。TensorFlow の構築方法を理解する最善の方法 利用可能なモデルを使用して、 LiteRT では、オペレーションがどのように変換され、 加えて、このプロセスによる制限が課せられます。

サポートされている演算子

LiteRT 組み込み演算子は、演算子のサブセット TensorFlow コアライブラリに含まれています。TensorFlow モデルは、 複合演算子の形式でカスタム演算子を含めることもできます 新しい演算子を定義します次の図に 比較できます。

TensorFlow 演算子

この範囲の ML モデル オペレータの中から、 次のモデルをサポートします。

  1. LiteRT オペレーターが組み込まれていないモデル。(推奨
  2. 組み込み演算子を使用したモデルと TensorFlow の選択 あります。
  3. 組み込み演算子、TensorFlow コア演算子、および/または カスタム演算子を使用します

Google Cloud でネイティブにサポートされている演算のみがモデルに含まれる場合、 LiteRT の場合は、変換するために追加のフラグは必要ありません。この この方法が推奨されます。このタイプのモデルはスムーズに変換されるため、 デフォルトの LiteRT ランタイムを使用して、最適化と実行が簡単になります。 モデルのデプロイ オプションとしては、 Google Play 開発者サービス。 まずは LiteRT コンバータ ガイド詳しくは、 LiteRT オペレーション ページをご覧ください。 組み込み演算子のリストです。

コアライブラリから一部の TensorFlow 演算を含める必要がある場合は、 変換時にその値を指定し、ランタイムにそれらが含まれるようにする必要があります。 必要があります。TensorFlow 演算子を選択するのトピックをご覧ください。 説明します。

できるだけ、最後にカスタム演算子を 変換されたモデルです。カスタム演算子 または一意の識別子を TensorFlow コア演算子の複数のプリミティブ演算子を使うことも、まったく新しい演算子を定義することもできます。 カスタム演算子を変換すると、演算子全体のサイズが大きくなることがあります。 を使用して、組み込みの LiteRT ライブラリの外で依存関係を発生させます。 カスタム オペレーション(モバイルまたはデバイスの導入用に特別に作成されていない場合) パフォーマンスの低下を招くことがあります。 リソースの制約があるデバイスの場合と サーバー環境を比較します 最後に、一部の TensorFlow コア演算子、カスタム演算子、 必要があります。 モデルのランタイム環境の変更 そのため、次のような標準ランタイム サービスは利用できません。 Google Play 開発者サービス

サポートされているタイプ

ほとんどの LiteRT オペレーションは、浮動小数点数(float32)と 量子化(uint8int8)推論だが、多くの演算は他のタイプの推論にまだ対応していない tf.float16や strings などの

異なるオペレーション バージョンを使用する以外に、 浮動小数点モデルと量子化モデルの違いは、それらの変換方法です。 量子化変換には、テンソルのダイナミック レンジ情報が必要です。この 「疑似量子化」が必要モデル トレーニングで、範囲情報を取得し、 調整用データセットを使用するか 「オンザフライ」で範囲推定を行います。詳しくは、 量子化をご覧ください。

単純な変換、一定の折りたたみと融合

多数の TensorFlow 演算を LiteRT で処理することも、 直接的に同等のものはありませんオペレーションが 単にグラフから削除(tf.identity)し、テンソルで置き換える (tf.placeholder)、より複雑なオペレーションに融合(tf.nn.bias_add)することもできます。 サポートされている一部のオペレーションであっても、これらのオペレーションを通じて削除されることがあります プロセスです。

通常削除される TensorFlow 演算のリスト(すべてが網羅されたものではない) おわかりいただけると思います

  • tf.add
  • tf.debugging.check_numerics
  • tf.constant
  • tf.div
  • tf.divide
  • tf.fake_quant_with_min_max_args
  • tf.fake_quant_with_min_max_vars
  • tf.identity
  • tf.maximum
  • tf.minimum
  • tf.multiply
  • tf.no_op
  • tf.placeholder
  • tf.placeholder_with_default
  • tf.realdiv
  • tf.reduce_max
  • tf.reduce_min
  • tf.reduce_sum
  • tf.rsqrt
  • tf.shape
  • tf.sqrt
  • tf.square
  • tf.subtract
  • tf.tile
  • tf.nn.batch_norm_with_global_normalization
  • tf.nn.bias_add
  • tf.nn.fused_batch_norm
  • tf.nn.relu
  • tf.nn.relu6
で確認できます。

試験運用オペレーション

次の LiteRT オペレーションがありますが、カスタムの準備が整っていません モデル:

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