浏览器内 LLM 微调:wllama WebGPU 训练 PoC 解析 · 干货攻略

  • 链接: https://x.com/maximelabonne/status/2096456605076476239
  • 分类: x-tips
  • 来源: X @maximelabonne
  • 作者: Jay
  • 更新: 2026-09-10
  • 仓库: ngxson/wllama

这是什么

wllama 是 ngxson(Xuan-Son Nguyen)维护的 WebAssembly + WebGPU 绑定库,让 llama.cpp 可以在浏览器内直接运行大语言模型推理,2026 年 9 月 5 日他发布了 首个浏览器内微调(fine-tuning)PoC,证明在 WebGPU 上训练 LLM 是可行的。@maximelabonne(Liquid AI)随后转发并评价"浏览器内微调要来了",引发社区热议(9.3K views)。

一句话定义: 基于 llama.cpp + WebAssembly + WebGPU,在浏览器里完成大模型前向传播 + 反向传播训练,不再需要服务器端 GPU。


为什么值得关注

解决了什么问题

此前 wllama 已支持在浏览器里推理 LLM(2024 年中 WebGPU 接入 via PR #215),但训练一直局限于桌面端。ngxson 的 PoC 打破了这一瓶颈:

  • 隐私意义:数据无需离开浏览器,用户本机完成训练,避免上传到第三方服务器
  • 去中心化:Chromebook、低配 PC 都能训练模型,只要有现代浏览器(Chrome/Edge)
  • 技术意义:证明 llama.cpp 的 WebGPU 后端具备完整的训练 forward + backward pass 能力,不只是推理

谁分享的

角色 身份
@ngxson(Xuan-Son Nguyen) wllama 创始人 + 主力维护者
@maximelabonne(Maxime Labonne) Liquid AI,知名开源 LLM 推手,转发引爆

核验过程

读过的官方来源

  1. GitHub 仓库 ngxson/wllama(README + releases) - 确认 wllama 是 WebAssembly 绑定库,基于 llama.cpp - V3.1 引入 WebGPU 支持(via PR #215 by Reese Levine) - 当前最新版本:v3.5.1(与 llama.cpp v3.5.0 同步) - 功能列表:OpenAI 兼容 API、WebGPU、multimodal、tool calling - 安装:npm i @wllama/wllama;源码构建需 Docker + npm run build:wasm && npm run build

  2. @ngxson 原始推文(Sep 5, 2026) - 原话:"I put together a super earlier PoC that proves it's possible, backed by llama.cpp / wllama" - 下一步:"Working on LoRA next..." - 9.3K views,大量开发者关注

  3. GitHub Releases 页面 - v3.5.1 变更:修复 CDN 兼容、同步 llama.cpp v3.5.0、debug 工具等 - 未提及训练 API,训练 PoC 尚未合入正式 release

交叉验证结论

说法 来源 核验结果
这是"首个浏览器内 WebGPU 训练 PoC" 原帖主张 ⚠️ 未完全核验——llama.cpp 本身有 llama-train 二进制(仅 CPU,量化的 GGUF 可用),但浏览器 WebGPU 训练此前无公开先例;ngxson 推文描述为"super early PoC",尚未合入 master
wllama v3.5.1 同步 llama.cpp v3.5.0 GitHub releases 已核验,changelog 明确写明
LoRA 是下一步 @ngxson 推文 已核验,原文明确
WebGPU 后端由 Reese Levine 开发 README 已核验

上手步骤

⚠️ 注意:这是 PoC 阶段,训练 API 尚未稳定合入 release。以下基于 wllama 现有推理 API + PoC 已知信息整理,预计正式训练 API 在未来版本(很可能是 v3.6+)提供。

1. 安装 wllama

# npm(推理用,已发布)
npm i @wllama/wllama

# 源码构建(需要 Docker,用于 PoC 测试或开发)
git clone https://github.com/ngxson/wllama.git
cd wllama
git submodule update --init --recursive
npm ci
npm run build:wasm && npm run build

2. 基本推理示例(参考)

import { Wllama } from '@wllama/wllama';

const wllama = new Wllama({
  default: './esm/wasm/wllama.wasm',
});

// 从 Hugging Face 加载 GGUF 模型
await wllama.loadModelFromHF(
  { repo: 'ggml-org/models', file: 'tinyllamas/stories260K.gguf' },
  { progressCallback: ({ loaded, total }) => {
    console.log(`Downloading... ${Math.round((loaded/total)*100)}%`);
  }}
);

// 推理
const response = await wllama.createChatCompletion({
  messages: [{ role: 'user', content: 'Hello!' }],
  max_tokens: 50,
  temperature: 0.5,
});
console.log(response.choices[0].message.content);

3. 启用 WebGPU 加速

// V3.1+ 默认启用 WebGPU,所有层自动卸载到 GPU
// 若模型太大超出显存,可手动调整卸载层数:
await wllama.loadModel(files, {
  n_gpu_layers: 4, // 仅卸载 4 层到 GPU;设为 0 禁用 GPU
});

// Firefox/Safari 兼容模式(性能下降):
wllama.setCompat('default', 'firefox_safari');

4. PoC 训练 API(原帖信息,⚠️ 未稳定)

ngxson 在推文中提到 PoC 可行但尚未发布 API,预期形式可能类似:

// ⚠️ 预期用法,非当前 API(待官方发布)
await wllama.train({
  model: files,
  trainData: myDataset,
  epochs: 3,
  batchSize: 1,
  lr: 1e-4,
  backend: 'webgpu', // 核心:新支持 GPU 训练
});

建议跟踪方式: - Watch GitHub 仓库:github.com/ngxson/wllama - 关注 ngxson 推文:@ngxson - LoRA 训练 PR 预计会在 examples/ 下新增 finetune/ 示例


坑与适用边界

⚠️ 当前阶段限制(PoC vs 生产)

方面 PoC 现状 生产就绪标准
API 稳定性 训练 API 尚未合入 release 需等 v3.6+ 正式 API
LoRA 支持 尚在开发(原帖确认) 完整 LoRA 需要 adapter 加载 API
浏览器兼容性 WebGPU 仅 Chrome/Edge 完全支持 Safari、Firefox 需要 compat 模式(性能差)
模型大小 ArrayBuffer 上限 2GB 大模型需 split成 ≤512MB 分块
多线程 需服务器设置 COOP/COEP 头 本地文件 URL 无法启用多线程训练
显存限制 WebGPU 显存由浏览器分配,不确定是否有足够空间训练 7B 小模型(≤1B)或 Q4 量化更现实

适用场景(今天就可以用)

  • ✅ 跑通 wllama 推理流程,熟悉 API
  • ✅ 小模型(≤ 1B,Q4 量化)推理基准测试
  • ✅ 隐私敏感场景(医疗/法律文档本机处理)
  • ✅ 将训练 PoC 代码 fork 下来,跟踪 ngxson 的进展

暂时不适合的场景

  • ❌ 生产级别训练(等正式训练 API)
  • ❌ 7B+ 全精度模型训练(显存不足)
  • ❌ 多 LoRA 切换(adapter 加载尚未支持)

一句话结论

wllama 的 WebGPU 训练 PoC 证明了浏览器内微调的工程可行性,是 llama.cpp"全栈本地 AI"版图的关键补全,但训练 API 尚在 PoC 阶段,距离生产使用还需等待正式 release 和 LoRA 支持。


核验来源:GitHub ngxson/wllama README + releases、@ngxson 原始推文(Sep 5, 2026)、@maximelabonne 转发推文(Sep 6, 2026)、llama.cpp 官方博客(reeselevine.github.io)、GitHub releases v3.5.1 changelog。训练 API "super early PoC"状态基于原帖措辞;LoRA 下一步计划来自 @ngxson 推文原文;"首次"浏览器 WebGPU 训练主张标记为原帖主张未完全核验。