RunMan.AI

在浏览器里跑大模型!用 WebGPU 零成本部署 DeepSeek-R1

01 个人AI技能提升课程

在浏览器里跑大模型!用 WebGPU 零成本部署 DeepSeek-R1

不要再给 API 充钱了——把大模型装进浏览器,断网也能用。

查看全部课程

01 / 03

课程中心

系统化的AI培训课程,涵盖企业培训与个人技能提升,助力您快速掌握AI技术,实现数字化转型。

企业培训

为企业提供定制化AI培训方案,帮助团队快速提升AI应用能力,实现业务智能化升级。

个人成长

为个人提供从入门到进阶的AI课程,助力职业发展,打造超级个体,实现AI创业梦想。

在浏览器里跑大模型!用 WebGPU 零成本部署 DeepSeek-R1

个人AI技能提升课程 · RunMan.Ai - 冲刺者AI

不要再给 API 充钱了——把大模型装进浏览器,断网也能用。

咨询报名

我们的专业团队将为您提供详细的课程信息和报名服务

 

不要再给 API 充钱了——把大模型装进浏览器,断网也能用。

当你还在往 DeepSeek 账户里充钱的时候,有人已经把 R1 模型直接跑在了浏览器里——不需要后端、不需要服务器、甚至不需要联网

这篇文章带你从零到一,将 DeepSeek-R1 蒸馏版塞进浏览器,用 WebGPU 加速推理,全程 API Key 都不用掏

为什么要做端侧推理?

调 API 的三座大山

调用 DeepSeek / OpenAI API 看似方便,但背后藏着三个问题:

痛点说明

频繁调用累积费用不算小,尤其流式长对话
不安全 聊天上下文(Context)随着每次请求发送到远程服务器,数据隐私没法保证
依赖网络 服务器宕机、网络波动,用户体验直接崩

端侧模型的思路

既然问题和答案都知道,为什么不能把模型直接搬到用户本地?

传统模式:浏览器 ──网络──→ DeepSeek 服务器 ──返回答案──→ 浏览器


本项目:   浏览器内 GPU 直接跑模型 → 返回答案

不用发网络请求、不用等排队、对话记录永远留在本地。

技术全景

用 React 搭页面,TailwindCSS 写样式,Transformers.js 调度模型,WebGPU 负责推理计算。

React + TypeScript + TailwindCSS:前端底座

// App.tsx 核心骨架

function App() {

  const [status, setStatus] = useState<string | null>(null);

  const [error, setError] = useState<string | null>(null);

  const [loadingMessage, setLoadingMessage] = useState("");

  const [progressItems, setProgressItems] = useState([...]);



  const IS_WEBGPU_AVAILABLE = !!navigator.gpu;

  // ...

}

为什么选 React 而不是 Vue?

  • • AI 生态里大型项目以 React 居多,社区资源丰富
  • • Hooks 的函数式思想和数据驱动视图的理念特别适合处理模型加载/推理中的状态流转
  • • TypeScript 的类型系统能在模型加载这种高复杂度场景下帮你提前拦截大量 bug

TailwindCSS:不用再写 CSS 了

TailwindCSS 的核心——原子类

/* 传统写法:起类名 → 写选择器 → 声明属性 */

.my-card {

  display: flex;

  flex-direction: column;

  align-items: center;

  margin-bottom: 1rem;
}

现在只需要:

<div className="flex flex-col items-center mb-1 max-w-[400px] text-center">

TailwindCSS 提供了一堆语义化到极致的类名flex 就是 flextext-center 就是文本居中——所见即所得。这在 AI 驱动的 Vibe Coding 场景里特别受用——LLM 极擅长这种”告诉你类名,你自己拼”的模式。

WebGPU:浏览器里的 GPU

网页前端以前只能用 WebGL(2011 年的标准),性能有限。WebGPU 是新一代浏览器 GPU API,直接对标 Vulkan/Metal/DX12,让浏览器也能吃到现代 GPU 的红利。

// 一行代码检测浏览器是否支持 WebGPU
const IS_WEBGPU_AVAILABLE = !!navigator.gpu;
// ↑ 不支持时返回 undefined
// ↑ 双重否定转成明确的 true/false

目前 Chrome/Edge 113+ 支持,Firefox 也在 Nightly 版本中跟进。

Transformers.js:把 HuggingFace 搬进浏览器

这是 HuggingFace 官方推出的 JS 库,让你在浏览器里:

  • • 加载 HuggingFace 上的预训练模型(包括 LLM)
  • • 和 Python 版 Transformers API 保持一致的接口
  • • 支持 ONNX 格式,能直接在 WebGPU 上跑
// Transformers.js 加载模型的典型流程(伪代码)
const pipeline = await pipeline('text-generation', modelName, {

  device: 'webgpu', // 关键:指定在 GPU 上跑
});

加载完毕后就完全本地运行,数据不出浏览器。

模型选型

本项目选用的是 DeepSeek-R1-Distill-Qwen-1.5B-ONNX:

属性含义

Distill(蒸馏) 用原始 DeepSeek-R1 教一个小模型,让它在保留推理能力的同时大幅降低参数量
1.5B(15 亿参数) 参数量是云端大模型的零头,但足够在本地完成许多推理任务

小参数模型不是”残血版”——在特定任务上,蒸馏后的小模型往往能用 1/10 算力实现 90% 的效果。

项目的组件分层

App.tsx(主组件)

├── WebGPU 检测 → 不支持就提示用户
├── 状态管理 → null → loading → ready
├── 模型加载区 → 进度条、文件信息
├── 对话区 → 输入框 + 推理结果
└── 错误处理区 → 加载失败时的友好提示

整个应用就是一个 React 函数组件——返回 JSX 之前是 JavaScript 逻辑,return 之后是 UI。这就是 React 组件化的精髓。

前端直接调 API vs BFF vs 端侧推理

① 前端直调 API(纯前端)
  浏览器 ──fetch──→ DeepSeek API
  问题:API Key 暴露在前端代码里,右键就能看

 ② BFF 模式(加中间层)
  浏览器 ──fetch──→ BFF(你的后端)──→ DeepSeek API
  问题:多了一套后端要维护,API 费用照样花

 ③ 端侧推理(本项目)
  浏览器内 GPU 直接跑模型
  优点:0 费用、0 延迟(推理部分)、数据不出浏览器

总结

这个项目的核心价值在于证明了浏览器不是一个”展示层”,它已经是完整的计算平台

技术栈回顾:

层技术职责

界面 React + TypeScript 组件化 UI,状态管理
样式 TailwindCSS 原子 CSS,零手写
模型调度 Transformers.js 加载 / 调用 HuggingFace 模型
推理加速 WebGPU + ONNX Runtime 浏览器内 GPU 计算

如果你是前端工程师,这个项目能帮你理解 AI 时代前端技术栈的全貌。如果你想写入简历,这个项目覆盖了 React、TypeScript、TailwindCSS、WebGPU、Transformers.js——全是当下最热的关键词。

项目地址ai_doubao_dcx: 走向AGI,走向豆包

运行方式:pnpm install && pnpm dev

浏览器要求:Chrome/Edge 113+

准备开始AI培训之旅了吗?

专业AI培训团队,为企业提供从入门到精通的AI技能培训服务,助力企业数字化转型

免费咨询
定制方案
实战教学