伯克利与 MIT 团队开源了 FreeToken:一款面向消费级硬件的 MoE 推理引擎,能在 8GB 显存的 RTX 4060 笔记本上跑 Qwen3.6-35B,解码速度约每秒 39 Token。它把个人电脑当作可弹性调度的异构算力,而不是资源受限的“小数据中心节点”。对想摆脱云 API、本地跑大模型的开发者来说,这是很值得动手的路线。
核心思路:别让 GPU 停下来
稀疏 MoE 模型每个 Token 只计算全部参数的一小部分,但解码时仍要在数千亿未激活权重之间路由。数据中心里 NVLink 能掩盖权重传输开销;消费级硬件上,PCIe(通常 16~64 GB/s)和内存延迟就成了解码瓶颈。
传统边缘运行时(Ollama、llama.cpp 的逐层卸载)是“静态专家卸载”:未激活权重驻留在系统内存,一旦激活就同步搬到 GPU,缓存未命中时整个执行完全停顿。FreeToken 用名为 q* 策略的动态协同调度取代它:缓存未命中时 GPU 不停转,而是按实时互连吞吐量把 Token 计算分配给 CPU 核心与 GPU 张量核心。
三个关键技术点
1. 带宽自适应执行(q* 调度)
FreeToken 实时计算每一层的最优分配方案,在 CPU 与 GPU 之间动态拆分计算,而不是用固定的卸载规则(对比 KTransformers 的静态 CPU/GPU 卸载)。
2. FTW 快速权重格式 + 整层双缓冲
让权重通过 PCIe 传输的过程与活跃计算层的执行完全重叠,从而隐藏传输开销。
3. 语义锚点检查点(面向 Agent 场景)
编程助手/自主 Agent 会频繁改提示词、回填工具调用结果、生成思考块,导致前缀变化。普通引擎会丢弃线性 KV 缓存、触发全量重算;FreeToken 在逻辑任务边界缓存中间注意力状态,Agent 修改中间参数时可复用已有子序列状态。
快速上手
# 从 GitHub 获取 FreeToken(支持 Linux / Windows,NVIDIA RTX 30/40/50 系列)
git clone https://github.com/FlashML-org/FreeToken
cd FreeToken
# 命令行工具:指定模型即可启动,引擎自动处理 CPU/GPU 协同调度
# 例:在 8GB 显存上跑 35B MoE 模型
freetoken run --model Qwen3.6-35B
# 桌面客户端(FlashML.ai 提供):可视化查看
# 常驻专家与 KV 缓存槽位可运行时动态调整,无需重载模型
与现有工具对比
- Ollama / llama.cpp:面向 GGUF 量化与逐层卸载,无法在主机与设备间动态分配稀疏专家负载。同 MoE 模型上 FreeToken 解码快 3~4 倍,预填充快 6~30 倍。
- vLLM / SGLang:用 PagedAttention 和连续批处理优化数据中心吞吐量,假设高带宽互连而非异构内存层次。
- KTransformers:静态卸载规则,而 FreeToken 每层实时算闭式最优分配。
实践建议
社区已开始用二手 RTX 3090/4080 搭配 DDR4/DDR5 内存自托管推理 Agent,把云端 API 费用降到接近零,同时保护代码知识产权。注意:q* 的闭式解在实际环境会受到 CPU 调度延迟、内存争用影响,建议在自己的模型和 Agent 负载上实测,再决定是否替换手调过的 llama.cpp 配置。
资源链接
- GitHub 仓库:FlashML-org/FreeToken
- 论文(arXiv):FreeToken:通过带宽自适应执行实现高效的边缘原生 MoE 服务
- 桌面端与命令行:FlashML.ai
