Google 推出 LiteRT.js:高性能 Web AI 推理运行时
LiteRT.js, Google's high performance Web AI Inference
Google 发布 LiteRT.js,这是 LiteRT 跨平台边缘 AI 运行时的最新成员,专为 JavaScript 开发者设计,可直接在浏览器中运行机器学习模型。LiteRT.js 基于 WebGPU 和即将推出的 WebNN 实现 SOTA 推理性能,同时支持回退到 WebAssembly CPU 方案。
Google 将 LiteRT 扩展到了浏览器端,让 Web 开发者可以直接在客户端跑 AI 推理,但发布缺少性能数据和对比,实质价值还要看后续的 benchmark。
我们很高兴地宣布 LiteRT.js,这是 LiteRT 的 JavaScript 绑定,可直接在网页浏览器中运行 AI。通过将备受信赖的端侧推理库 LiteRT 引入 Web,Web 开发者现在可以完全在本地以最高性能运行 ML 和 AI 模型。这意味着更强的用户隐私保护、零服务器成本,以及面向实时体验的超低延迟。对于已有 .tflite 模型的开发者,LiteRT.js 让部署到移动端和桌面端网页浏览器变得前所未有的顺畅,是 TensorFlow.js 在执行 .tflite 模型方面的一次强大演进。
此前的 Web AI 方案(如 TensorFlow.js)依赖性能较低的基于 JavaScript 的内核,而我们现在通过 WebAssembly,将我们原生的、跨平台的运行时及其全部优化直接提供给 Web 开发者。LiteRT.js 通过直接在浏览器中运行你的 .tflite 模型,并利用 LiteRT 最先进的硬件加速能力,释放出令人瞩目的性能,包括面向 CPU 的 XNNPACK、面向 GPU 的 ML Drift,以及即将推出的面向 NPU 的 WebNN。
我们的首个版本提供了入门所需的全部工具,包括新的 LiteRT.js npm 包以及一组展示真实场景实现的演示。
LiteRT.js 如何为 Web 开发者带来价值
借助 LiteRT.js,Web 开发者可以将模型集成到用 JavaScript 或 TypeScript 编写的应用中,完全在客户端处理文本生成、目标检测和音频处理等复杂任务。由于 LiteRT.js 与 LiteRT 共享统一的跨平台技术栈,你的 Web 应用会自动受益于为 Android、iOS 和桌面端开发的最新性能升级、量化改进和硬件优化。
借助 LiteRT 的 lowering 流程和运行时,你可以轻松转换来自各种 Python ML 框架的模型,并在所有主流加速器(CPU / GPU / NPU)上获得原生硬件加速。为了帮助你轻松解锁这些 AI 能力,以下是 LiteRT.js 的主要亮点:
1. PyTorch 转换与定制量化
借助 LiteRT Torch,PyTorch 模型可以一步完成转换,立即准备好利用先进的浏览器端硬件加速。现在就可以按照 LiteRT Torch 指南开始使用。
如需进一步优化,AI Edge Quantizer 允许你针对不同模型层配置定制量化方案。这能在保持整体模型质量的同时实现大幅的体积缩减和性能提升。探索 量化 colab 来实际体验。
2. 跨 CPU、GPU 和 NPU 的原生硬件加速
LiteRT.js 可为多种多样的硬件后端提供高性能 AI 推理。
- CPU:利用 XNNPACK,这是 Google 高度优化的端侧 CPU 加速库,提供强大的多线程支持以及宽松的 SIMD 构建以提升性能。
- GPU:由 ML Drift 提供支持,这是 Google 领先的端侧 GPU 加速解决方案。LiteRT.js 利用 WebGPU 在 Web 上实现最先进的 GPU 加速。
- NPU:借助新兴的 WebNN API(目前在 Chrome 和 Edge 中处于实验阶段),面向专用 NPU,实现高能效、超低延迟的推理。
准备好加速你的 Web 应用了吗?深入了解 LiteRT.js 文档即可开始。
LiteRT.js 架构概览
性能与实际影响
为了展示统一运行时与硬件加速后端的实际效果,我们将 LiteRT.js 与现有的 Web 方案进行了对比评估。在经典计算机视觉和音频处理模型上,LiteRT.js 带来了显著的加速——在 CPU 和 GPU 推理上均比其他 Web 运行时快最多 3 倍。
注:性能基准测试在 2024 款 Apple MacBook Pro(M4 Apple Silicon)上、于受控浏览器环境中进行。单个用户的实际性能可能因本地 GPU 能力、热降频和浏览器驱动优化而有所不同。
为了让这些说法落到真实的效率上,我们使用 LiteRT.js 在三种不同的 Web 执行后端上对热门 AI 模型进行了基准测试:CPU(通过 XNNPACK)、WebGPU 和 WebNN(通过 Apple CoreML)。 对于目标跟踪、音频转写或图像处理等要求苛刻的实时应用,通过 WebGPU 或 WebNN 利用 GPU 或 NPU,相比标准 CPU 执行可带来 5-60 倍加速,在不牺牲性能的前提下确保更低的延迟。
注:性能基准测试在 2024 款 Apple MacBook Pro(M4 Apple Silicon)上、于受控浏览器环境中进行。单个用户的实际性能可能因本地 GPU 能力、热降频和浏览器驱动优化而有所不同。
查看实际效果
要查看 LiteRT.js 的实际运行效果,欢迎浏览我们的在线实现。LiteRT.js 演示的源代码可在 LiteRT GitHub 仓库中获取,也可通过 Ultralytics获取。
LiteRT Ultralytics YOLO 集成
Ultralytics 是一家人工智能公司,专注于构建计算机视觉工具和模型。它最为人熟知的身份是 YOLO(You Only Look Once)框架的创造者,这是一系列实时目标检测和图像分割模型。
我们很高兴地分享,官方 LiteRT 导出支持已直接内置于 Ultralytics Python 包中。你可以轻松地将 Ultralytics YOLO模型部署到移动端、边缘设备和浏览器上——只需几行代码即可完成从编译到运行的整个过程。
演示:YOLO26,实时视觉模型系列
深度估计
Depth Anything - 单目深度估计展示了如何将标准网络摄像头画面实时转换为可交互的 3D 点云。它由 LiteRT.js 通过 WebGPU 驱动,使用 Depth-Anything-V2 模型即时计算深度数据,并将视频像素映射到可响应的 3D 空间中。
演示:使用 DepthAnything 和 WebGPU 进行单目深度估计。
图像放大
在浏览器中使用 Real-ESRGAN 模型配合 LiteRT.js 将图像放大 4 倍,其工作原理是将 128x128 像素的图像块放大至 512x512,然后再重新拼接成最终图像。
LiteRT.js 入门
将 LiteRT.js 集成到你的开发工作流中非常简单,无论你是启动一个全新的实现,还是将现有应用迁移到我们的高性能运行时。LiteRT.js 抽象了硬件级优化的复杂性,使你能够交付响应迅速、注重隐私的体验,而无需承担手动平台调优的开销。
以下代码片段展示了使用 GPU 加速来初始化、编译和运行 .tflite 模型的简化流程。使用简洁的现代 JavaScript,你可以加载模型、输入张量,并实时捕获高速推理结果。如需更详细的说明、演示和指导,请参阅我们的文档此处。
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();
JavaScript
下一步
我们致力于持续扩展 LiteRT.js 的性能、模型覆盖范围和开发者工具。展望未来,我们的开发路线图聚焦于推进 WebNN 集成以实现原生 NPU 性能,并为端侧生成式 AI 提供高度优化的支持。
- 模型:在 Kaggle 或 LiteRT Hugging Face 社区 上查找预训练的 .tflite 模型。
- 开始构建:浏览LiteRT.js 文档。
- 获取软件包:在 npm 上下载@litertjs/core。
- 参与贡献:在我们的GitHub issues 页面分享反馈、报告 bug 或参与贡献。
- LLM 支持:LiteRT-LM.js通过我们的 JavaScript API 为 LLM 增加了浏览器支持。
- TensorFlow.js 用户:请参阅此处,了解如何在现有 TensorFlow.js 流水线中利用 LiteRT.js 进行模型推理。
致谢
Ultralytics,感谢其提供 YOLO26 媒体素材和性能数据。Jason Mayes,感谢其提供 LiteRT.js 演示。
来源:Google Developers Blog(RSS) · developers.googleblog.com