Android 向けカスタム ML を CPU または GPU で動かすアプリは、LiteRT ランタイムを APK に載せる代わりに Google Play services 上の LiteRT に寄せられる。Play services 側のランタイムは 1 日あたり 1 兆回超の推論を処理し、GPU スタックは ML Drift と CompiledModel API で刷新される。
配布モデルと効果
- APK から ML ランタイム(GPU アクセラレータ含む)を外し、Play services が 1 本のランタイムを端末間で共有する
- 同梱 LiteRT から切り替えたアプリは社内テストで APK が約 8 MB 小さくなる
- GPU 推論は従来の TensorFlow Lite GPU delegate 比おおよそ 1.4 倍(ML Drift)
- 10 万超のアプリが独自に LiteRT または TensorFlow Lite を同梱しており、切り替えが進むほどストレージ・メモリの節約が累積しやすい
- 性能改善・バグ修正・セキュリティパッチは Play services の段階的ロールアウトで届き、アプリ更新なしでランタイムだけ更新される
対象プラットフォーム
- 電話: Android 7(API 24)以降
- Wear OS 4 以降
- Android Automotive OS(Android 11 以降)
ML Kit の Vision / Text(Subject Segmentation、Document Scanner など)は、すでに Play services 上の LiteRT で大規模運用されている。
CompiledModel API
TensorFlow Lite 系の .tflite はそのまま使い、Interpreter API の後継として CompiledModel API が CPU / GPU を 1 つのワークフローにまとめる。
- OpenCL が使える端末では OpenCL、なければ OpenGL。GPU と CPU を両方指定したリクエストは GPU が使えない端末で CPU にフォールバック
- レガシー Interpreter API は CPU 上で引き続き利用可能(段階的移行向け)
- レガシー GPU delegate と custom delegate API は CompiledModel の GPU と Compiler Plugin / Dispatch API へ非推奨。NNAPI は 2027 年から削除予定。古い SDK は重大なセキュリティ修正のみ
NPU 対応は Play services 上で開発中。
依存関係と初期化
同梱から Play services へ移すときの Gradle 側の切り替え:
- 追加:
com.google.android.gms:play-services-litert:17.0.0(以降の版も可) - 削除: アプリに同梱している
litert依存(litert-gpuなど同梱ランタイム一式)
環境取得と GPU 有効化の例:
val liteRtEnvironment =
LiteRt.initialize(
context,
LiteRtDsl.initializationOptions { setEnableGpu(true) }
).await()CompiledModel 生成時に上記 environment を渡す。Play services 上のレガシー Interpreter 利用者は CPU 動作を維持したまま play-services-litert へ寄せられ、GPU 利用には CompiledModel API への移行が必要。
Google AI Edge Gallery の Scrapbook(画像セグメンテーション)は Play services 上の LiteRT で動作する実装例。Android Studio の Agent Mode 向け LiteRT スキルは GitHub から入手可能(生成 diff のレビューと実機出力比較が前提)。