先把结论放在前面
如果你打算把大模型装进手机,最先要接受的现实是:决定这东西能不能用的,往往不是模型多大,而是推理链路里哪一段还在裸奔。
四个阶段的时间账
一个典型的端侧截图识别任务,走下来的耗时曲线大致是这样:
| 阶段 | 手段 | 单张耗时 |
|---|---|---|
| 基线 | 通用推理框架 + 8bit 量化 + 默认 ARM 编译 | 596 秒 |
| 一 | 降到 4bit 分组量化,打开 NEON dotprod,关掉 OpenMP | 208 秒 |
| 二 | 换官方端侧运行时,动态 INT8 | 41.9 秒 |
| 三 | 切到 GPU 后端,补齐采样器 | 17.4 秒 |
| 四 | 输出契约砍到 4 个字段,引擎常驻 | 8 到 11 秒 |
值得注意的是:量化只贡献了不到一半的加速,换运行时和换后端各自带来一次数量级的跳变,而最后一步几乎没有碰模型本身,它只是重新定义了要输出什么。
为什么输出契约这么值钱
视觉大模型的解码是自回归的,token 数直接乘在总耗时上。让模型吐一个漂亮的完整 JSON,和让它只吐四个必要字段,后者可能省下几十次解码往返。约束解码(只在合法 token 上采样)能把格式幻觉和纠错成本一起省掉。这件事在端侧比在云端重要得多:云端出错可以静默重试,端侧一次重试就是十秒起步的白屏等待。
隐私不是卖点,是约束条件
选择整条链路留在设备上,代价是技术路线被锁死:不能上传截图,不能开无障碍权限读全屏,只能用一个足够小的模型硬扛。反过来这也解释了为什么 0.6B 这个量级值得投入,它是目前能在旗舰机内存红线内常驻的规模。
云端 OCR 当然更准,但支付截图里有什么:余额、商户、订单号,有时候还有卡号后四位。这类数据一旦默认上传,产品就要一直解释自己为什么值得信任。端侧方案的省事之处在于这句话不用解释,数据没出去。
三条可以直接搬走的经验
- 先立质量闸门再谈优化。没有一组固定的回归样本和通过率门槛,任何加速都无法证明效果没被一起加速掉。
- 优先怀疑工程链路,再怀疑模型规模。同一份权重换一个运行时能差出五倍,说明换个更大的模型经常是最贵的错误答案。
- 把任务定义收窄当成常规手段。字段少一点、格式硬一点,收益不比调量化比特位小。
一句提醒
端侧模型不是云端的缩小版,它是另一门工程。参数量只是入场券,能不能跑在用户手里那台机器上,取决于你愿不愿意把运行时、后端、解码约束这三件事都自己扛下来。