Web 浏览器是用于设备上部署有吸引力的平台,原因有三。首先,浏览器是一个自然的智体环境 (Zhou et al. (2023)),可用于管理日历、回复电子邮件和创建文档等任务——这些活动可能会由基于浏览器智体自动执行。其次,Web 浏览器是普遍可访问的:用户只需打开 URL 而无需安装任何其他软件。第三,浏览器抽象不同设备后端的复杂性。尽管移动设备来自不同的供应商,但基于浏览器的技术(例如 WebGPU)与后端无关。例如,开发人员无需为每个新的 LLM 运算符的每个后端 (例如 CUDA 和 Metal) 实现 GPU 内核,而只需在 WebGPU (Kenwright 2022) 中提供单个实现。
WebLLM 是一个 JavaScript 框架,可在客户端浏览器中本地部署 LLM,从而在 Web 应用程序中启用基于 LLM 的功能。实现这一目标面临三个挑战:WebLLM 需要 (1) 一个 Web 应用程序可以轻松合并的标准化 API;(2) 适应浏览器的运行时环境;(3) 高效的 GPU 加速。WebLLM 的架构通过将系统相应地分为三个部分来解决这些挑战:具有类似端点行为的面向用户引擎 ServiceWorkerMLCEngine、驻留在 Web 工作器(JavaScript 中的后台线程)中封装 MLCEngine 以及提前编译的高效 WebGPU 内核。
Web 开发人员在 Web 应用程序前端实例化轻量级 ServiceWorkerMLCEngine,并将其视为端点。引擎在指定时加载 LLM,随时接收 OpenAI 样式的请求,并以 OpenAI 样式的响应流回输出,Web 应用程序可以使用该响应来更新前端。
这种熟悉的端点式设计带来许多好处。端点式 API 是 JSON 输入 JSON 输出,因此具有明确定义的行为。此外,OpenAI 样式的 API 被广泛采用,使 WebLLM 易于集成到现有项目中。这种设计还允许 WebLLM 以最少的 API 更改来扩展到高级功能。 WebLLM 使用此 API 支持的高级功能包括:使用 JSON Schema 和上下文无关语法进行结构化生成 (Dong et al. 2024)、使用视觉语言模型进行图像输入 (Abdin et al. 2024;Hui et al. 2024),以及在同一引擎中加载多个模型以用于检索增强生成等应用 (Lewis et al. 2020)。