LiteRT の概要へようこそ

LiteRT は、効率的な変換、ランタイム、最適化を使用して、エッジ プラットフォームでの高パフォーマンス ML と GenAI のデプロイを行う Google のオンデバイス フレームワークです。

LiteRT 2.x には、最新のランタイム API である CompiledModel API が含まれています。この API は、ハードウェア アクセラレーションとデバイス上の ML アプリケーションおよび AI アプリケーションの全体的なパフォーマンスを向上させることで、Interpreter API(TensorFlow Lite API)を改善します。CompiledModel API はベータ版で、Kotlin と C++ の両方で利用できます。

LiteRT の主な機能

サポートされているモデル

LiteRT は、Pytorch、TensorFlow、JAX フレームワークから .tflite または .litertlm 形式への効率的な変換をサポートしています。

LiteRT で開発を効率化する

アクセラレータの自動選択と明示的なデリゲート作成。シンプルな NPU ランタイムとモデル配信。 優れたパフォーマンスを実現する効率的な I/O バッファ処理と非同期実行。

クラス最高の GPU パフォーマンス

ML Drift を搭載し、GPU API で ML モデルと生成 AI モデルの両方をサポートするようになりました。

統合された NPU アクセラレーション

主要なチップセット プロバイダの簡素化された NPU アクセスを使用して、モデルを高速化します。

LiteRT による LLM サポートの簡素化

LiteRT を搭載した LiteRT-LM を使用できます。LiteRT-LM は、最新の LLM と、マルチモーダル、制約付きデコードなどの便利な機能をサポートしています。

開発ワークフロー

LiteRT は、Android、iOS、ウェブ、IoT、パソコン/ノートパソコンで推論を完全にオンデバイスで実行します。デバイスにかかわらず、最も一般的なワークフローは次のとおりです。詳細な手順へのリンクも記載しています。

LiteRT 開発ワークフローのグラフ

ML の課題に対する最適なソリューションを特定する

LiteRT は、ML の問題の解決に関してユーザーに高い柔軟性とカスタマイズ性を提供します。そのため、特定のモデルや特殊な実装を必要とするユーザーに適しています。プラグ アンド プレイ ソリューションをお探しのユーザーは、オブジェクト検出、テキスト分類、LLM 推論などの一般的な ML タスク用の既製ソリューションを提供する MediaPipe Tasks を選択することをおすすめします。

モデルの取得と準備

LiteRT モデルは、FlatBuffers と呼ばれる効率的なポータブル フォーマットで表されます。このフォーマットでは、.tflite ファイル拡張子が使用されます。

LiteRT モデルは次の方法で取得できます。

  • 事前トレーニング済みモデルを取得する: 画像セグメンテーションやオブジェクト検出などの一般的な ML ワークロードの場合。

    最も簡単な方法は、.tflite 形式の LiteRT モデルをすでに使用することです。これらのモデルでは、コンバージョン手順を追加する必要はありません。

    モデルタイプ 事前トレーニング済みモデルのソース
    従来の ML
    .tflite 形式)
    Kaggle または HuggingFace
    にアクセスします。例: 画像セグメンテーション モデルサンプルアプリ
    生成 AI
    .litertlm 形式)
    LiteRT Hugging Face ページ
    例: Gemma ファミリー
  • 事前トレーニング済みモデルを使用しない場合は、選択した PyTorch、TensorFlow、JAX モデルを LiteRT モデルに変換します。[PRO USER]

    モデル フレームワーク サンプルモデル 変換ツール
    PyTorch Hugging Face
    Torchvision
    リンク
    TensorFlow Kaggle モデル
    Hugging Face
    リンク
    Jax Hugging Face リンク
  • 生成 API を使用してさらに最適化するために LLM を作成する [PRO ユーザー]

    Generative API ライブラリは、モバイル フレンドリーな抽象化を使用して GemmaTinyLlama などの Transformer モデルを構成するための PyTorch 組み込みのビルディング ブロックを提供します。これにより、変換を保証し、モバイル ランタイム LiteRT でパフォーマンスの高い実行を実現できます。生成 API のドキュメントをご覧ください。

量子化 [PRO ユーザー]

高度なデベロッパー向けの AI Edge Quantizer は、変換された LiteRT モデルを量子化するツールです。このモードは、リソースを大量に消費するモデル(生成 AI モデル)。

ML モデルと生成 AI モデルについては、Ai-Edge-Quantization のドキュメントをご覧ください。

利用を開始するための前提条件

  • Python 3.10 ~ 3.12
  • .tflite モデルファイル
  • 詳細については、各プラットフォームのセクションを参照してください

エッジ プラットフォームのアプリにモデルを統合する

LiteRT モデルを実装して、Android、iOS、ウェブ、IoT、パソコンのデバイスで推論を完全に実行できます。LiteRT には、Android 向けの PythonJava、Kotlin、iOS 向けの Swift、マイクロ デバイス向けの C++ の API が含まれています。

次のガイドを使用して、お好みのプラットフォームに LiteRT モデルを実装します。

モデル フレームワーク サンプルモデル 変換ツール
Android で実行 Android モバイル デバイス C++/Kotlin API
iOS で実行する iOS モバイル デバイス C++/Swift* API
LiteRT.js を使用してウェブで実行する Chrome、Firefox、Safari がインストールされているデバイス JavaScript API
Run on Micro 組み込みデバイス C++ API

*近日提供予定

Kotlin のコード例

// Load model and initialize runtime
val compiledModel = CompiledModel.create("/path/to/mymodel.tflite", CompiledModel.Options(Accelerator.CPU))

// Prepare I/O buffers and fill in the data
val inputBuffers = compiledModel.createInputBuffers()
inputBuffers.get(0).writeFloat(input0)
inputBuffers.get(1).writeFloat(input1)

val outputBuffers = compiledModel.createOutputBuffers()

// Execute model
compiledModel.run(inputBuffers, outputBuffers)

// Access model output
val output = outputBuffers.get(0).readFloat()

inputBuffers.forEach { it.close() }
outputBuffers.forEach { it.close() }
compiledModel.close()

C++ コードの例

LITERT_ASSIGN_OR_RETURN(auto env, GetEnvironment());
LITERT_ASSIGN_OR_RETURN(auto options, GetOptions());
LITERT_ASSIGN_OR_RETURN(
      auto compiled_model,
      CompiledModel::Create(env, "/path/to/mymodel.tflite", options));
LITERT_ASSIGN_OR_RETURN(auto input_buffers,compiled_model.CreateInputBuffers(signature_index));
LITERT_ASSIGN_OR_RETURN(auto output_buffers,compiled_model.CreateOutputBuffers(signature_index));
LITERT_ABORT_IF_ERROR(input_buffers[0].Write(input0));
LITERT_ABORT_IF_ERROR(input_buffers[1].Write(input1));

LITERT_ABORT_IF_ERROR(compiled_model.Run(signature_index, input_buffers, output_buffers));

LITERT_ABORT_IF_ERROR(output_buffers[0].Read(output0));

バックエンドを選択する

LiteRT にバックエンドを組み込む最も簡単な方法は、ランタイムの組み込みインテリジェンスを利用することです。最新の変更により、LiteRT はターゲット バックエンドをオプションとして指定できるため、設定が大幅に簡素化されます。

LiteRT v2.x のコアは CompiledModel オブジェクトです。モデルを読み込むと、LiteRT はシステムで使用可能なハードウェアと内部優先度ロジックを使用して、手動で構成しなくても最適なバックエンドを選択します。詳しくは、バックエンドをご覧ください

Android パソコン ウェブ iOS macOS IoT
CPU XNNPack XNNPack XNNPack XNNPack XNNPack XNNPack
GPU WebGPU
OpenCL
WebGPU
OpenCL
WebGPU WebGPU
Metal
WebGPU
Metal
WebGPU
NPU MediaTek
Qualcomm
- - - - -

その他のドキュメントとサポート

LiteRT v2.x サンプルアプリ LiteRT 画像セグメンテーション サンプルアプリをご覧ください。

TensorFlow Lite の既存のユーザーの場合 移行ガイドを参照してください

Ops Coverage 互換性のある演算子

サポートされている LLM モデル LiteRT Hugging face と Gen API - サンプル

ツール LiteRT ツールページ - パフォーマンス、プロファイリング、エラーレポートなど。