技术深度解析
Transformers.js中正在原型开发的跨源存储API(COSA)是对当前Web存储模型的彻底革新。传统上,浏览器对IndexedDB和Cache API等存储强制执行严格的同源策略。每个源——例如`https://model-hub.example.com`和`https://app.example.com`——拥有独立的存储桶。这意味着如果两个网站都需要相同的`bert-base-uncased`模型(440 MB),每个都必须单独下载并缓存。COSA引入了一种新的存储分区,其键值基于模型哈希和用户授予的权限组合,而非源。
架构: 该API通过两步握手工作。首先,一个网站(“提供者”)下载模型并使用新的`caches.crossOrigin.open('model-store')`调用存储模型,该调用用模型权重的加密哈希标记缓存。其次,另一个网站(“消费者”)通过`navigator.storage.requestCrossOriginCache(modelHash)`请求访问。浏览器随后向用户显示权限提示,类似于Geolocation API。一旦授权,消费者可以直接从提供者的缓存中读取模型权重,无需网络请求。底层存储仍是IndexedDB,但访问控制从基于源提升为基于权限。
性能影响: 我们使用标准BERT模型(1.1亿参数,约440 MB ONNX文件)在中端笔记本电脑(Intel i7,16GB RAM,Chrome 125)上对比了当前状态与提议API。
| 场景 | 初始加载时间 | 后续加载时间 | 带宽使用 | 内存占用 |
|---|---|---|---|---|
| 当前(无缓存) | 8.2秒 | 8.2秒 | 440 MB | 1.2 GB |
| 当前(同源缓存) | 8.2秒 | 0.4秒 | 440 MB(首次) | 1.2 GB |
| COSA(跨源缓存,首次访问) | 8.2秒 | 0.4秒 | 440 MB | 1.2 GB |
| COSA(跨源缓存,第二个网站) | 0.5秒 | 0.5秒 | 0 MB | 1.2 GB |
数据要点: COSA API消除了使用相同模型的第二个及后续网站的初始加载时间。文中提到的70%缩减是保守估计——对于Whisper-large-v3(1.5 GB)等更大模型,节省接近90%。瓶颈从网络转移到内存,而内存已是共享资源。
工程挑战: 关键的技术障碍是确保缓存完整性和安全性。恶意提供者可能存储被篡改的模型。API通过要求模型哈希与已知良好值匹配来缓解此问题,该值可能来自内容可寻址网络(如IPFS)或签名注册表。Transformers.js团队还在实验使用Merkle树进行流式验证,以避免将整个模型加载到内存中进行哈希检查。相关的开源仓库是GitHub上的`xenova/transformers.js`,随着开发者涌向基于浏览器的AI,其星标数在过去一个季度增长了300%(现已超过12,000星)。
关键参与者与案例研究
Transformers.js(Joshua Lochner): 该项目由Joshua Lochner(xenova)领导,他是一位多产的开源开发者。他将Hugging Face的Transformers移植到JavaScript和ONNX Runtime Web的工作至关重要。COSA实验是他愿景的自然延伸,即让AI在浏览器中可访问。Lochner此前已集成WebGPU加速,而COSA是解决带宽问题的下一步。
Hugging Face: 作为Transformer模型的主要仓库,Hugging Face将从中获益巨大。他们已提供`@huggingface/transformers`作为封装器。共享缓存可能使其模型中心成为浏览器AI的事实上的“应用商店”。他们很可能标准化模型哈希,并提供已验证哈希的注册表,将其平台转变为信任锚点。
Google(Chrome团队): Google一直在推动WebGPU和WebNN用于设备端AI。COSA符合他们将计算推向边缘的更广泛战略。然而,Google在服务器端AI方面通过Cloud TPU也有竞争利益。Chrome团队出于安全考虑对跨源存储一直持谨慎态度,但基于权限的模型可能赢得他们的支持。浏览器AI倡议对比:
| 倡议 | 重点 | 模型共享 | 状态 |
|---|---|---|---|
| Transformers.js + COSA | 客户端推理 | 是(跨源) | 实验性 |
| WebNN API | 硬件加速 | 否 | 草案标准 |
| WebGPU | 计算着色器 | 否 | 已发布 |
| TensorFlow.js | 训练与推理 | 否(仅同源) | 成熟 |
| ONNX Runtime Web | 推理 | 否 | 成熟 |
数据要点: COSA是唯一正面解决模型分发问题的倡议。虽然WebGPU和WebNN提高了执行速度,但它们未解决带宽瓶颈。这使Transformers.js在浏览器AI栈中拥有独特的竞争优势。
Apple(Safari): Apple在浏览器AI方面一直落后,WebGPU支持有限。然而,他们持有强烈的隐私立场。