LiteRT の概要へようこそ

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

LiteRT 2.x には、最新のランタイム API である CompiledModel API が含まれています。この API は、特にハードウェア アクセラレーションとデバイス上の ML アプリケーションと AI アプリケーションの全体的なパフォーマンスを通じて、Interpreter API(TensorFlow Lite API とも呼ばれます)を改善します。

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 ツールページ - パフォーマンス、プロファイリング、エラーレポートなど。