浏览器中的 1 位 27B 模型:在 6 GB RTX 3060 笔记本上实现 25–30 tok/s(WebGPU,无需安装)

Reddit r/LocalLLaMA 工具

摘要

Mentria.ai 的浏览器推理引擎使用 WebGPU,在配备 6 GB 显存的 RTX 3060 笔记本 GPU 上,以 1 位 27B 参数模型实现了 25-30 个令牌每秒的速度,从而实现了无需服务器安装的高效 AI 推理。

mentria.ai 是我独自从零开始用 WebGPU/WGSL 构建的浏览器推理引擎。本周,它实现了我一直追求的一个里程碑:一个 27B 的 1 位模型,在配备 6 GB 显存的 RTX 3060 笔记本 GPU 上,在 Chrome 浏览器中从网页运行,实现了高达 30 个令牌每秒的响应速度。无需安装,无需服务器,数据不会离开设备。该模型名为 Bonsai-27B,是由 Prism ML 训练和发布的原生 1 位模型。我为我们的引擎重新打包了它,编写了运行它的内核,并亲自检查了其质量(与 FP16 Qwen3.6-27B 的完整评估差异可在 HF 卡中查看)。每个权重是一个符号位,每 128 个权重有一个缩放因子,约为每个参数 1.14 位,因此 270 亿参数占用 3.8 GB 的 GPU 显存。重打包和数据:huggingface.co/mentriaai/Bonsai-27B-mentria 实现 30 令牌每秒的工程技术。在本文发布的两天前,同一模型在该笔记本上解码速度为 15 令牌每秒。解码是内存密集型操作:27B 模型的一个词需要 804 次 GPU 调度,其中 401 次是 1 位矩阵向量内核,该内核在每个词时流式传输模型的 3.6 GB 矩阵乘法权重(嵌入层使文件总大小达到 3.8 GB)。获胜的内核是为手机编写的:四个 1 位权重只有 16 种可能的部分结果,因此它将所有 16 种结果一次性计算并存储到片上暂存区,每行从该表中读取结果而不是进行乘法运算(参见 facts 页面上的编号说明 258)。在 Ampere 架构上,该表遇到了一个与权重无关的瓶颈:暂存区内存有 32 个存储体,表的寻址方式导致每个 warp 的十六个线程访问同一个存储体,内核运行速度仅为卡带宽的 38%。通过在每行添加一个填充槽,将地址分散到各个存储体内核在一个词的处理时间从 26.5 毫秒降至约 21 毫秒,加上表本身带来的从 15 到 26 令牌每秒的提升,笔记本原始速度达到 32 令牌每秒——在聊天 UI 中,经过采样和界面开销后,实际为 25–30 令牌每秒(参见说明 259)。提示阶段在分块布局上存在相同问题;重新分块后,1,489 个令牌的提示处理时间从 29.6 秒缩短至 25.3 秒。每次更改仅在输出与之前版本完全一致后才发布,这也是为什么内核以固定顺序添加部分和,并接受 44% 的占用率上限。本文中的每个声明都在引擎事实页面上有编号说明。数据(RTX 3060 笔记本 6 GB,Windows 11,Chrome 152 在 D3D12 上,全新加载):解码:在聊天 UI 中,显卡预热后为 25–30 令牌每秒。提示处理:1,489 个令牌的提示约需 25 秒。上下文:在此 6 GB 卡上为 3,072 个令牌;在 16 GB 的 Mac 上为 8,192 个令牌;更大的卡上更多,每个令牌 128 KiB。KV 缓存是精确数学,没有量化缓存。在 6 GB 上的下一步是将引擎的几千个小 GPU 缓冲区合并为几个大区域,使驱动程序不再保留约 300 MiB 的松弛空间;这是 4,096 令牌的算术基础,尚未构建。加载:从浏览器缓存加载少于 10 秒;首次下载 3.8 GB,仅一次。引擎中还包括:较小的层级(Qwen3.5 0.8B、2B、4B)适用于手机和低端设备,几 MB 的 LoRA 适配器可在矩阵乘法中热插拔,不到一秒,还有一个视觉塔用于图像输入。试用地址:https://mentria.ai/tools/ai-chat/(当您的 GPU 符合条件时,27B 层级会出现)。发布的代码、基准测试和测量方法在仓库中:https://github.com/mentria-ai/website。引擎事实页面,了解引擎和模型的实际工作原理:https://mentria.ai/assets/learn/engine-facts.html
查看原文

相似文章