モデル変換の概要

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

変換ワークフロー

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

以下の図は、モデルを変換する際の高レベルの手順を示しています。

TFLite 変換ワークフロー

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

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

入力モデル形式

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

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またはコマンド ラインツールを使用してモデルを変換できます。モデルでコンバーターを実行する手順については、「 Convert TF モデルガイド」を参照してください。

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

高度な変換

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

  • TensorFlow および TensorFlow Lite モデルの互換性に関する考慮事項の詳細については、 「モデルの互換性の概要」を参照してください。
  • 「モデルの互換性の概要」のトピックでは、 「演算子の選択」ガイドなど、モデルをリファクタリングするための高度なテクニックについて説明します。
  • 操作と制限の完全なリストについては、TensorFlow Lite Ops ページを参照してください。

次のステップ