用 FreeToken 在 RTX 4060 上跑 35B 大模型:边缘 MoE 推理实战

伯克利与 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 配置。

资源链接

滚动至顶部