技术深度解析
Litert.js 建立在两项基础性 Web 技术之上:WebGPU 与 WebAssembly(Wasm)。WebGPU 提供了一套底层、高性能的图形与计算 API,使浏览器能够直接与 GPU 通信。与主要面向渲染的前身 WebGL 不同,WebGPU 暴露了计算着色器,可执行任意并行工作负载——这正是神经网络推理所需的核心能力。Litert.js 将模型操作编译为 WebGPU 计算着色器,使浏览器能够在本地 GPU 上直接运行矩阵乘法、卷积和注意力机制。
WebAssembly 则通过提供一种以近原生速度运行的便携式二进制格式来补充这一能力。Litert.js 使用 Wasm 处理模型加载、图优化和内存管理层——这些部分无法在 JavaScript 中高效表达。运行时包含一个自定义内存分配器,可预先分配 GPU 缓冲区,避免推理过程中动态分配的开销。这一点至关重要,因为像 Gemma 2B 或 Phi-3-mini 这样的 LLM 需要数百兆字节的权重,而简单的分配策略会导致帧率下降或内存不足错误。
最具创新性的方面之一是分块执行调度器。大型模型会超出 GPU 本地内存(共享内存)的容量。Litert.js 将矩阵操作分解为适合共享内存的块,按顺序处理它们,并累加部分结果。这种方法借鉴了 cuBLAS 等高性能计算库,确保即使拥有 70 亿参数的模型也能在配备 4-8 GB 显存的消费级 GPU 上执行。该调度器还实现了算子融合——将 ReLU 和矩阵乘法等相邻操作合并为单个内核启动——从而将内核启动开销降低高达 40%。
| 基准测试 | 模型 | 设备 | 延迟(毫秒) | 吞吐量(token/秒) |
|---|---|---|---|---|
| 文本生成 | Gemma 2B | M2 MacBook Air (WebGPU) | 45 | 22 |
| 文本生成 | Gemma 2B | iPhone 15 Pro (WebGPU) | 38 | 26 |
| 图像分类 | MobileNetV3 | M2 MacBook Air (WebGPU) | 12 | 83 |
| 图像分类 | MobileNetV3 | iPhone 15 Pro (WebGPU) | 10 | 100 |
| 文本生成(原生) | Gemma 2B via TensorFlow Lite | M2 MacBook Air | 32 | 31 |
| 文本生成(原生) | Gemma 2B via TensorFlow Lite | iPhone 15 Pro | 28 | 35 |
数据要点: Litert.js 在 Apple Silicon 和移动 GPU 上达到了原生 TensorFlow Lite 性能的 70-80%。差距主要源于驱动开销以及 WebGPU 抽象层缺乏专用张量核心。然而,对于大多数交互式应用(聊天、翻译、字幕生成),低于 50 毫秒的延迟已绰绰有余。
在 GitHub 方面,Litert.js 仓库(google/litert)在发布首月已获得超过 8000 颗星。该项目包含针对主流模型架构(Gemma、Phi、MobileNet、YOLO)的预编译 WebGPU 着色器,以及一个基于 Python 的模型转换器,可将权重量化为 INT8 或 FP16,并将其打包为针对 Web 交付优化的 .litert 格式。该转换器还支持剪枝和蒸馏,可在不显著损失精度的情况下将模型大小缩减至四分之一。
关键参与方与案例研究
谷歌是主要推动者,但生态系统正在迅速扩展。Hugging Face 已宣布在其 Transformers.js 库中实验性支持 Litert.js,允许开发者直接从 Hugging Face Hub 将模型加载到浏览器中。Mozilla 正在探索与 Firefox 的 WebGPU 实现的集成,这可能使 Litert.js 在六个月内实现跨浏览器兼容。Apple 尚未正式评论,但 Safari 对 WebGPU 的支持(自 iOS 18 起可用)意味着 Litert.js 已可在 iPhone 和 Mac 上运行。
多家初创公司已在 Litert.js 上构建产品。Replicate 是一个运行 AI 模型的平台,正在开发一种“本地优先”模式,让模型在浏览器中运行,而非在其云端 GPU 上运行,这有望将其推理成本削减 90%。Ollama 以其本地 LLM 运行器而闻名,正在测试一个基于 Web 的版本,该版本使用 Litert.js 直接在浏览器中运行 Llama 3.2 1B 等模型,从而无需桌面应用。Runway 是一家视频生成公司,其研究团队正在评估 Litert.js 在浏览器中实现实时视频帧插值的可能性,而这项任务目前需要服务器端处理。
| 平台 | 方法 | 延迟(Gemma 2B) | 数据隐私 | 离线支持 |
|---|---|---|---|---|
| Litert.js(浏览器) | WebGPU + Wasm | 45 毫秒 | 是(本地) | 是 |
| TensorFlow Lite(原生) | GPU 委托 | 32 毫秒 | 是(本地) | 是 |
| 云端 API(GPT-4o) | 服务器推理 | 200-500 毫秒 | 否(数据离开设备) | 否 |
| ONNX Runtime Web | WebGL + Wasm | 120 毫秒 | 是(本地) | 是 |
数据要点: Litert.js 在基于浏览器的解决方案中提供了最佳延迟(比 ONNX Runtime Web 快 3 倍),同时保持了隐私和离线优势。