AI 工具 | | 约 5 分钟 | 1,740 字

Flash-MoE:MacBook 上跑动 397B 大模型

纯 C/Metal 实现,在 48GB 内存的 MacBook Pro 上运行 3970 亿参数混合专家模型,达到 4.4+ tokens/秒

背景

本地运行大模型一直是开发者的梦想,但 3970 亿参数的模型通常需要昂贵的专业硬件。Flash-MoE 项目打破了这一限制——只需要一台 48GB 内存的 MacBook Pro,就能以 4.4+ tokens/秒的速度运行 Qwen3.5-397B 模型。

整个项目无 Python,无框架,仅使用 C、Objective-C 和手写的 Metal shader。

技术架构

混合专家模型(MoE)

Flash-MoE 运行的是 Qwen3.5-397B-A17B,这是一个混合专家(Mixture of Experts)模型:

组件规格
参数量3970 亿(397B)
Transformer 层数60 层(45 层 GatedDeltaNet + 15 层标准注意力)
专家数量512 个,每 token 激活 K=4 个 + 1 个共享专家
隐藏维度4096

核心创新:SSD 专家流式加载

模型权重达 209GB,显然无法全部装入内存。Flash-MoE 的解决方案是从 NVMe SSD 按需流式传输

  • 激活的 K=4 个专家权重按需从 SSD 读取(每个约 6.75MB)
  • 交由 OS 页面缓存自动管理(约 35GB 可用缓存)
  • 页面缓存命中率达到约 71%

手写 Metal Shader 优化

项目实现了多项 GPU 优化:

  1. FMA 优化的反量化内核:将 (nibble * scale + bias) * x 重排为 fma(nibble, scale*x, bias*x),让 GPU 融合乘加单元一步完成,速度提升 12%

  2. 延迟 GPU 专家计算:CMD3(前向传播)提交后不等待,GPU 执行的同时 CPU 准备下一层

  3. Accelerate BLAS 加速线性注意力:使用 cblas_sgemv 等加速 GatedDeltaNet,64% 速度提升

性能表现

配置速度质量说明
4-bit 专家 + FMA4.36 tok/s优秀生产配置,完整工具调用支持
4-bit 专家(基线)3.90 tok/s优秀FMA 优化前
2-bit 专家5.74 tok/s良好**JSON/工具调用有问题

使用方法

# 编译
cd metal_infer && make

# 4-bit 推理
./infer --prompt "Explain quantum computing" --tokens 100

# 交互式聊天(带工具调用)
./chat

# 分层计时分析
./infer --prompt "Hello" --tokens 20 --timing

内存管理

Flash-MoE 的内存控制非常精细:

  • 非专家权重:5.5GB(mmap’d,只读)
  • Metal scratch 缓冲区:~200MB
  • 总计仅 ~6GB,剩余 42GB 留给 OS 页面缓存
  • 无 OOM 风险,专家数据按需从 SSD 流式传输

总结

Flash-MoE 展示了几个重要趋势:

  1. 消费级硬件也能跑大模型:通过创新的 MoE 架构和 SSD 流式加载,397B 模型首次可以在消费级设备上运行
  2. 纯系统编程的力量:不用 Python,不用框架,C + Metal 也能写出高性能推理引擎
  3. GPU 和 SSD 协同:利用统一内存架构和高速 SSD 带宽,是未来大模型部署的重要方向

项目地址:danveloper/flash-moe

评论

加载中...

相关文章

分享:

评论

加载中...