TensorFlow Lite コンバータ

TensorFlow Lite コンバータは、TensorFlow モデルから TensorFlow Lite FlatBuffer ファイル(.tflite)を生成します。このコンバータは、SavedModel ディレクトリtf.keras モデル具象関数をサポートしています。

TF 2.2 の新機能

デフォルトで、新しいコンバータ バックエンドを使用するように切り替わります(ナイトリー ビルドと TF 2.2 安定版)。切り替えの理由は以下のとおりです。

  • Mask R-CNN、Mobile BERT など、新しいクラスのモデルの変換が可能になります
  • 機能制御フロー(TensorFlow 2.x ではデフォルトで有効)がサポートされます
  • 元の TensorFlow ノード名と Python コードがトラッキングされ、エラーが発生した場合は変換中にそれらが表示されます
  • MLIR(Google の最先端 ML 用コンパイラ テクノロジー)の活用により、機能リクエストに対応するための拡張が容易になります
  • 次元が不明な入力テンソルを含むモデルが一部サポートされます
  • 既存のコンバータの機能はすべてサポートされます

問題が発生した場合の対応方法:

  • GitHub Issue をコンポーネント ラベル「TFLiteConverter」で作成してください。これには以下を含めてください。
    • Python API をご使用の場合、コンバータまたはコードの実行コマンド
    • コンバータを呼び出した際の出力
    • コンバータへの入力モデル
    • 変換はされるものの生成されたモデルに問題がある場合は、その問題の説明
      • 結果が誤っている、精度が下がる
      • 結果は正しいが、想定(従来のコンバータで生成したモデル)よりも遅い
  • allow_custom_ops 機能を使用している場合は、Python APIコマンドライン ツールのドキュメントをご覧ください
  • --experimental_new_converter=false(tflite_convert コマンドライン ツールから)または converter.experimental_new_converter=False(Python API から)と設定して、従来のコンバータに切り替えます

デバイスへのデプロイ

TensorFlow Lite FlatBuffer ファイルはクライアント デバイス(モバイル、組み込みなど)にデプロイされ、TensorFlow Lite インタープリタを使用してローカルで実行されます。この際の変換プロセスは、下図のとおりです。

TFLite コンバータのワークフロー

モデルの変換

TensorFlow Lite コンバータは、Python API から使用する必要があります。Python API を使用すると、モデル開発パイプラインの一部としてモデルを変換しやすくなり、互換性の問題を初期段階で軽減できます。また、コマンドライン ツールでは基本的なモデルをサポートしています。