モデル変換の概要

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

コンバージョンのワークフロー

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

下の図は、モデルの変換手順の概要を示しています。

TFLite 変換ワークフロー

図 1. TensorFlow Lite の変換ワークフロー。

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

入力モデルの形式

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

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

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

Jax モデルがある場合は、TFLiteConverter.experimental_from_jax API を使用して TensorFlow Lite 形式に変換できます。試験運用版モードでは、この API は変更される場合があります。

コンバージョンの評価

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

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

モデル変換

TensorFlow Lite コンバータは、TensorFlow モデルを受け取り、TensorFlow Lite モデル(.tflite ファイル拡張子で識別される最適化された FlatBuffer 形式)を生成します。SavedModel を読み込むか、コードで作成したモデルを直接変換できます。

コンバータは、モデルの変換をカスタマイズする 3 つの主要なフラグ(またはオプション)を使用します。

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

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

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

高度なコンバージョン

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

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

次のステップ