Google 为 JavaScript 推出的跨平台 ML 推理库,支持在浏览器直接运行模型。对前端 AI 应用开发有直接实用价值,打开浏览器端 AI 新可能。
我们很高兴地宣布推出 LiteRT.js——LiteRT 的 JavaScript 绑定,可直接在 Web 浏览器中运行 AI。通过将备受信赖的端侧推理库 LiteRT 引入 Web,Web 开发者现在可以完全在本地以极致性能运行 ML 和 AI 模型。这意味着更强的用户隐私保护、零服务器成本,以及能够满足实时体验的超低延迟。对于已有 .tflite 模型的开发者,LiteRT.js 让模型部署到移动端和桌面端 Web 浏览器变得前所未有地顺畅,并成为 TensorFlow.js 在执行 .tflite 模型方面一次强有力的演进。
以往的 Web AI 解决方案(如 TensorFlow.js)依赖性能相对较低的 JavaScript 内核。如今,我们通过 WebAssembly,将经过全面优化的原生跨平台 runtime 直接提供给 Web 开发者。LiteRT.js 可以直接在浏览器中运行 .tflite 模型,并利用 LiteRT 先进的硬件加速能力释放出色性能,包括用于 CPU 的 XNNPACK、用于 GPU 的 ML Drift,以及即将支持 NPU 的 WebNN。
我们的首个版本提供了入门所需的全部工具,包括全新的 LiteRT.js npm package,以及一系列展示真实应用实现的 demo。
抱歉,你的浏览器不支持播放此视频。
借助 LiteRT.js,Web 开发者可以将模型集成到使用 JavaScript 或 TypeScript 编写的应用中,完全在客户端处理文本生成、目标检测和音频处理等复杂任务。由于 LiteRT.js 与 LiteRT 共用统一的跨平台技术栈,你的 Web 应用可以自动获得面向 Android、iOS 和桌面端开发的最新性能升级、量化改进与硬件优化。
通过利用 LiteRT 的 lowering flow 和 runtime,你可以轻松转换来自多种 Python ML framework 的模型,并在所有主流加速器(CPU / GPU / NPU)上获得原生硬件加速。为了帮助你轻松释放这些 AI 能力,下面是 LiteRT.js 的主要亮点:
借助 LiteRT Torch,只需一个步骤即可转换 PyTorch 模型,让模型立即具备利用先进浏览器硬件加速能力的条件。现在就可以按照 LiteRT Torch 指南开始使用。
如需进一步优化,AI Edge Quantizer 允许你针对不同模型层配置定制量化方案。这能够在保持模型整体质量的同时,显著减小模型体积并提升性能。你可以查看 quantization colab,了解实际效果。
LiteRT.js 能够在多种硬件 backend 上实现高性能 AI 推理。
CPU:使用 XNNPACK,这是 Google 为端侧 CPU 加速高度优化的库,提供可靠的多线程支持,以及可提升性能的 relaxed SIMD build。
GPU:由 Google 领先的端侧 GPU 加速解决方案 ML Drift 提供支持。LiteRT.js 利用 WebGPU,在 Web 上实现先进的 GPU 加速。
NPU:利用新兴的 WebNN API(目前仍是 Chrome 和 Edge 中的实验性功能),调用专用 NPU,实现高能效、超低延迟推理。
准备好加速你的 Web 应用了吗?立即深入阅读 LiteRT.js 文档,开始使用。
为了展示统一 runtime 和硬件加速 backend 在真实场景中的影响,我们将 LiteRT.js 与现有 Web 解决方案进行了对比评估。在经典计算机视觉和音频处理模型上,LiteRT.js 都实现了显著加速——无论 CPU 还是 GPU 推理,其性能最高可达到其他 Web runtime 的 3 倍。
为了用真实场景中的效率验证这些结论,我们使用 LiteRT.js,在三种不同的 Web 执行 backend 上对热门 AI 模型进行了基准测试:CPU(通过 XNNPACK)、WebGPU,以及 WebNN(通过 Apple CoreML)。对于目标跟踪、音频转录或图像处理等要求严苛的实时应用,通过 WebGPU 或 WebNN 使用 GPU 或 NPU,与标准 CPU 执行相比可以实现 5~60 倍的加速,在不牺牲性能的前提下确保更低延迟。
如果想查看 LiteRT.js 的实际运行效果,可以体验我们的在线实现。LiteRT.js demo 的源代码可在 LiteRT GitHub repository 和 Ultralytics 中获取。
Ultralytics 是一家专注于构建计算机视觉工具和模型的人工智能公司。它最为人熟知的身份是 YOLO(You Only Look Once)framework 的创造者。YOLO 是一个面向实时目标检测和图像分割的模型家族。
我们很高兴地宣布,Ultralytics Python package 现已直接内置官方 LiteRT 导出支持。你可以轻松地将 Ultralytics YOLO 模型部署到移动端、边缘设备和浏览器,并且只需几行代码,即可完成从编译到运行。
抱歉,你的浏览器不支持播放此视频。
Depth Anything——单目深度估计展示了如何将普通摄像头画面实时转换为可交互的 3D 点云。它通过 WebGPU 使用 LiteRT.js 提供支持,并利用 Depth-Anything-V2 模型即时计算深度数据,将视频像素映射到能够实时响应的 3D 空间中。
抱歉,你的浏览器不支持播放此视频。
通过 LiteRT.js 使用 Real-ESRGAN 模型,可直接在浏览器中将图像放大 4 倍。其工作方式是把 128x128 像素的图像块放大到 512x512,然后将这些图像块重新拼装成最终图像。
抱歉,你的浏览器不支持播放此视频。
无论你是从头实现一个新项目,还是将现有应用迁移到我们的高性能 runtime,将 LiteRT.js 集成到开发流程中都非常直接。LiteRT.js 对硬件层优化的复杂性进行了抽象,让你无须承担手动适配平台的额外负担,就能交付响应迅速且注重隐私的使用体验。
下面的代码片段展示了使用 GPU 加速初始化、编译和运行 .tflite 模型的精简流程。通过简洁、现代的 JavaScript,你可以加载模型、传入 input tensor,并实时获取高速推理结果。有关更详细的说明、demo 和指导,请参阅我们的文档。
import { loadLiteRt, loadAndCompile, Tensor } from '@litertjs/core';
await loadLiteRt('path/to/wasm/directory/');
const model = await loadAndCompile('path/to/your/model.tflite',{ accelerator: webgpu });
const inputTypedArray = new Float32Array(1 * 3 * 244 * 244);
const inputTensor = new Tensor(inputTypedArray, [1, 3, 244, 244]);
const results = await model.run(inputTensor);
// results is a Tensor stored on GPU. To move it to CPU & convert to a typedArray we use
const resultArray = (await results[0].moveTo('wasm')).toTypedArray();
我们将持续扩展 LiteRT.js 的性能、模型覆盖范围和开发者工具。展望未来,我们的开发路线图将重点推进 WebNN 集成,以实现原生 NPU 性能,并为端侧生成式 AI 提供高度优化的支持。
模型:在 Kaggle 或 LiteRT Hugging Face Community 中查找预训练的 .tflite 模型。
开始构建:浏览 LiteRT.js Documentation。
获取 package:从 npm 下载 @litertjs/core。
参与贡献:在 GitHub issues 页面分享反馈、报告 bug 或贡献代码。
LLM 支持:LiteRT-LM.js 通过我们的 JavaScript API 为 LLM 增加浏览器支持。
TensorFlow.js 用户:查看如何在现有 TensorFlow.js pipeline 中使用 LiteRT.js 进行模型推理。
感谢 Ultralytics 提供 YOLO26 媒体素材和性能数据,感谢 Jason Mayes 提供 LiteRT.js demo。