LiteRT.js 与 LiteRT-LM.js

记录日期: 2026-07-10
归类: 浏览器端 AI 推理 / WebGPU / WASM
关联: 前端工程化 MOC · 个人 Web 前端技术选型

一句话结论

LiteRT.js 和 LiteRT-LM.js 不是同层竞争产品:LiteRT.js 是面向通用 .tflite 模型的浏览器推理运行时;LiteRT-LM.js 是面向 .litertlm 大语言模型的高级 Web API。

普通 ML / 自定义模型
PyTorch / TensorFlow / JAX → .tflite → LiteRT.js → Tensor / Graph 推理
 
LLM / 对话模型
模型组件 + tokenizer + 配置 → .litertlm → LiteRT-LM.js → Engine / Conversation / Chat

核心对比

维度LiteRT.jsLiteRT-LM.js
抽象层级Tensor / graph inferenceEngine / Conversation / LLM orchestration
模型格式.tflite.litertlm
npm 包@litertjs/core@litert-lm/core
浏览器后端WASM/XNNPack、WebGPU、WebNN(实验性)WebGPU 默认
典型能力分类、检测、分割、Embedding、自定义模型对话、流式文本生成、会话管理
当前覆盖更通用,但受算子和 Tensor 类型约束Early Preview,当前仅有限 web-compatible 模型

LiteRT.js

LiteRT.js 将 LiteRT 运行时编译为浏览器可用的 JavaScript/WASM API。典型流程是:

  1. loadLiteRt() 加载 WASM 运行时和 supporting files。
  2. loadAndCompile() 加载 .tflite 并选择 wasmwebgpuwebnn
  3. 构造 Tensor,调用 model.run()
  4. 读取输出并显式调用 Tensor 的 delete() 释放资源。

主要价值:

  • 使用 WASM/XNNPack 提供 CPU 路径。
  • 使用 WebGPU 进行通用 GPU 推理。
  • WebNN 可连接专用 NPU,但目前需要实验性浏览器配置和 JSPI。
  • 通过 @litertjs/tfjs-interop 接入 TensorFlow.js 的前处理和后处理。
  • @litertjs/model-tester 可以用随机输入检查模型在 CPU/WebGPU/WebNN 上的可执行性。

主要边界:

  • WebGPU/WebNN 的算子覆盖不等于 CPU;模型必须按目标后端验证。
  • 官方文档对“不支持算子是否自动回退 CPU”存在表述不一致,不能只看 accelerator 配置就认为模型一定可运行。
  • 模型输入输出主要受 float32int32 Tensor 类型约束。
  • 大模型可能受浏览器 WASM 内存、模型下载体积、CORS 和缓存策略影响。
  • 前处理、后处理、输入输出布局和资源生命周期仍由应用负责。

LiteRT-LM.js

LiteRT-LM.js 是 LiteRT-LM 的 Web JavaScript/TypeScript API。它把模型加载、对话状态、消息结构、流式生成和取消操作封装成更高层的 API:

import {Engine} from '@litert-lm/core';
 
const engine = await Engine.create({
  model: 'model.litertlm',
});
 
const conversation = await engine.createConversation();
const response = await conversation.sendMessage('Hello');
 
for await (const chunk of conversation.sendMessageStreaming('Tell me a story')) {
  console.log(chunk.content);
}
 
await engine.delete();

当前官方 Web 文档将其定位为 Early Preview,并明确列出以下限制:

  • WebGPU 为默认执行后端。
  • 当前只支持有限的 web-compatible 模型,官方示例主要是 Gemma 4 E2B/E4B 的 web 变体。
  • Web API 主要是 text-in/text-out。
  • 图片、音频等多模态附件尚未在 Web SDK 中开放。
  • 公开 API 仍以 Engine → Conversation → sendMessage/sendMessageStreaming 为主。

版本与文档漂移

LiteRT-LM v0.14.0 的 release note 声称 LiteRT-LM.js 已加入完整 tool calling 和 reasoning/thinking channel 支持,但官方 API Overview 仍写着 Web SDK 不支持 function calling/tool execution。

因此,在依赖 LiteRT-LM.js 的 tool calling 或 reasoning 能力前,应锁定具体 npm 版本,并用真实浏览器测试确认,不能只依据项目首页或 release note 判断能力已经稳定。

如何选择

优先 LiteRT.js

  • 运行图像、音频、Embedding、分类、检测、分割等非聊天模型。
  • 需要加载自定义 .tflite 模型。
  • 需要接入 TensorFlow.js 或自行控制预处理、后处理和 Tensor 生命周期。
  • 需要尽可能广泛的模型和算子覆盖。

优先 LiteRT-LM.js

  • 目标是浏览器内离线聊天。
  • 可以接受 Gemma web 模型和 Early Preview 的限制。
  • 更重视高级对话 API、流式输出和会话封装,而不是直接操纵 Tensor。

暂不建议直接依赖 LiteRT-LM.js 的场景

  • 生产级多模态 Web 应用。
  • 必须稳定支持 tool calling 或结构化 agent loop 的 Web 应用。
  • 需要任意 .litertlm 模型兼容性。

这类需求目前应优先评估 LiteRT-LM 的 Python、Kotlin、Swift 或 C++ API,或者等待 Web API 文档和包能力同步稳定。

与前端架构的关系

LiteRT.js / LiteRT-LM.js 属于浏览器端计算运行时,不是完整的 AI 应用编排平台。实际产品仍需要自行设计:

  • Web Worker 与 UI 线程隔离。
  • 模型下载、版本、缓存和增量更新。
  • CORS、模型来源和离线安装策略。
  • 推理期间的内存释放、取消和页面生命周期。
  • WebGPU 不可用时的降级策略。
  • 模型能力与业务输入输出之间的 contract。

官方来源