
WebLLM:18.7k Star 的浏览器端 LLM 推理引擎,WebGPU 加速、无需服务器、OpenAI API 兼容
WebLLM 让大模型完全跑在浏览器里:WebGPU 调用本地 GPU,零服务器成本,数据不出设备。支持 Llama、Phi、Gemma、Mistral、Qwen 等主流开源模型,API 与 OpenAI 完全兼容,几行代码即可集成到自己的 Web 应用。
原文来源:GitHub - mlc-ai/web-llm — MLC 团队出品的高性能浏览器内 LLM 推理引擎:模型权重直接在用户浏览器里用 WebGPU 跑,开发者拿到的是与 OpenAI 完全兼容的 API。
过去想在自己的应用里用上开源大模型,要么租 GPU 服务器部署推理服务,要么让用户下载动辄几个 GB 的本地程序。WebLLM 提供了第三条路:把模型推理整个塞进浏览器——用户打开网页,模型就在他的 GPU 上跑起来,不经过任何服务器。
这个项目来自 MLC(Machine Learning Compilation)团队,是 MLC LLM 的姊妹项目,核心作者包括陈天奇等机器学习系统领域的老面孔。目前 GitHub 上已有 18.7k star,今天再次登上 Hacker News 首页。
解决什么问题
浏览器端跑 LLM 的吸引力在三个场景里特别明显:
隐私敏感场景。 对话内容、文档、代码全部在本地 GPU 上处理,不出设备、不落服务器。医疗、法律、企业内部数据这类场景,很多团队不敢把内容发给云端 API,WebLLM 给了一个"本地处理 + Web 交付"的中间选项。
零后端成本。 不需要维护推理服务器,没有按 token 计费的账单,用户量涨跌对你的成本毫无影响。对工具类、demo 类、教育类应用尤其友好。
离线可用。 模型权重通过浏览器 Cache API / IndexedDB 缓存后,二次访问可以完全离线运行,适合网络不稳定或要求断网可用的场景。
代价也很明确:推理速度取决于用户设备的 GPU,显存小的机器只能跑小模型。它不是要取代云端 API,而是覆盖"不需要 GPT-5 级能力"的那部分请求——正如本地模型圈常说的,80% 的日常请求其实用不上最贵的模型。
—— 广告 ——
核心特性
- WebGPU 硬件加速:推理计算直接调用浏览器暴露的本地 GPU 能力;CPU 侧计算走 WebAssembly。这是它区别于"纯 JS 跑模型"方案的根本——速度差一个数量级。
- OpenAI API 完全兼容:
engine.chat.completions.create({ messages }),和调 OpenAI 的写法几乎一样,支持流式输出、JSON mode、种子控制等。换模型对业务代码几乎是透明的。 - 结构化 JSON 生成:JSON mode 在模型库的 WebAssembly 部分实现,可配合自定义 JSON Schema 输出结构化结果。
- 模型覆盖面广:内置 Llama 3/3.1、Phi 3、Gemma、Mistral、Qwen2(0.5B-7B)等主流开源模型,模型清单在 MLC Models 维护;也支持把自己编译的模型接进来。
- 多种缓存后端:Cache API(默认)、IndexedDB、OPFS(Origin Private File System),甚至实验性的 Chrome Cross-Origin Storage——权重可以跨站点共享,避免重复下载。
- Worker 支持:可以把推理放在 Web Worker / Service Worker 里跑,不阻塞 UI 线程,还支持做 Chrome 扩展。
上手:三行代码跑起来
安装后(npm install @mlc-ai/web-llm,也支持 CDN 直接引入),核心流程就两步:
import { CreateMLCEngine } from "@mlc-ai/web-llm";
// 1. 创建引擎并加载模型(首次需下载权重,注意处理进度)
const engine = await CreateMLCEngine("Llama-3.1-8B-Instruct-q4f32_1-MLC", {
initProgressCallback: (p) => console.log(p),
});
// 2. 像调 OpenAI 一样对话
const reply = await engine.chat.completions.create({
messages: [{ role: "user", content: "Hello!" }],
});
console.log(reply.choices[0].message);流式输出只需加 stream: true,返回的是 AsyncGenerator,逐块拿到内容。官方提供了 Chatbot 入门示例和功能更完整的 WebLLM Chat 参考实现,还有 JSON Playground 可以直接在浏览器里试结构化输出。
几个实战注意点:
- 首次加载慢是正常的:模型权重要下载,8B 量化模型约 4-5 GB,走 CDN 也要一会儿。加载进度回调必须处理好,否则用户以为页面卡死了。
- 模型选择要匹配硬件:集显/低端 GPU 跑 7B 级别会比较吃力,2B-4B 的 Qwen、Phi 系列更稳妥。模型 ID 里的
q4f32等后缀表示量化格式,4bit 量化是浏览器端的主流选择。 - 量化与内存:模型加载后驻留显存,浏览器标签页占用的 GPU 内存在模型生命周期内不会释放,做好"用完卸载"的设计(
engine.reload()换模型或主动释放)。
适合谁用
适合:想做隐私优先的 AI 助手/工具、需要离线能力、不想为 demo 和原型维护后端、或者想探索"AI 功能作为前端组件"这种交付形态的开发者。
不适合:需要顶尖模型能力的长任务、低端设备用户占比高的产品(推理体验会劝退)、以及对"模型版本可控更新"有强需求的生产系统——浏览器端模型的更新要等用户重新加载页面,没法像服务端那样无缝升级。
对独立开发者来说,WebLLM 的价值在于把"AI 能力"变成了一个纯前端的 npm 依赖:没有服务器账单、没有 API key 管理、没有数据合规审查,这对做小工具和垂直应用是很实在的成本优势。如果产品形态是"打开即用"的网页工具,它值得放进技术选型里对比一轮。
© 2026 四月
原文链接:https://www.aprilzz.com/tools/web-llm-browser-llm-inference
相关文章
Hister:一个自己掌控的私有全文搜索引擎,把你看过的网页变成可检索的知识库
书签只能找回标题,搜索引擎搜不到你记得的内容。Hister 把浏览器访问过的页面、本地文件和爬取的内容全文索引到你自己控制的服务器上,支持字段过滤、短语、通配符、MCP 接入,AGPLv3 开源。
watermarks-remover:一个剥离 AI 水印的开源工具,上线一周拿下 13K Stars
Anthropic 宣布给所有 Claude 输出加语义水印的同一天,这个 MIT 许可的开源项目出现了——它用三层机制剥离文本统计水印、不可见 Unicode 和文件元数据里的 AI 溯源标记。
Ante:一个 15MB 的 Rust 单二进制编码 Agent,支持完全离线运行
Ante 是一个用 Rust 写成的自包含编码 Agent:单个 15MB 二进制、零运行时依赖、内置 llama.cpp 推理引擎,没有 API key 也能离线跑。Terminal-Bench 2.1 得分 82.7%,资源占用比 Claude Code 低 5-9 倍。