モデルで使用する機械学習(ML)演算子は、 変換するプロセスを TensorFlow モデルを LiteRT 形式に変換します。LiteRT コンバータ 使用される一部の TensorFlow 演算のみをサポートする つまり、すべてのモデルが直接変換可能というわけではありません。 変換ツールを使用すると、追加の演算子を含めることができますが、 そのようなモデルでは、LiteRT ランタイムの変更も必要 環境が複雑になり、結果、能力が制限される Google Cloud などの標準のランタイム デプロイ オプションを Google Play 開発者サービス。
LiteRT コンバータはモデルを分析するための設計 適切に構成して最適化を適用し、 直接サポートされている演算子です。たとえば、ML オペレーターに応じて、 コンバータは それらを回避または融合する それらの演算子を LiteRT にマッピングします。
サポートされているオペレーションであっても、特定の使用パターンが予想されます。 おすすめします。TensorFlow の構築方法を理解する最善の方法 利用可能なモデルを使用して、 LiteRT では、オペレーションがどのように変換され、 加えて、このプロセスによる制限が課せられます。
サポートされている演算子
LiteRT 組み込み演算子は、演算子のサブセット TensorFlow コアライブラリに含まれています。TensorFlow モデルは、 複合演算子の形式でカスタム演算子を含めることもできます 新しい演算子を定義します次の図に 比較できます。
この範囲の ML モデル オペレータの中から、 次のモデルをサポートします。
- LiteRT オペレーターが組み込まれていないモデル。(推奨)
- 組み込み演算子を使用したモデルと TensorFlow の選択 あります。
- 組み込み演算子、TensorFlow コア演算子、および/または カスタム演算子を使用します
Google Cloud でネイティブにサポートされている演算のみがモデルに含まれる場合、 LiteRT の場合は、変換するために追加のフラグは必要ありません。この この方法が推奨されます。このタイプのモデルはスムーズに変換されるため、 デフォルトの LiteRT ランタイムを使用して、最適化と実行が簡単になります。 モデルのデプロイ オプションとしては、 Google Play 開発者サービス。 まずは LiteRT コンバータ ガイド詳しくは、 LiteRT オペレーション ページをご覧ください。 組み込み演算子のリストです。
コアライブラリから一部の TensorFlow 演算を含める必要がある場合は、 変換時にその値を指定し、ランタイムにそれらが含まれるようにする必要があります。 必要があります。TensorFlow 演算子を選択するのトピックをご覧ください。 説明します。
できるだけ、最後にカスタム演算子を 変換されたモデルです。カスタム演算子 または一意の識別子を TensorFlow コア演算子の複数のプリミティブ演算子を使うことも、まったく新しい演算子を定義することもできます。 カスタム演算子を変換すると、演算子全体のサイズが大きくなることがあります。 を使用して、組み込みの LiteRT ライブラリの外で依存関係を発生させます。 カスタム オペレーション(モバイルまたはデバイスの導入用に特別に作成されていない場合) パフォーマンスの低下を招くことがあります。 リソースの制約があるデバイスの場合と サーバー環境を比較します 最後に、一部の TensorFlow コア演算子、カスタム演算子、 必要があります。 モデルのランタイム環境の変更 そのため、次のような標準ランタイム サービスは利用できません。 Google Play 開発者サービス。
サポートされているタイプ
ほとんどの LiteRT オペレーションは、浮動小数点数(float32
)と
量子化(uint8
、int8
)推論だが、多くの演算は他のタイプの推論にまだ対応していない
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