モデル変換の概要

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 ページを参照してください。

次のステップ

  • モデルの変換をすぐに開始するには、TF モデルの変換ガイドを参照してください。
  • トレーニング後の量子化などの手法を使用して変換されたモデルを最適化する方法については、最適化の概要を参照してください。
  • モデルにメタデータを追加する方法については、メタデータの追加の概要を参照してください。メタデータは、モデルの説明や、コード ジェネレーターで利用できる情報を他の用途に提供します。