TensorFlow Liteは、TensorFlowフレームワークのライトバージョンであり、計算リソースが制限されたモバイルおよびエンベデッドデバイスでマシンラーニングモデルを実行するためにGoogleが開発したものです。完全なTensorFlowとは異なり、TFLiteは専用インタプリタと.tfliteフォーマットを使用し、トレーニングサポートなしで高速インファレンスに最適化されています。TensorFlow Lite Guide, 2025によると、このフレームワークはAndroid、iOS、Linuxで動作し、40億以上のデバイスで使用されています。TensorFlow Liteは量子化、NNAPI、GPU、Core MLデリゲートを通じたハードウェア加速をサポートしています。
ポイント
TensorFlow Liteは、リソースが制限されたデバイスでマシンラーニングモデルを実行するための専用ランタイムです。完全なTensorFlowとは異なり、TFLiteはトレーニングや逆伝播をサポートせず、インファレンスのみを行います。これにより、ライブラリのバイナリサイズを最小限に保つことができます(200 KB、Androidのベースインタプリタ)。
TFLiteのアーキテクチャは.tfliteフォーマットを中心に構築されており、FlatBuffersを基にしています。FlatBuffersは解析ステージなしでデータへの直接アクセスを提供し、メモリが制限されたモバイルデバイスにとって重要です。.tflite形式のモデルには、計算グラフ、ウェイト、メタデータが1つのバイナリファイルに含まれています。
Google I/O 2024によると、TFLiteはGoogle Photos、Gboard、YouTube、その他のGoogleアプリで使用され、合計40億以上のデバイスで利用されています。このフレームワークは、CNN、RNN、LSTM、Transformer、およびデリゲートを通じたカスタムオペレーションといった主要なアーキテクチャをすべてサポートしています。
TFLiteランタイムは4つのコンポーネントから構成されています。TFLite ConverterはTensorFlow(SavedModel、Keras、ConcreteFunction)からモデルを取り、オプションの最適化を付けて.tflite形式に変換します。TFLite Interpreterは.tfliteファイルをロードし、テンソルとメモリを管理しながらインファレンスを実行します。
デリゲートは、オペレーションの実行を専用ハードウェアに移すコンポーネントです。GPU DelegateはOpenGL ESとMetalを使用し、NNAPI DelegateはAndroid Neural Networks APIを使用し、Core ML DelegateはApple Core MLを使用します。XNNPACK DelegateはARM CPU上の実行を最適化します。各デリゲートは特定のオペレーターセットをサポートしています。
4つ目のコンポーネントはTask Libraryで、画像分類、オブジェクト検出、セグメンテーション、NLUといった典型的なタスクのためのハイレベルAPIを提供します。Task LibraryはInterpreterの上で動作し、テンソル管理の詳細を隠します。
TFLiteは3つの量子化レベルをサポートしています。完全整数INT8量子化は、ウェイトとアクティベーションをFP32から8ビット整数に変換します。モデルサイズが4倍減少し、INT8サポートデバイスでのインファレンス速度く3倍まで向上します。FP16量子化は最小限の精度ロスでサイズを半分にします。
動的量子化はウェイトをINT8に保持しますが、計算はFP32で実行します。このモードは精度に敏感なモデルに適しており、品質を維持しながら4倍までサイズを削減できます。Google ML Performance Benchmarksによると、動的量子化はNLPモデルに推奨されています。
| モード | ウェイト種類 | アクティベーション種類 | サイズ削減 |
|---|---|---|---|
| FP32(量子化なし) | FP32 | FP32 | 1x |
| FP16 | FP16 | FP32 | 2x |
| 動的INT8 | INT8 | FP32 | 4x |
| 完全INT8 | INT8 | INT8 | 4x |
Androidでの主な加速メカニズムはNNAPI Delegateで、Android Neural Networks APIを通じてオペレーションの実行をNPU、DSP、またはGPUに移します。NNAPIはAndroid 8.1+のデバイスで利用可能で、INT8およびFP16計算をサポートしています。Android用GPU DelegateはOpenGL ES 3.1+およびVulkanを使用します。
iOSでの加速はCore ML Delegateを通じて提供され、TFLiteオペレーションをCore MLフォーマットに変換し、Apple Neural Engineで実行します。Apple ML Benchmarkingによると、Core ML Delegateを使用すると、iPhone 15 ProでのインファレンスがCPU比く4倍まで加速されます。iOS用GPU DelegateはMetal Performance Shadersを使用します。
XNNPACK DelegateはARM CPU向けのクロスプラットフォームソリューションで、モバイルプロセッサーに最適化されています。XNNPACKはFP32、FP16、INT8オペレーションをサポートし、専用ハードウェアを必要としません。すべてのデバイスのベースラインデリゲートとして推奨されています。
デプロイプロセスは3つのステップで構成されています。まずTFLite Converterを通じてモデルを.tfliteに変換します。次に.tfliteファイルをアプリケーションリソースに含めます。Androidの場合はassetsにファイルを配置し、iOSの場合はXcodeを通じてアプリバンドルに含めます。最後にInterpreterを初期化してインファレンスを実行します。
動的なモデル更新には、GoogleはFirebase ML Model Downloadingまたはクラウドからのカスタムダウンロード機構を推奨しています。更新された.tfliteファイルはローカルストレージに保存され、次回起動時にInterpreterにロードされます。
デプロイ時には.tfliteファイルのサイズを考慮することが重要です。Google PlayはAPKサイズを200 MBに制限しています。50 MBを超えるモデルの場合は、Android App Bundleを使用するか、Play Asset Deliveryを通じてモデルを別途ダウンロードすることを推奨します。
AndroidのJava APIでモデルをロードして実行する例。assetsから.tfliteをロードするにはInterpreter.create()を、インファレンスにはrun()を使用します。入力と出力データは多次元配列またはByteBufferとして渡されます。
import org.tensorflow.lite.Interpreter;
import java.nio.MappedByteBuffer;
import java.io.FileInputStream;
import java.nio.channels.FileChannel;
MappedByteBuffer model = new FileInputStream(
getAssets().openFd("model.tflite")
).getChannel().map(
FileChannel.MapMode.READ_ONLY, 0, fc.size()
);
Interpreter interpreter = new Interpreter.create(model);
float[][] input = new float[1][224 * 224 * 3];
float[][] output = new float[1][1000];
interpreter.run(input, output);
interpreter.close();
ハードウェア加速のためのAndroidでのGPU Delegateの使用例。依存関係com.android.support:tensorflow-lite-gpuを追加し、Interpreter作成時にデリゲートを指定します。
import org.tensorflow.lite.Interpreter;
import org.tensorflow.lite.gpu.GpuDelegate;
GpuDelegate gpuDelegate = new GpuDelegate.create();
Interpreter.Options options = new Interpreter.Options().addDelegate(gpuDelegate);
Interpreter interpreter = new Interpreter.create(model, options);
// Run inference on the input data
interpreter.run(input, output);
// Release delegate resources after inference
gpuDelegate.close();
interpreter.close();
よくある質問
TensorFlowはトレーニングとインファレンスのための完全なフレームワークです。TensorFlow Liteはモバイルデバイス上でのインファレンスのみのためです。TFLiteは.tfliteフォーマットを使用し、逆伝播をサポートしていません。
サポートされているデリゲートには、GPU Delegate(OpenGL/Metal)、NNAPI Delegate(Android)、Core ML Delegate(iOS)、XNNPACK Delegate(ARM CPU)があります。各デリゲートは特定のハードウェアに最適化されています。
量子化を使用します。FP16はサイズを2倍、INT8は4倍に削減します。また、動的量子化、ウェイトプラーニング、変換前のモデル蒸留も利用可能です。
はい、TFLite Model MakerおよびオンデバイストレーニングAPI(実験的)を通じてサポートしています。ユーザーのデバイス上で直接ファインチューニングやモデルのパーソナライズが可能です。
TFLiteはCNN、RNN、LSTM、Transformer、モバイルアーキテクチャ(MobileNet、EfficientNet、YOLO、BERT)、およびカスタムオペレーションをサポートしています。制限は、ターゲットデリゲートで利用可能なオペレーターによります。
まとめ
ターンキー方式のモバイルアプリケーションを開発します
IT Sectrは2017年からスタートアップや企業向けにiOS・Androidアプリケーションを開発しています。私たちがご相談に乗り、最適なソリューションをご提案します。