LiteRT 總覽

LiteRT 是 Google 的裝置端架構,可透過高效轉換、執行階段和最佳化功能,在邊緣平台部署高效能 ML 和生成式 AI。

最新版 LiteRT 2.x 推出 CompiledModel API,這是專為盡量提升硬體加速效果而設計的現代化執行階段介面。雖然 Interpreter API (先前稱為 TensorFlow Lite) 仍可供回溯相容性使用,但對於想在裝置端 AI 應用程式中追求頂尖效能的開發人員來說,建議選擇 CompiledModel API。

LiteRT 主要功能

使用 LiteRT 簡化開發作業

自動選取加速器與明確建立委派項目。有效處理 I/O 緩衝區,並執行非同步作業,以提升效能。請參閱裝置端推論說明文件

頂尖的 GPU 效能

這項功能採用機器學習漂移技術,目前支援 GPU API 上的機器學習和生成式 AI 模型。請參閱 GPU 加速說明文件

統一 NPU 加速

透過主要晶片組供應商提供的簡化 NPU 存取權,加快模型速度。請參閱 NPU 加速說明文件

優質 LLM 支援

LiteRT 可在行動裝置、桌機和網頁平台,以高效能部署生成式 AI 模型。請參閱生成式 AI 部署說明文件

支援多種機器學習架構

LiteRT 支援從 PyTorch、TensorFlow 和 JAX 架構簡化轉換為 .tflite.litertlm 格式。請參閱模型轉換說明文件

開始使用 CompiledModel API

開發工作流程

LiteRT 會在 Android、iOS、Web、IoT 和桌機/筆電上,完全在裝置端執行推論。無論使用哪種裝置,最常見的工作流程如下,並附上詳細操作說明的連結。

找出最適合解決機器學習挑戰的方案

LiteRT 可讓使用者在解決機器學習問題時享有高度彈性和自訂空間,因此非常適合需要特定模型或專門實作方式的使用者。如果使用者需要即插即用的解決方案,可能比較適合使用 MediaPipe Tasks,這項工具提供現成的解決方案,可執行常見的機器學習工作,例如物件偵測、文字分類和 LLM 推論。

LiteRT 開發工作流程圖

取得及準備模型

LiteRT 模型以 FlatBuffers 這種高效率可攜格式呈現,並使用 .tflite 副檔名。

您可以透過下列方式取得 LiteRT 模型:

  • 取得預先訓練的模型:適用於熱門的機器學習工作負載,例如圖像分割、物件偵測等。

    最簡單的方法是使用 .tflite 格式的 LiteRT 模型。這些模式不需要任何額外的轉換步驟。

    模型類型 預先訓練模型來源
    傳統機器學習
    (.tflite 格式)
    前往 KaggleHuggingFace
    例如:圖片區隔模型範例應用程式
    生成式 AI
    (.litertlm 格式)
    LiteRT Hugging Face 頁面
    例如 Gemma 系列
  • 如果您選擇不使用預先訓練的模型,請轉換所選的 PyTorch、TensorFlow 或 JAX 模型,使其成為 LiteRT 模型。[PRO USER]

    模型架構 範例模型 轉換工具
    Pytorch Hugging Face
    Torchvision
    連結
    TensorFlow Kaggle Models
    Hugging Face
    連結
    Jax Hugging Face 連結
  • 撰寫 LLM,並使用 Generative API [專業版使用者] 進一步最佳化。

    我們的 Generative API 程式庫提供 PyTorch 內建的建構區塊,可透過適合行動裝置的抽象化功能,組合 Transformer 模型,例如 GemmaTinyLlama其他模型,藉此確保轉換作業,並在行動執行階段 LiteRT 上執行高效能作業。請參閱生成式 API 說明文件

最佳化 [PRO USER]

進階開發人員適用的 AI Edge Quantizer 是一項工具,可量化轉換後的 LiteRT 模型。這項功能旨在協助進階使用者,盡可能提升耗用大量資源的模型效能 (例如 生成式 AI 模型)。

詳情請參閱 AI Edge Quantizer 說明文件

在邊緣平台將模型整合至應用程式

LiteRT 可讓您完全在裝置端執行機器學習模型,並在 Android、iOS、網頁、電腦和 IoT 平台提供高效能。

請參閱下列指南,在偏好的平台上整合 LiteRT 模型:

支援的平台 支援的裝置 支援的 API
在 Android 裝置上執行 Android 行動裝置 (不含平板電腦) C++/Kotlin
在 iOS/macOS 上執行 iOS 行動裝置、Macbook C++/Swift
使用 LiteRT.js 在網頁上執行 安裝 Chrome、Firefox 或 Safari 的裝置 JavaScript
在 Linux 上執行 Linux 工作站或 Linux 型物聯網裝置 C++/Python
在 Windows 上執行 Windows 工作站或筆電 C++/Python
在 IoT 裝置上執行 嵌入式裝置 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 OpenGL
OpenCL
WebGPU
Metal
WebGPU WebGPU
OpenCL
WebGPU
NPU MediaTek
Qualcomm
- - - -

其他說明文件和支援