安卓端流式跑120B MoE
dai_app · reddit · 2026-07-18
作者在一台 OnePlus 15R 安卓手机上,用约 11GB 可用内存、纯 CPU 和闪存,运行了包括 GPT-OSS-120B、Qwen 30B、Gemma 26B 在内的多个大模型,速度大约在 1–5 tok/s。 ### 核心思路 - 利用 MoE 结构:每个 token 只激活少数专家,不必把全部 60GB 权重常驻内存 - 通过 O_DIRECT 从闪存按需读取专家权重,配合小缓存和异步读取 - 结果与“完整加载到 RAM”的推理**逐 token 一致**,CI 里也有一致性测试 ### 工程细节 - 底层不是 fork llama.cpp,而是通过公开 callback 和 gguf API 接入 - 新 MoE 模型只需在 registry 里加一行 - qwen3moe、qwen2moe、gemma4、gpt-oss 都已可用 ### 实测表现 - GPT-OSS-120B:约 1.3 tok/s - Qwen3-30B:约 5.2 tok/s - Gemma-4-26B:约 4.1 tok/s ### 难点 真正麻烦的不是流式读取,而是 Android 在内存压力下会回收驻留权重,导致生成过程中不断重新分页;作者认为这部分几乎占了主要工作量。项目采用 Apache-2.0,已经提供预编译 APK。