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 有効化の例:

kotlin
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 のレビューと実機出力比較が前提)。

#参考文献