TensorFlow モデル変換の概要

LiteRT で使用する機械学習(ML)モデルは、元々 TensorFlow コア ライブラリとツールを使用して構築およびトレーニングされています。TensorFlow コアでモデルを構築したら、LiteRT モデルと呼ばれる、より小さく効率的な ML モデル形式に変換できます。このセクションでは、TensorFlow モデルを LiteRT モデル形式に変換するためのガイダンスについて説明します。

変換ワークフロー

TensorFlow モデルを LiteRT 形式に変換するには、ML モデルのコンテンツに応じていくつかの方法があります。そのプロセスの最初のステップとして、モデルを評価して、直接変換できるかどうかを判断する必要があります。この評価では、モデルのコンテンツが、使用する TensorFlow オペレーションに基づいて標準の LiteRT ランタイム環境でサポートされているかどうかを判断します。モデルがサポートされているセット以外のオペレーションを使用している場合は、モデルをリファクタリングするか、高度な変換手法を使用できます。

次の図は、モデルの変換における大まかな手順を示しています。

TFLite 変換ワークフロー

図 1. LiteRT 変換ワークフロー。

以降のセクションでは、LiteRT で使用するモデルを評価して変換するプロセスについて説明します。

入力モデルの形式

コンバータは、次の入力モデル形式で使用できます。

  • SavedModel推奨): ディスク上のファイルのセットとして保存された TensorFlow モデル。
  • Keras モデル: 高レベルの Keras API を使用して作成されたモデル。
  • Keras H5 形式: Keras API でサポートされている SavedModel 形式の軽量な代替形式。
  • 具象関数から構築されたモデル: 低レベルの TensorFlow API を使用して作成されたモデル。

Keras モデルと具象関数モデルの両方を SavedModel として保存し、推奨パスを使用して変換できます。

Jax モデルがある場合は、TFLiteConverter.experimental_from_jax API を使用して LiteRT 形式に変換できます。この API は試験運用モードでは変更される可能性があることにご注意ください。

コンバージョンの評価

モデルを評価することは、モデルの変換を試みる前の重要なステップです。評価では、モデルの内容が LiteRT 形式と互換性があるかどうかを判断します。また、モデルが使用するデータのサイズ、ハードウェア処理の要件、モデルの全体的なサイズと複雑さの点で、モバイル デバイスやエッジ デバイスでの使用に適しているかどうかを判断する必要があります。

多くのモデルでは、コンバータはすぐに使用できます。ただし、LiteRT 組み込み演算子ライブラリは TensorFlow コア演算子の一部をサポートしています。つまり、一部のモデルでは LiteRT に変換する前に追加の手順が必要になる場合があります。また、LiteRT でサポートされている一部のオペレーションには、パフォーマンス上の理由から使用制限があります。モデルを変換用にリファクタリングする必要があるかどうかを判断するには、演算子の互換性ガイドをご覧ください。

モデル変換

LiteRT コンバータは、TensorFlow モデルから LiteRT モデルを生成します。LiteRT モデルは最適化された FlatBuffer 形式で、.tflite という固有のファイル拡張子を持ちます。SavedModel を読み込むか、コードで作成したモデルを直接変換できます。

コンバータは、モデルの変換をカスタマイズする 3 つのメインフラグ(またはオプション)を受け取ります。

  1. 互換性フラグを使用すると、変換でカスタム オペレーターを許可するかどうかを指定できます。
  2. 最適化フラグを使用すると、変換時に適用する最適化のタイプを指定できます。最も一般的に使用される最適化手法は、トレーニング後の量子化です。
  3. メタデータ フラグを使用すると、変換されたモデルにメタデータを追加できます。これにより、モデルをデバイスにデプロイするときに、プラットフォーム固有のラッパーコードの作成が容易になります。

モデルを変換するには、Python API またはコマンドライン ツールを使用します。モデルでコンバータを実行する手順については、TF モデルを変換するガイドをご覧ください。

通常、モデルは標準の LiteRT ランタイム環境または LiteRT(ベータ版)の Google Play サービス ランタイム環境用に変換します。高度なユースケースでは、モデルのランタイム環境のカスタマイズが必要になることがあります。この場合、変換プロセスで追加の手順が必要になります。詳細については、Android の概要の高度なランタイム環境セクションをご覧ください。

高度なコンバージョン

モデルでコンバータを実行中にエラーが発生した場合は、オペレーターの互換性に問題がある可能性が最も高くなります。TensorFlow Lite では、すべての TensorFlow オペレーションがサポートされているわけではありません。これらの問題を回避するには、モデルをリファクタリングするか、変更された LiteRT 形式のモデルと、そのモデルのカスタム ランタイム環境を作成できる高度な変換オプションを使用します。

  • TensorFlow モデルと LiteRT モデルの互換性に関する考慮事項については、モデルの互換性の概要をご覧ください。
  • モデルの互換性の概要のトピックでは、演算子の選択ガイドなど、モデルをリファクタリングするための高度な手法について説明します。
  • オペレーションと制限事項の一覧については、LiteRT Ops ページをご覧ください。

次のステップ