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.js | LiteRT-LM.js |
|---|---|---|
| 抽象层级 | Tensor / graph inference | Engine / 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。典型流程是:
loadLiteRt()加载 WASM 运行时和 supporting files。loadAndCompile()加载.tflite并选择wasm、webgpu或webnn。- 构造
Tensor,调用model.run()。 - 读取输出并显式调用 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配置就认为模型一定可运行。 - 模型输入输出主要受
float32和int32Tensor 类型约束。 - 大模型可能受浏览器 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。