LiteRT の概要へようこそ

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

最新の LiteRT 2.x リリースでは、ハードウェア アクセラレーションを最大化するように設計された最新のランタイム インターフェースである CompiledModel API が導入されています。Interpreter API(旧称 TensorFlow Lite)は下位互換性を維持するために引き続き利用できますが、デバイス上の AI アプリケーションで最先端のパフォーマンスを求めるデベロッパーには CompiledModel API をおすすめします。

LiteRT の主な機能

LiteRT で開発を効率化する

アクセラレータの自動選択と明示的なデリゲート作成。優れたパフォーマンスを実現する効率的な I/O バッファ処理と非同期実行。オンデバイス推論のドキュメントをご覧ください。

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

ML Drift を搭載し、GPU API で ML モデルと生成 AI モデルの両方をサポートするようになりました。GPU アクセラレーションのドキュメントをご覧ください。

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

主要なチップセット プロバイダの簡素化された NPU アクセスを使用して、モデルを高速化します。NPU アクセラレーションのドキュメントをご覧ください。

優れた LLM サポート

LiteRT は、モバイル、デスクトップ、ウェブ プラットフォーム全体で生成 AI モデルの高性能なデプロイを実現します。GenAI のデプロイに関するドキュメントをご覧ください。

幅広い ML フレームワークのサポート

LiteRT は、PyTorch、TensorFlow、JAX フレームワークから .tflite または .litertlm 形式への効率的な変換をサポートしています。モデル変換のドキュメントをご覧ください。

開発ワークフロー

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 モデル)。

詳細については、AI Edge Quantizer のドキュメントをご覧ください。

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

LiteRT を使用すると、Android、iOS、ウェブ、パソコン、IoT プラットフォーム全体で、ML モデルをデバイス上で完全に実行できます。

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

サポート対象プラットフォーム サポートされている端末 サポートされている API
Android で実行 Android モバイル デバイス C++/Kotlin
iOS/macOS で実行する iOS モバイル デバイス、Macbook C++/Swift
LiteRT.js を使用してウェブで実行する Chrome、Firefox、Safari がインストールされているデバイス JavaScript
Linux で実行する Linux ワークステーションまたは Linux ベースの IoT デバイス C++/Python
Windows で実行する Windows ワークステーションまたはノートパソコン C++/Python
Run on Micro 組み込みデバイス C++

次のコード スニペットは、Kotlin と C++ での基本的な実装を示しています。

Kotlin

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

// Preallocate input/output buffers
val inputBuffers = compiledModel.createInputBuffers()
val outputBuffers = compiledModel.createOutputBuffers()

// Fill the input buffer
inputBuffers.get(0).writeFloat(input0)
inputBuffers.get(1).writeFloat(input1)

// Invoke
compiledModel.run(inputBuffers, outputBuffers)

// Read the output
val output = outputBuffers.get(0).readFloat()

C++

// Load model and initialize runtime
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));

// Preallocate input/output buffers
LITERT_ASSIGN_OR_RETURN(auto input_buffers,compiled_model.CreateInputBuffers(signature_index));
LITERT_ASSIGN_OR_RETURN(auto output_buffers,compiled_model.CreateOutputBuffers(signature_index));

// Fill the input buffer
LITERT_ABORT_IF_ERROR(input_buffers[0].Write(input0));
LITERT_ABORT_IF_ERROR(input_buffers[1].Write(input1));

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

// Read the output
LITERT_ABORT_IF_ERROR(output_buffers[0].Read(output0));

ハードウェア アクセラレータを選択する

LiteRT にバックエンドを組み込む最も簡単な方法は、ランタイムの組み込みインテリジェンスを利用することです。CompiledModel API を使用すると、LiteRT はターゲット バックエンドをオプションとして指定できるため、設定が大幅に簡素化されます。詳しくは、オンデバイス推論ガイドをご覧ください。

Android iOS / macOS ウェブ Linux / Windows IoT
CPU XNNPACK XNNPACK XNNPACK XNNPACK XNNPACK
GPU WebGPU
OpenCL
WebGPU
Metal
WebGPU WebGPU
OpenCL
WebGPU
NPU MediaTek
Qualcomm
- - - -

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