模型能点亮Demo,离稳定可用还有一段距离。7B权重进入内存后,微信、地图等后台应用可能被系统回收;连续生成一段时间,机身升温,Token速度随之下滑。前者取决于内存水位和进程优先级,后者还牵涉数据搬运、算子回退与整机散热。只看NPU峰值,很容易漏掉真正影响体验的部分。
手机AI面对的模型规模已经变了。腾讯科技文章提到,2017年前后,手机AI主要用于图像降噪、帧率优化和画质增强,模型通常不超过1000万参数;如今讨论的最小端侧大模型已到10亿参数,规模约为早期模型的100倍,且10亿参数级仍主要承担基础文本任务。
《科创板日报》在端侧AI轻量化的报道中提到,3B模型正逐步取代7B,并以vivo发布面向端侧智能体的3B多模态推理大模型为例。厂商缩小模型,原因很直接:手机还要同时维持操作系统、通信、相机和后台应用,模型无法独占内存与电池。
先把INT4权重这笔账算清
INT4按每个参数4 bit粗算,7B模型的原始权重理论下限约为3.5GB,14B约为7GB。这只是权重,不是应用运行时的总占用。量化比例参数、运行时缓冲区、激活值、分词器和KV Cache都要继续占内存,模型文件能够装进手机,也不代表推理过程留有足够余量。
手机标称内存不能全部交给AI应用。Android的LMK或lmkd会根据内存压力和进程优先级回收后台、缓存进程。模型进入前台时,微信、地图等应用可能成为被回收对象;模型退到后台后,自身的优先级也可能下降。所谓“杀后台”,本质上是模型与系统共同争夺有限内存。
权重分块加载或映射到闪存,可以降低一次性常驻内存,但代价会转移到I/O。推理跨层读取权重时,频繁换入容易拉长等待时间。对14B模型来说,即使某些高内存机型能够完成加载,也要继续检查首Token延迟、持续速度和后台留存,不能把“加载成功”当成部署完成。
长上下文会继续推高KV Cache
权重是相对固定的支出,KV Cache会跟着对话变长。模型结构、批次和缓存精度固定时,其占用大致随上下文长度线性增长。长文本持续输入后,即使权重没有变化,进程内存仍会不断抬高,最终触发OOM或系统回收。
一篇处理器实践文章给出的单机数据是:3B模型约占2GB内存,运行电流约750mA,并能持续处理128K长文本。这个结果可以作为配置样本,不能直接外推到所有手机。严格来说,mA是电流口径,并不等同于完整功耗;同样标注128K,不同模型的结构、KV精度和缓存压缩方式也会改变实际占用。
端侧的KV Cache优化可以从三处下手:
- 给上下文设预算。 对话达到应用设定的水位后,使用滑动窗口或摘要重写压缩早期内容,并释放对应缓存。代价是历史细节可能损失,需要按任务验证。
- 减少内存碎片。 PagedAttention一类分页方案可以避免申请超大的连续内存块,也方便复用缓存页。它改善的是分配方式,无法消除KV Cache本身的容量。
- 处理前后台切换。 用户离开推理页面后,可主动释放不再需要的KV Cache,保存精简后的会话状态。继续把完整上下文留在后台,只会提高应用和其他进程被回收的概率。
骁龙、天玑和A系列要看算子落点
骁龙8 Elite、天玑9400和A18 Pro不能只用一组峰值算力横向换算。三套芯片的运行时、算子支持和内存机制不同,同一个量化模型可能完整运行在NPU上,也可能有部分算子回退到CPU或GPU。后者往往会增加数据复制和整机功耗,NPU本身的利用率反而解释不了问题。
| 平台 | 调试时应重点观察 | 容易出现的误判 |
|---|---|---|
| 骁龙8 Elite | Hexagon NPU的算子覆盖率,以及CPU、GPU回退情况 | 峰值NPU占用高,持续Token速度就一定稳定 |
| 天玑9400 | APU与CorePilot调度下的任务落点、内存带宽和数据等待 | NPU利用率偏低,就认定是算力不足 |
| A18 Pro | Neural Engine调用、统一内存总水位和前后台切换 | UMA可以消除模型与系统之间的内存竞争 |
统一内存能减少不同计算单元各自维护独立显存的麻烦,但模型、系统和应用仍在使用同一块物理资源。骁龙和天玑平台也一样,NPU算得快,不代表权重与KV Cache能够及时送达。
跨平台压测应固定模型、量化方式、提示词、上下文和输出上限,同时记录冷启动峰值内存、首Token延迟、持续Token速度、CPU/GPU/NPU占用、系统温控状态,以及切到后台后的恢复情况。单台手机测出的温度阈值、功耗和Token/s,不宜直接写成整个芯片平台的固定结论。
调度要从装载前开始
内存溢出优化从预算开始。权重、KV Cache、运行时和系统都要留出空间,等到OOM发生后再清缓存,通常已经太晚。
- 按设备能力分档。 3B可作为多数端侧任务的优先选项;7B只在内存、温控和任务收益都允许时启用;14B保留给受控机型和实验性压测。
- 盯住算子回退。 模型量化后要重新检查目标芯片的算子支持。某一层落回CPU,可能同时拖慢速度并增加发热。
- 设置温控降级路径。 系统进入较高温控等级后,可缩短上下文和输出、降低并发,或切换到更小模型。复杂的多步推理则交给云端处理。
- 谨慎使用权重换出。 分层换入能缓解峰值内存,却会引入闪存读取等待。它更适合兜底,不能替代模型瘦身。
- 别把心跳当成LMK解法。 主动让出CPU时间片有助于响应和温控,但不会改变系统依据内存压力回收进程的逻辑。
7B适合专项任务,14B不宜做默认配置
3B成为手机端更常见的选择,反映的是产品目标变化:模型需要长期在线、随时唤起,还要和通信、相机、地图共享一块电池与内存。7B仍可用于上下文受控、任务明确的场景;14B在INT4下仅权重理论下限就约7GB,更适合高内存机型的实验性压测。
实际产品可以把意图识别、实时摘要和部分多模态感知留在本地,把重负载的多步推理交给云端。端侧工程的合格线很朴素:模型运行时,用户切回微信,后台应用还在;长文本生成后,速度没有明显塌陷;机身温度与电量消耗仍可接受。峰值算力有参考价值,但它排在持续体验之后。