Android 用 LiteRT

LiteRT を使用すると、Android アプリで TensorFlow、PyTorch、JAX モデルを実行できます。LiteRT システムは、ハードウェア アクセラレーションのオプションなど、Android でモデルを迅速かつ効率的に実行するためのビルド済みでカスタマイズ可能な実行環境を提供します。

LiteRT を使用する Android アプリケーションの例については、LiteRT サンプル リポジトリをご覧ください。

機械学習モデル

LiteRT は、より小さく、移植可能で、効率的な ML モデル形式に変換された TensorFlow、PyTorch、JAX モデルを使用します。Android で LiteRT を使用して事前構築済みモデルを使用することも、独自のモデルを構築して LiteRT 形式に変換することもできます。

このページでは、すでに構築されている ML モデルの使用について説明します。モデルの構築、トレーニング、テスト、変換については説明しません。LiteRT 用の ML モデルの選択、変更、構築、変換について詳しくは、モデルのページをご覧ください。

Android でモデルを実行する

Android アプリ内で実行される LiteRT モデルは、データを取り込み、データを処理し、モデルのロジックに基づいて予測を生成します。LiteRT モデルを実行するには、特別なランタイム環境が必要です。また、モデルに渡されるデータは、テンソルと呼ばれる特定のデータ形式である必要があります。モデルがデータを処理する(推論を実行する)と、予測結果が新しいテンソルとして生成され、Android アプリに渡されます。これにより、アプリは結果をユーザーに表示したり、追加のビジネス ロジックを実行したりするなどのアクションを実行できます。

Android アプリの LiteRT モデルの機能実行フロー

図 1. Android アプリの LiteRT モデルの機能実行フロー。

機能設計レベルでは、Android アプリで LiteRT モデルを実行するために次の要素が必要です。

  • モデルを実行するための LiteRT ランタイム環境
  • データをテンソルに変換するモデル入力ハンドラ
  • 出力結果テンソルを受け取り、予測結果として解釈するモデル出力ハンドラ

以降のセクションでは、LiteRT ライブラリとツールがこれらの機能要素をどのように提供するかについて説明します。

LiteRT でアプリを構築する

このセクションでは、Android アプリで LiteRT を実装する際の推奨される一般的なパスについて説明します。ランタイム環境開発ライブラリのセクションに特に注意してください。カスタムモデルを開発した場合は、高度な開発パスのセクションを必ずご確認ください。

ランタイム環境オプション

Android アプリでモデルを実行するためのランタイム環境を有効にする方法はいくつかありますが、次の方法が推奨されます。

一般に、Google Play 開発者サービスが提供するランタイム環境は、動的に読み込まれるため、標準環境よりもスペース効率が高く、アプリのサイズを小さく保つことができるため、このランタイム環境を使用する必要があります。また、Google Play 開発者サービスでは、LiteRT ランタイムの最新の安定版リリースが自動的に使用されるため、時間の経過とともに機能が追加され、パフォーマンスが向上します。Google Play 開発者サービスを含まないデバイスでアプリを提供する場合や、ML ランタイム環境を厳密に管理する必要がある場合は、標準の LiteRT ランタイムを使用する必要があります。このオプションでは、追加のコードがアプリにバンドルされるため、アプリの ML ランタイムをより細かく制御できますが、アプリのダウンロード サイズが増加します。

これらのランタイム環境に Android アプリからアクセスするには、LiteRT 開発ライブラリをアプリ開発環境に追加します。アプリで標準ランタイム環境を使用する方法については、次のセクションをご覧ください。

ライブラリ

Interpreter API には、Google Play 開発者サービスを使用してアクセスできます。Android アプリで LiteRT のコア ライブラリとサポート ライブラリを使用できます。LiteRT ライブラリとランタイム環境の使用に関するプログラミングの詳細については、Android 向け開発ツールをご覧ください。

モデルを取得する

Android アプリでモデルを実行するには、LiteRT 形式のモデルが必要です。ビルド済みのモデルを使用することも、モデルをビルドして Lite 形式に変換することもできます。Android アプリのモデルの取得について詳しくは、LiteRT のモデルのページをご覧ください。

入力データを処理する

ML モデルに渡すデータは、特定のデータ構造を持つテンソルである必要があります。このデータ構造は、テンソルのシェイプと呼ばれることがよくあります。モデルでデータを処理するには、アプリコードで、画像、テキスト、音声データなどのネイティブ形式のデータを、モデルに必要な形状のテンソルに変換する必要があります。

推論を実行する

モデルを介してデータを処理し、予測結果を生成することを、推論の実行といいます。Android アプリで推論を実行するには、LiteRT ランタイム環境モデル入力データが必要です。

特定のデバイスでモデルが推論を生成できる速度は、処理されるデータのサイズ、モデルの複雑さ、メモリや CPU などの利用可能なコンピューティング リソース、またはアクセラレータと呼ばれる専用プロセッサによって異なります。ML モデルは、画像処理装置(GPU)や Tensor Processing Unit(TPU)などの専用プロセッサで、デリゲートと呼ばれる LiteRT ハードウェア ドライバを使用して高速に実行できます。デリゲートとモデル処理のハードウェア アクセラレーションについて詳しくは、ハードウェア アクセラレーションの概要をご覧ください。

出力結果を処理する

モデルは予測結果をテンソルとして生成します。Android アプリは、アクションを実行するか、ユーザーに結果を表示することで、このテンソルを処理する必要があります。モデルの出力結果は、画像分類の単一の結果に対応する数値(0 = 犬、1 = 猫、2 = 鳥)のように単純なものから、画像内の複数の分類されたオブジェクトの複数の境界ボックスなど、0 ~ 1 の予測信頼度評価を含む、はるかに複雑な結果まであります。

高度な開発パス

より高度でカスタマイズされた LiteRT モデルを使用する場合は、上記よりも高度な開発アプローチが必要になることがあります。以降のセクションでは、Android アプリで LiteRT 用にモデルを実行して開発するための高度な手法について説明します。

高度なランタイム環境

LiteRT の標準ランタイム環境と Google Play 開発者サービス ランタイム環境に加えて、Android アプリで使用できるランタイム環境がいくつかあります。これらの環境は、LiteRT の標準ランタイム環境でサポートされていない ML オペレーションを使用する ML モデルがある場合に最もよく使用されます。

LiteRT Flex ランタイムを使用すると、モデルに必要な特定の演算子を含めることができます。モデルを実行するための高度なオプションとして、Android 用の LiteRT をビルドして、TensorFlow 機械学習モデルの実行に必要な演算子やその他の機能を含めることができます。詳しくは、Android 向け LiteRT をビルドするをご覧ください。

C および C++ API

LiteRT は、C と C++ を使用してモデルを実行するための API も提供します。アプリで Android NDK を使用している場合は、この API の使用を検討してください。複数のプラットフォーム間でコードを共有できるようにしたい場合も、この API の使用を検討してください。この開発オプションの詳細については、開発ツールのページをご覧ください。

サーバーベースのモデル実行

一般に、アプリでモデルを実行する場合は、Android デバイスで実行して、レイテンシの短縮とユーザーのデータ プライバシーの強化というメリットを活かす必要があります。ただし、デバイス外のクラウド サーバーでモデルを実行する方が適している場合もあります。たとえば、ユーザーの Android デバイスに収まるサイズに簡単に圧縮できない、またはそれらのデバイスで妥当なパフォーマンスで実行できない大きなモデルがある場合などです。このアプローチは、幅広いデバイスでモデルのパフォーマンスを一定に保つことが最優先事項である場合にも推奨されます。

Google Cloud は、AI モデルの実行に必要なサービスを幅広く提供しています。詳細については、Google Cloud の AI と ML のプロダクトのページをご覧ください。

カスタムモデルの開発と最適化

より高度な開発パスには、カスタムの ML モデルの開発や、Android デバイスで使用するためのモデルの最適化が含まれる可能性があります。カスタムモデルを構築する場合は、メモリと処理費用を削減するために、モデルに量子化手法を適用することを検討してください。LiteRT で使用する高パフォーマンス モデルを構築する方法については、モデル セクションのパフォーマンスのベスト プラクティスをご覧ください。

サポートされている Android バージョン

LiteRT バージョン ステータス 最小 SDK レベル 最小 NDK レベル(使用されている場合) リリース日
v1.2.0 ✅ 有効 21(Android 5 Lollipop) r26a 2025-03-13

重要: 最新の機能とセキュリティ アップデートとの互換性を確保するため、依存関係を最新の状態に保ってください。