You think.
AI does.

BigMoeOnEdge:在 12GB 手机上无损运行超内存 MoE 模型

BigMoeOnEdge:在 12GB 手机上无损运行超内存 MoE 模型

Run MoE models bigger than your RAM —— 在 12GB 手机、纯 CPU 上无损运行前沿级 MoE 模型

571 Stars
C++ / llama.cpp
Apache-2.0
纯 CPU 推理
12GB 手机可跑

项目地址:https://github.com/Helldez/BigMoeOnEdge  协议:Apache-2.0  Stars:571  更新:2026-09-07

AI 摘要

BigMoeOnEdge 是一款让 MoE(混合专家)模型在内存远小于模型体积的设备上无损运行的推理引擎。它基于原版 llama.cpp 构建,通过把闪存当作内存层的一部分,按需从磁盘流式读取专家权重,把手机 RAM 留给真正活跃的参数。项目支持在 12GB 手机上以纯 CPU 运行 80–90GB 级别的前沿模型(如 DeepSeek V4 Flash 0731、Qwen3.8-Flash-Next 等),并提供 Expert cache、I/O overlap、Direct I/O 等十余个调优开关,输出结果与模型完全驻留内存时字节级一致。本文将介绍其核心机制、功能特点、安装方式、性能基准与常见使用问题。

一、产品深度介绍

(一)它是什么

BigMoeOnEdge 不是另一个量化压缩工具,而是一套面向 MoE 架构的「内存外推理」引擎。它的自我定位非常直接:Run MoE models bigger than your RAM. Frontier-size MoE on a 12 GB phone, CPU only, lossless, on stock llama.cpp。

MoE 模型每 token 只激活少数专家,理论上可以把绝大多数权重留在更慢的存储里。BigMoeOnEdge 把这个特性贯彻到底:常驻非专家权重与近期热门专家,其余专家切片按需从闪存直接读取。由于只改变取权重的时机和方式,不改变计算本身,因此输出与把整份模型放进内存的运行结果完全相同——项目用 ctest 合成模型门控保证这一点。

(二)技术表现

  • 纯 CPU:不依赖 GPU/NPU,4–8 核 ARM/x86 即可运行。
  • 无损:字节级一致,由 ctest 自动化回归。
  • 模型支持:一行注册表即可添加 qwen3moe、qwen35moe、qwen2moe、gemma4、gpt-oss、lfm2moe、deepseek4、bailingmoe3、qwen4exp 等架构。
  • 量化兼容:所有 llama.cpp 格式开箱即用(Q4_K_M、Q2_K、UD-IQ3_XXS、MXFP4 等)。
  • 多分片 GGUF:原生读取 Hugging Face 多分片 gguf,>50GB 模型无需合并。
  • 实测:12GB 手机上 DeepSeek V4 Flash 0731(284B/约 91GB)可达约 0.94 tok/s;Qwen3.8-Flash-Next(125B/约 80GB Q2_K)可达约 3.48 tok/s。
小黑正在把超大 MoE 模型的专家切片按需流式喂给手机 RAM
小黑配图:远超手机 RAM 的 MoE 模型被切成专家块,小黑按需从闪存抽取切片喂给小 RAM 盒,最终无损输出文字 token。

二、主要功能特点与应用场景

BigMoeOnEdge 把功能分成无损与有损但可复现两类,用户可以根据速度/质量需求选择。

无损流式读取

  • Expert cache(–cache-mb):常驻热门专家,缓存命中即可完全走内存。
  • Cache ceiling(–cache-ceil-mb):限制 auto 模式申请上限,防止挤占系统。
  • Parallel I/O lanes(–io-threads):并行读取专家切片,提高闪存吞吐。
  • Direct I/O(–no-odirect):绕过操作系统页缓存,避免双重拷贝。
  • I/O and compute overlap(–overlap):计算当前 token 时预取下一轮专家。
  • Dense weights(–dense-weights):非专家权重驻留策略(mmap/warm/anon/ahwb)。
  • Row-gathered tables(–row-stream):embedding 等稠密表按行从闪存读取。
  • Release the model mapping(–release-mmap):加载后取消 gguf 映射,Windows 实测解码速度提升约 46%。

可调优速度与质量

  • Drop cold experts(–drop-cold-experts):跳过缓存未命中的低分专家。
  • Active experts(–n-expert-used):减少每 token 激活专家数,有损但可复现。
  • Guess ahead(–mtp/–ngram):草稿验证多 token,无损。
  • Route-ahead(–route-ahead):提前提交路由(有损,实验性)。

应用场景

  1. 远超 RAM 的模型:约 60–90GB 模型在 12GB 手机上可用。
  2. 略超 RAM 的模型:18–22GB 模型稳定 5 tok/s,避免缺页风暴。
  3. 刚好塞入的模型:用上限缓存避免挤占系统资源,保证手机其余功能可用。

三、如何安装与使用

手机(免构建)

从 latest release 下载 APK,安装后打开「Get a model」卡片选择模型目录,下载完成即可开始聊天。应用支持直接输入任意 gguf URL,也支持多分片集合同目录下指向首片。

Host 构建

Linux/macOS 上推荐用官方脚本构建:

git clone --recursive https://github.com/Helldez/BigMoeOnEdge.git
cd BigMoeOnEdge
scripts/build-host.sh

近 RAM 模型示例:

build/cli/bmoe-cli -m Qwen3-30B-A3B-Q4_K_M.gguf --moe-stream \
  --cache-mb auto --cache-ceil-mb 4000 --io-threads 4 -t 4 -n 48 \
  --chatml -p "Explain MoE routing."

远超 RAM 模型示例:

build/cli/bmoe-cli -m gpt-oss-120b-Q4_K_M.gguf --moe-stream --overlap \
  --dense-weights anon --cache-mb 2000 --io-threads 8 -t 4 -n 256 \
  --chatml --no-think -p "Explain MoE routing."

Windows 需用 CMake + MSVC 直接构建,二进制位于 build\cli\Release\bmoe-cli.exe;macOS 同源构建,无 O_DIRECT,使用 F_NOCACHE 替代;Android 可用 scripts/build-android.ps1 编 arm64 CLI 与 APK,也可直接下载 release 附带的预建 debug APK。

验证字节一致性:构建后执行 cd build && ctest –output-on-failure,需要 python3 与 gguf 包。

四、官方地址与获取方式

五、与同类方案对比

对比维度 BigMoeOnEdge 普通 mmap / 整模型驻留 云端 API
内存要求 远小于模型体积 必须容纳完整模型 终端几乎无要求
离线运行 是 是 否
无损输出 是(ctest 门控) 是 取决于服务商
纯 CPU 手机 是,核心目标 大模型基本不可用 不适用
隐私 完全本地 完全本地 上传云端
适用模型 MoE GGUF 任意 GGUF 不限

六、核心机制深度解析

BigMoeOnEdge 的核心直觉是「把闪存当作内存层级的一部分」。传统运行时把模型文件映射或完全加载到 RAM,一旦模型大于 RAM,手机会进入缺页风暴,系统被杀或速度崩溃。BigMoeOnEdge 只保留两部分常驻:非专家稠密权重(embedding、norm、router 等),以及通过 cache 策略选出的热门专家。

路由层决定当前 token 需要哪些专家
→
命中缓存直接走 RAM 计算
→
未命中从闪存流式读取专家切片
→
计算结果与全驻留一致
→
输出 token无感扩展内存

为了降低延迟,引擎提供并行 I/O lanes、overlap 预取、Direct I/O 绕过 OS 页缓存、row-stream 按行读取稠密表等机制。由于计算图本身未变,输出与全驻留模型完全一致。项目为此设计了合成 MoE 模型(scripts/make-tiny-moe.py)并在 CI 中通过 ctest 进行字节级回归。

七、实用技巧

  • 缓存上限要锁死:–cache-mb auto 让引擎自动决定常驻专家缓存;再用 –cache-ceil-mb 限定上限,避免挤占系统。
  • 多通道 I/O:–io-threads 4~8 在 UFS 4.x 手机上通常能显著提升吞吐;NVMe 桌面可再提高。
  • overlap 对远超 RAM 模型收益最大:计算时预取下轮专家,把 I/O 等待藏到计算后面。
  • Windows 开 release-mmap:–release-mmap 加载后取消 gguf 映射,官方测试解码速度提升约 46%。
  • 稠密权重策略:手机用 –dense-weights ahwb,桌面可用 mmap 或 anon,根据是否希望常驻选择。
  • 实时遥测:–progress 查看每 token 的闪存 I/O、缓存命中与计算拆分;–csv 附加内存快照,便于调优缓存大小。

八、最新更新动态

项目当前已有 373 个 commit,最新提交为 2026-09-07(commit 74ba18f,信息 docs(changelog): close 0.24.0)。应用版本迭代到 0.24.0,之前的 0.22.0、0.23.0 逐步完善了 Android 演示应用、实时遥测面板与多模型支持。

仓库 docs/ 目录提供了 architecture.md、telemetry.md、adding-a-model.md、roadmap.md、benchmarks.md、community-benchmarks.md 等文档。其中 adding-a-model.md 说明新架构只需在注册表中添加一行即可接入 BigMoeOnEdge 的流式系统,这也解释了项目为何能快速跟进 Qwen3.8-Flash-Next、DeepSeek V4 Flash 等前沿模型。

九、常见问题 FAQ

Q1:必须 root 手机吗?

不需要。但模型文件必须放在真实文件系统(如 /data/local/tmp/),不要放在 /sdcard 等 FUSE 层上,否则顺序读取会被严重放大。

Q2:支持非 MoE 模型吗?

BigMoeOnEdge 的设计围绕 MoE 的专家稀疏性。普通稠密模型也能跑,但性能优势主要来自「每 token 只激活一小部分专家」。

Q3:GPU/NPU 能加速吗?

当前版本纯 CPU。作者把手机作为核心焦点,因此没有引入 GPU/NPU 推理路径;llama.cpp 公共 API 的兼容层仍是 CPU backend。

Q4:模型从哪里下载?

README 与 Android 应用内置「Get a model」列出推荐模型;也可直接提供任意 gguf URL 或本地多分片集合同目录下指向首片。

Q5:为什么是无损的?

因为只改变权重加载方式,不改变计算内核与采样逻辑。ctest 用合成模型对比全驻留与流式输出,保证字节一致。

十、总结

BigMoeOnEdge 提供了一种新的边缘推理思路:不是把模型变小,而是把内存当成「热缓存」、把闪存当成「扩展内存」。它利用 MoE 的稀疏性,只把每 token 真正需要的专家从闪存即时调入,从而在手机等 RAM 远小于模型体积的设备上实现无损、纯 CPU 的大模型推理。对于需要在本地离线跑前沿 MoE 模型的开发者、极客与隐私敏感场景,这是一套值得关注的工程方案。

⚠️ 合规提示
项目采用 Apache-2.0 协议,商用与二次开发均较宽松,但具体使用仍需阅读 LICENSE 全文。运行模型时请遵守模型提供方的服务条款与许可协议,并注意生成内容的合规性。

在撰写本文的过程中,我主要参考了 Helldez/BigMoeOnEdge 仓库的 README.md、CHANGELOG.md、docs/ 目录下的 architecture.md、telemetry.md、benchmarks.md 与 adding-a-model.md,以及 GitHub 公开的 star/fork/license 信息。文中性能数据以官方公开基准为准,可能随版本更新而变化。

# MoE
# llama.cpp
# 开源项目
# 开源工具
# GitHub
# 边缘推理
# 大模型

本文由 AI 辅助整理,基于 BigMoeOnEdge(Helldez/BigMoeOnEdge)的公开文档撰写;配图由 小黑 IP 生成。内容仅用于技术介绍,不构成商业使用授权建议。

未经允许不得转载:AI智汇具 - AI工具推荐与技能教程_好用的AI工具大全 » BigMoeOnEdge:在 12GB 手机上无损运行超内存 MoE 模型

评论 抢沙发

登录

找回密码

注册