Sipp 实战:在浏览器中本地运行 LLM,速度提升 3 倍
想在浏览器里直接跑大模型,又不想忍受 WebLLM 或 Transformers.js 的龟速?最近开源的 Sipp 给出了一个新答案——它是一款基于 WebGPU 的高性能 AI 推理框架,专为浏览器、桌面和云端统一设计,核心优势是 零依赖、零安装,在浏览器端推理速度是 WebLLM 的 3 倍、Transformers.js 的 12 倍。
这篇文章带你从零上手 Sipp,在浏览器里运行 GGUF 模型,并扩展到 Node.js 和云端部署。
什么是 Sipp?
Sipp 是由 Noumena Labs 开发的全栈 AI 推理框架(Apache-2.0 开源),核心引擎用 Rust + C++ 编写,通过 WebAssembly 编译到浏览器。它提供了一套统一的对称 API——不论你在浏览器、Node.js 还是云端代理,API 接口完全一致。
npm install @sipphq/sipp
一句话概括:Sipp = WebGPU 推理引擎 + 云端网关代理 + 统一 SDK。
为什么需要 Sipp?
目前浏览器端跑 LLM 的主流方案有三个痛点:
- WebLLM:冷启动约 160ms,解码速度约 25.8 tok/s
- Transformers.js:冷启动约 301ms,解码速度约 33.3 tok/s
- 两者 API 与后端(Python、Node.js)不统一,切换环境需重写代码
Sipp 的基准测试成绩(NVIDIA GTX 3080 实测):
| 指标 | Sipp | WebLLM | Transformers.js |
|---|---|---|---|
| TTFT(首 Token 延迟) | 24.3 ms | 160 ms(6.5x) | 301 ms(12.4x) |
| 解码速度 | 77.1 tok/s | 25.8 tok/s(3x) | 33.3 tok/s(2.3x) |
| 端到端延迟 | 6,655 ms | 19,930 ms(3x) | 15,670 ms(2.4x) |
3 倍的速度提升主要来自 Sipp Engine 的 WebGPU 深度优化——用 Rust + C++ 直接操作 GPU 着色器,避免了 JS 层的额外开销。
实战:在浏览器中运行本地 LLM
前提准备
你需要:
- 一个支持 WebGPU 的浏览器(Chrome 113+、Edge 113+、Firefox Nightly)
- 一个 GGUF 格式的模型文件(推荐 Q4_K_M 量化的小模型,如 Llama 3.2 1B 或 Phi-3 Mini)
第一步:安装
npm install @sipphq/sipp
Sipp 的浏览器包没有任何外部依赖——零依赖是它的设计目标之一。
第二步:初始化客户端并加载模型
import { SippClient } from '@sipphq/sipp';
const messages = [
{ role: 'system', content: '你是一个简洁的 AI 助手。' },
{ role: 'user', content: '用一句话解释 Sipp。' },
];
const client = new SippClient();
const endpoint = await client.add('default', {
kind: 'local',
source: '/models/model.gguf', // 你的 GGUF 模型路径
options: {
backend: 'webgpu',
runtime: {
context: { n_ctx: 2048 },
},
},
});
const run = client.chat(messages, {
endpoint,
maxTokens: 64,
});
console.log((await run.response).text);
await client.close();
这里关键的是 client.add() 方法——它返回一个 endpoint 句柄,后续所有推理请求都通过这个句柄路由。kind: 'local' 表示在本地 WebGPU 上执行。
第三步:流式输出
大多数实际场景需要逐 token 输出,而不是等全部生成完:
const run = client.chat(messages, {
endpoint,
emitTokens: true,
maxTokens: 256,
});
let streamed = '';
for await (const batch of run.tokens) {
streamed += batch.text;
process.stdout.write(batch.text);
}
const response = await run.response;
console.log(streamed || response.text);
run 对象同时支持 await run.response(一次性获取全部结果)和 for await...of 遍历 run.tokens(流式获取),与 OpenAI API 的风格一致。
扩展到云端:统一 API
Sipp 最实用的设计是本地和云端使用完全相同的 API。当你需要更强的算力时,只需将 endpoint 从 local 切换到 gateway:
import { SippClient } from '@sipphq/sipp';
const client = new SippClient();
// 本地推理
const localEndpoint = await client.add('local', {
kind: 'local',
source: '/models/model.gguf',
});
// 云端推理——API 完全相同
const cloudEndpoint = await client.add('gateway', {
kind: 'gateway',
target: 'upstream-cluster',
baseUrl: 'https://gateway.example.com/v1/',
authentication: {
kind: 'bearer',
value: await getGatewayToken(),
},
});
// 同时运行两个推理任务
const [localResult, cloudResult] = await Promise.all([
client.chat([{ role: 'user', content: '解释本地推理。' }], { endpoint: localEndpoint }),
client.chat([{ role: 'user', content: '解释云端推理。' }], { endpoint: cloudEndpoint }),
]);
这种对称 API 设计让你可以:
- 开发阶段用本地模型调试,生产环境切换到云端
- 根据任务复杂度动态路由(简单查询走本地,复杂推理走云端)
- 不修改任何业务代码,只切换 endpoint
在 Node.js 中使用
Sipp 也支持 Node.js 后端,使用 CUDA/Metal 原生编译:
npm install @sipphq/sipp-server
import { SippClient } from '@sipphq/sipp-server';
const client = new SippClient();
const endpoint = await client.add('default', {
kind: 'local',
modelPath: '/models/llama3.gguf',
config: {
context: { n_ctx: 2048 },
},
});
const prompt = [
'<|system|>',
'Answer concisely.',
'<|user|>',
'What is WebGPU?',
'<|assistant|>',
].join('\n');
const run = client.query({
endpoint,
prompt,
emitTokens: true,
options: { maxTokens: 128, temperature: 0.7 },
});
let result = '';
for await (const batch of run) {
result += batch.text;
}
console.log(result || (await run.response).text);
await client.close();
Node.js 版本的优势是支持 CUDA GPU 加速和更大的上下文窗口,适合服务端推理场景。
适合哪些场景?
Sipp 最适合这几类用途:
- 浏览器内 AI 应用:AI 聊天、文档助手、代码补全,不依赖后端
- 游戏和交互式应用:零安装的 AI NPC 对话、动态剧情生成
- 隐私敏感场景:所有数据在用户本地处理,不上传到云端
- 离线环境:没有网络也能使用 AI 能力
目前 Sipp 处于活跃开发阶段(v0.1.0),官方路线图还包括嵌入式向量记忆、设备端 PII 脱敏和自动智能路由等特性。
小结
Sipp 用一个统一的 SDK 解决了浏览器端 AI 推理的多个痛点——性能、统一 API、零依赖。如果你在做浏览器内 AI 应用,或者想要一套代码同时覆盖本地和云端推理,Sipp 值得关注。
相关链接: