モデル変換の概要

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

変換ワークフロー

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

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

TFLite変換ワークフロー

1.TensorFlowLite変換ワークフロー。

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

入力モデル形式

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

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

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

変換評価

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

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

モデル変換

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

PythonAPIまたはコマンドラインツールを使用してモデルを変換できます。モデルでコンバーターを実行する手順については、 TensorFlowLiteコンバーターガイドを参照してください。

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

高度な変換

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

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

次のステップ

  • トレーニング後の定量化などの手法を使用して変換されたモデルを最適化する方法のガイダンスについては、最適化の概要を参照してください。
  • APIを使用して、デリゲートの互換性などの問題についてモデルを分析するには、モデルアナライザガイドを参照してください。
  • モデルにメタデータを追加する方法については、メタデータの追加の概要をご覧ください。メタデータは、モデルの説明やコードジェネレーターが利用できる情報を他の用途に提供します。