散热降频与电池消耗:手机本地推理的物理代价
三条硬约束(软件改不了)
- 散热:持续推理 10 分钟开始降频,7B 速度会从 12 tok/s 掉到 5 tok/s
- 电池:本地 7B 一小时对话约消耗 20–30% 电量
- 持续负载:CPU + GPU + NPU 同时跑推理,是手机最耗电的场景之一
这些是手机物理硬件的客观限制——任何本地 LLM 推理都要面对,Operit 也不例外。
降频阈值
骁龙 8 系手机的典型降频曲线(社区实测):
| 运行时间 | 核心温度 | CPU 频率 | 推理速度变化 |
|---|---|---|---|
| 0–5 分钟 | 40–50°C | 全核 3.x GHz | 稳定 12 tok/s |
| 5–10 分钟 | 50–55°C | 大核降频到 2.5 GHz | 轻微降到 10 tok/s |
| 10–20 分钟 | 55–60°C | 大核锁 2 GHz | 明显降到 7 tok/s |
| 20+ 分钟 | 60°C+ | 全核锁低频 | 掉到 4–6 tok/s |
不同品牌 ROM 温控策略不同——小米、iQOO 偏激进(发热大但降频慢),华为、OPPO 偏保守(温度低但降频快)。
电池消耗
| 场景 | 每小时消耗 | 备注 |
|---|---|---|
| 待机(Operit 后台) | ~2% | HTTP API 开启略有增加 |
| 标准档云端对话 | ~3–5% | 主要是屏幕耗电 |
| MNN 1.5B 本地对话 | ~10–15% | NPU 参与推理 |
| llama.cpp 7B 本地对话 | ~20–30% | CPU + GPU 满载 |
| 视频处理 / ffmpeg | ~25–35% | CPU 满载 + 屏幕 |
实测参考
- 骁龙 8 Gen 2 手机,7B Q4 llama.cpp 连续对话 1 小时:
- 电量从 85% → 58%(耗 27%)
- 手机背部温度 62°C 左右
- 10 分钟后推理速度从 11 tok/s 降到 6 tok/s
缓解措施
降低推理负载
- 用更小的模型:7B → 1.5B,速度快 2 倍,耗电降一半
- 用 MNN 代替 llama.cpp:同量级 MNN 省电一些(NPU 优化更好)
- 混合策略:简单对话本地 1.5B,复杂任务切云端
散热
- 充电时使用:插电 + 低电量模式反而可能降频,尽量插电但保持 20–80% 区间充电
- 裸机 / 薄壳:厚壳影响散热
- 通风处使用:放桌面比握手里好
- 物理降温:真的需要长时间推理可以放冰袋(但别弄湿了)
电池寿命
长期高负载推理会加速电池老化——避免边充边高负载:
- 充到 80% 后拔充电器再用
- 推理过程中保持屏幕亮度中低
- 非必要时用云端模型(省电)
系统设置
- 电池优化设为「不限制」Operit(防止后台被杀)
- 但推理时不要开高性能模式(反而更热)
- 关闭不必要的后台应用释放内存
实用建议
什么时候用本地模型
- 通勤路上:充电线 + 短时间使用(10–20 分钟),不会触发严重降频
- 离线环境:没有网络只能用本地,用 1.5B 以下
- 敏感内容:需要隐私时忍一下速度
什么时候切云端
- 长时间对话:10+ 分钟的长对话用云端,避免发热降频
- 重度推理:需要复杂分析、长代码、多步推理时用云端大模型
- 外出没充电:省电量,优先云端
不建议
- 不要在主力手机上长时间本地推理——电池老化 + 发热可能影响其他功能
- 不要边充边跑 7B 满负载——最伤电池的组合
- 不要期望手机当 PC 替代品——物理天花板决定了应急和碎片时间是它的最佳场景