LiteRT Next 總覽

LiteRT Next 是一組全新的 API,可改善 LiteRT,特別是針對裝置端機器學習和 AI 應用程式的硬體加速和效能。這些 API 為 Alpha 版,可在 Kotlin 和 C++ 中使用。

LiteRT Next Compiled Model API 以 TensorFlow Lite 解譯器 API 為基礎,簡化裝置端機器學習的模型載入和執行程序。新的 API 提供全新的簡化方式,可使用硬體加速功能,無須處理模型 FlatBuffers、I/O 緩衝區互通性和委派。LiteRT Next API 與 LiteRT API 不相容。如要使用 LiteRT Next 的功能,請參閱入門指南

如需 LiteRT Next 的實作範例,請參閱下列示範應用程式:

快速入門導覽課程

使用 LiteRT Next API 執行推論作業時,請遵循下列重要步驟:

  1. 載入相容的模型。
  2. 分配輸入和輸出張量緩衝區。
  3. 叫用已編譯的模型。
  4. 將推論結果讀取至輸出緩衝區。

下列程式碼片段顯示 Kotlin 和 C++ 中整個程序的基本實作方式。

C++

// Load model and initialize runtime
LITERT_ASSIGN_OR_RETURN(auto model, Model::CreateFromFile("mymodel.tflite"));
LITERT_ASSIGN_OR_RETURN(auto env, Environment::Create({}));
LITERT_ASSIGN_OR_RETURN(auto compiled_model,
    CompiledModel::Create(env, model, kLiteRtHwAcceleratorCpu));

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

// Fill the first input
float input_values[] = { /* your data */ };
input_buffers[0].Write<float>(absl::MakeConstSpan(input_values, /*size*/));

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

// Read the output
std::vector<float> data(output_data_size);
output_buffers[0].Read<float>(absl::MakeSpan(data));

Kotlin

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

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

// Fill the first input
inputBuffers[0].writeFloat(FloatArray(data_size) { data_value /* your data */ })

// Invoke
model.run(inputBuffers, outputBuffers)

// Read the output
val outputFloatArray = outputBuffers[0].readFloat()

詳情請參閱「開始使用 Kotlin」和「開始使用 C++」指南。

主要功能與特色

LiteRT Next 包含下列主要優點和功能:

  • 新 LiteRT API:透過自動加速器選取、真正的非同步執行作業,以及有效的 I/O 緩衝區處理,簡化開發作業。
  • 一流的 GPU 效能:使用先進的 GPU 加速功能,在裝置端執行機器學習。新的緩衝區互通性功能可實現零複製,並在各種 GPU 緩衝區類型中盡量減少延遲。
  • 優異的生成式 AI 推論:提供最簡單的整合方式,讓生成式 AI 模型發揮最佳效能。
  • 統一 NPU 加速功能:提供主要晶片組供應商的 NPU 無縫存取功能,並提供一致的開發人員體驗。您可以透過搶先體驗計畫取得 LiteRT NPU 加速功能。

主要改善項目

LiteRT Next (已編譯的模型 API) 包含下列關鍵改善項目,適用於 LiteRT (TFLite 解譯器 API)。如需使用 LiteRT Next 設定應用程式的完整指南,請參閱入門指南

  • 加速器用法:使用 LiteRT 在 GPU 上執行模型時,需要明確的委派程式建立、函式呼叫和圖表修改。使用 LiteRT Next 時,只需指定加速器即可。
  • 原生硬體緩衝區互通性:LiteRT 不會提供緩衝區選項,並強制所有資料透過 CPU 記憶體傳輸。使用 LiteRT Next 時,您可以傳入 Android 硬體緩衝區 (AHWB)、OpenCL 緩衝區、OpenGL 緩衝區或其他專用緩衝區。
  • 非同步執行:LiteRT Next 隨附重新設計的非同步 API,可提供以同步柵欄為基礎的真正非同步機制。這樣一來,您就能針對不同工作使用各種硬體 (例如 CPU、GPU、CPU 和 NPU),加快整體執行時間。
  • 模型載入:LiteRT Next 在載入模型時,不需要單獨的建構步驟。