1. 手机跑大模型这件事,先把预期拉回地面
端侧大模型这个词这两年热度一直没降过,但真正动手在手机上部署过模型的人都知道,宣传和实际体验之间有一条不小的鸿沟。我前后在几台不同芯片方案的手机上折腾过端侧推理,从最早的量化小模型到后来的MoE架构尝试,踩过的坑比跑通的模型多得多。这篇内容不打算给你画饼,而是把手机到底能跑什么模型、跑起来是什么体验、哪些参数是硬门槛,一条条拆开讲清楚。
先把结论摆出来:目前主流旗舰手机能比较流畅运行的,是参数量在1B到4B之间、经过4bit量化的模型;7B到8B的模型在旗舰机上能跑但速度勉强可用;14B以上的模型基本只能算“能加载”,实际交互体验很差。而MoE架构的出现,让手机端跑更大参数量模型有了新的可能性,但也不是没有代价。
这篇文章适合三类人看:一是想在手机上本地跑模型、对隐私和离线有需求的普通用户;二是正在做端侧AI应用开发、需要选型和评估可行性的开发者;三是单纯好奇手机NPU到底能干什么的技术爱好者。不管你是哪一类,我都会把原理、实操、参数计算和踩坑经验讲透,让你看完能自己判断手里的设备到底能跑什么。
需要提前说明的是,端侧推理的性能受芯片、内存带宽、散热、系统调度等多重因素影响,同一款模型在不同手机上的表现可能差出一倍以上。所以下面给出的数据都是基于常见旗舰平台的实测范围,不是绝对值,你手里的设备具体表现还需要自己跑一遍才知道。
2. 决定手机能跑什么模型的四个硬指标
很多人一上来就问“我的手机能跑70B吗”,这个问题本身就问错了方向。手机能不能跑某个模型,不取决于模型名字好不好听,而取决于四个硬指标:内存容量、内存带宽、NPU算力、以及散热能力。这四个里面任何一个拖后腿,整体体验就会崩。
2.1 内存容量决定模型能不能装下
模型加载到内存里,占用的空间主要由参数量和量化精度决定。计算公式不复杂:
模型内存占用 ≈ 参数量 × 每参数字节数
以4bit量化为例,每个参数占0.5字节。一个7B模型,理论占用约3.5GB,加上推理时的KV Cache、运行时开销,实际需要4.5GB到5GB左右的可用内存。而手机的内存还要分给系统、后台应用,所以12GB内存的手机,实际能给模型用的可能只有6GB到7GB。
这里有个容易被忽略的点:KV Cache的大小会随着上下文长度线性增长。你设置2048的上下文和8192的上下文,内存占用能差出好几个GB。很多人在手机上跑模型时只算了模型本身的体积,忘了给KV Cache留空间,结果一加载就OOM(内存溢出)。
| 参数量 | 4bit量化模型体积 | 建议可用内存 | 典型上下文 |
|---|---|---|---|
| 1B | 约0.6GB | 2GB | 4096 |
| 2B | 约1.2GB | 3GB | 4096 |
| 4B | 约2.4GB | 4GB | 4096 |
| 7B | 约4.0GB | 6GB | 2048 |
| 8B | 约4.5GB | 7GB | 2048 |
| 14B | 约8.0GB | 12GB | 1024 |
从这张表能看出来,为什么12GB内存是端侧大模型的一个分水岭。低于这个容量,7B以上的模型基本没戏;达到16GB,才能比较从容地跑8B模型并保留足够的上下文空间。
2.2 内存带宽才是真正的速度瓶颈
这是最容易被忽视、但影响最大的指标。大模型推理是典型的内存带宽敏感型任务,每生成一个token,都需要把模型权重从内存读一遍。所以生成速度的上限,基本由内存带宽除以模型体积决定。
举个具体的例子:一台手机的内存带宽是50GB/s,跑一个4GB的7B模型,理论上的token生成速度上限是:
50GB/s ÷ 4GB ≈ 12.5 tokens/s
这是理论上限,实际因为计算开销、调度损耗,能跑到8到10 tokens/s就算不错了。而如果换成2GB的4B模型,同样带宽下理论上限就变成25 tokens/s,实际能到15到20 tokens/s,体验就流畅很多。
这就是为什么小模型在手机上体验明显更好的根本原因——不是算力不够,是带宽被模型体积吃掉了。旗舰手机的内存带宽普遍在50到70GB/s之间,部分游戏手机能到80GB/s以上,但和桌面显卡动辄500GB/s以上的带宽完全不是一个量级。
2.3 NPU算力决定的是“能不能加速”而非“能不能跑”
很多人以为NPU是端侧大模型的关键,其实NPU主要影响的是prefill阶段(也就是处理输入prompt的速度)和部分矩阵运算的加速。对于decode阶段(逐token生成),瓶颈还是在内存带宽上。
目前主流手机NPU的算力在10到50 TOPS之间,听起来不小,但NPU的软件生态远不如GPU成熟。很多推理框架对NPU的支持还停留在特定算子、特定量化格式上,你拿一个GGUF格式的模型想直接跑在NPU上,大概率会碰到“no lm runtime found for model format 'gguf'”这类报错。
实际部署时,NPU能加速的部分主要是矩阵乘法和注意力计算,但模型加载、KV Cache管理、采样这些环节还是得靠CPU和GPU配合。所以NPU有用,但不是万能钥匙,别指望开了NPU就能让7B模型跑出14B的速度。
2.4 散热决定了能跑多久
这个指标最容易被忽略,但实际体验中影响巨大。手机跑大模型时,CPU、GPU、NPU全都在高负载运转,发热量远超日常使用。大部分旗舰手机在持续推理5到10分钟后就会触发降频,速度可能直接腰斩。
我实测过几台机器,跑7B模型时,前3分钟能稳定在8 tokens/s左右,5分钟后降到5 tokens/s,10分钟后可能只有3 tokens/s。这不是模型的问题,是散热压不住。所以如果你打算长时间用手机跑模型,要么控制单次对话长度,要么给手机加个散热背夹,要么就接受速度衰减的现实。
3. MoE架构给手机端带来了什么变量
MoE(混合专家)架构是这两年端侧大模型讨论里绕不开的话题。它的核心思路是:模型总参数量可以很大,但每次推理只激活其中一部分专家,所以实际计算量和内存读取量远小于同等参数量的稠密模型。
3.1 MoE为什么适合端侧场景
稠密模型的问题是,不管输入是什么,所有参数都要参与计算。而MoE模型里,每个token只会被路由到少数几个专家,比如8个专家里激活2个。这意味着:
- 计算量降低:实际参与运算的参数量可能只有总参数量的四分之一到三分之一
- 内存读取量降低:虽然模型文件还是那么大,但每次推理只需要读取激活的那部分专家权重
- 推理速度提升:在同等总参数量下,MoE的token生成速度通常比稠密模型快不少
但这里有个关键前提:MoE模型的文件体积并没有变小。你下载一个总参数量30B的MoE模型,文件还是那么大,内存里还是得装下所有专家。所以MoE解决的是速度问题,不是容量问题。手机内存不够,照样装不下。
3.2 手机上跑MoE的实际体验
目前能在手机上跑的MoE模型,主要是总参数量在8B到14B之间、激活参数量在2B到4B之间的方案。这类模型的实际推理速度,接近同等激活参数量的稠密模型,但知识容量和表达能力更接近总参数量。
我实测过一个总参数量8B、激活2B的MoE模型,在旗舰手机上能跑到12到15 tokens/s,比同体积的稠密7B模型快不少。但代价是模型文件还是8B的体积,内存占用没有减少,而且MoE的路由机制会带来额外的调度开销,在低端芯片上反而可能更慢。
注意:MoE模型对推理框架的支持要求更高,不是所有端侧推理工具都能正确处理专家路由。部署前一定要确认框架版本是否支持MoE结构,否则可能出现加载成功但输出乱码的情况。
3.3 MoE不是万能药,选型要看场景
如果你的手机内存充足(16GB以上),又想要比7B稠密模型更好的知识覆盖,MoE是值得尝试的方向。但如果内存本来就紧张,MoE并不会帮你省内存,反而可能因为路由开销让体验更差。
另外,MoE模型在端侧的量化方案还不如稠密模型成熟。很多MoE模型只有特定量化版本能在手机上跑,选择面比稠密模型窄。所以现阶段,MoE在手机端更像是“锦上添花”而不是“雪中送炭”。
4. GGUF格式在手机上的部署实操与坑
GGUF是目前端侧推理最常用的模型格式之一,它的优势是把模型权重、量化信息、tokenizer配置打包在一个文件里,加载方便,兼容性好。但在手机上部署GGUF模型,还是有不少细节要注意。
4.1 GGUF模型放在哪里
这是新手最常问的问题。不同推理工具对模型路径的要求不一样,但通用原则是:
- Android系统:通常放在应用私有目录或外部存储的特定文件夹下。很多工具默认读取
/sdcard/Download/或应用自己的files目录。如果你用的是命令行工具,需要手动指定完整路径。 - iOS系统:受沙盒限制,模型文件需要通过应用内导入或iCloud同步,不能随便放。
实际部署时,建议把模型放在应用能直接访问的目录,避免权限问题导致加载失败。如果工具支持自定义模型路径,优先用绝对路径,减少歧义。
4.2 量化等级怎么选
GGUF支持多种量化等级,从Q2到Q8不等。数字越小,模型体积越小,但精度损失越大。手机端的选择逻辑是:
| 量化等级 | 7B模型体积 | 质量损失 | 手机端建议 |
|---|---|---|---|
| Q2_K | 约2.5GB | 明显 | 不推荐,输出质量差 |
| Q3_K_M | 约3.0GB | 较明显 | 内存极度紧张时考虑 |
| Q4_K_M | 约4.0GB | 轻微 | 推荐,平衡最好 |
| Q5_K_M | 约4.8GB | 很小 | 内存充足时推荐 |
| Q6_K | 约5.5GB | 极小 | 手机端偏大 |
| Q8_0 | 约7.0GB | 几乎无损 | 手机端不实用 |
我的经验是,Q4_K_M是手机端的甜点。它在体积和质量之间取得了最好的平衡,大部分场景下输出质量和Q8差别不大,但体积小了近一半。Q3虽然更小,但在中文任务上经常出现明显的语义偏差,不太建议。
4.3 常见报错与排查思路
手机上跑GGUF模型,最容易碰到这几类问题:
第一类:格式不兼容。典型报错是“no lm runtime found for model format 'gguf'”,这通常是因为推理工具版本太老,不支持GGUF的新版本,或者模型用了工具不认识的量化类型。解决办法是升级推理工具,或者换一个量化版本。
第二类:内存不足。加载到一半崩溃,或者系统直接杀掉应用。这时候要检查模型体积加上KV Cache是否超过了可用内存。可以尝试降低上下文长度、换更小的量化等级、或者关闭后台应用释放内存。
第三类:速度异常慢。如果速度远低于预期,先检查是不是跑在了CPU上而不是GPU/NPU上。很多工具默认用CPU推理,需要手动开启GPU加速。另外检查手机是否在省电模式,省电模式会限制CPU频率。
第四类:输出乱码或重复。这通常是量化损失过大或者tokenizer配置不对导致的。换一个量化等级,或者确认模型文件和tokenizer是否匹配。
5. 不同芯片平台的端侧推理表现差异
手机端侧推理的性能,芯片平台的影响非常大。同样是7B模型,不同芯片的手机跑出来的速度可能差一倍以上。这里不列具体型号,只讲平台差异和选型逻辑。
5.1 高通平台:生态最成熟
高通在端侧AI上的投入比较早,它的NPU和GPU对主流推理框架的支持相对完善。很多端侧推理工具会优先适配高通平台,所以如果你用的是高通旗舰芯片的手机,能跑的工具和模型选择面最广。
实际表现上,高通旗舰跑4B模型能到20 tokens/s以上,7B模型能到8到12 tokens/s。NPU加速开启后,prefill阶段的速度提升明显,但decode阶段受带宽限制,提升有限。
5.2 联发科平台:性能接近,生态稍弱
联发科旗舰芯片的NPU算力不输高通,内存带宽也接近,但软件生态稍弱一些。部分推理工具对联发科NPU的支持还在完善中,可能需要等版本更新。
实测速度和高通平台差距不大,4B模型能到18到22 tokens/s,7B模型在7到10 tokens/s左右。如果你用的是联发科旗舰,大部分主流工具都能跑,但可能需要多试几个版本找到最稳定的组合。
5.3 苹果平台:内存带宽有优势
苹果的A系列和M系列芯片,内存带宽一直是个优势。iPhone Pro系列的内存带宽能到50GB/s以上,配合统一内存架构,跑端侧模型的速度表现不错。
但iOS的沙盒限制比较严,模型文件管理和工具选择不如Android灵活。适合用已经适配好的App,自己折腾的空间小一些。
5.4 选型建议
如果你打算专门买一台手机跑端侧模型,优先考虑:16GB以上内存、旗舰芯片、散热好。这三个条件满足,基本能覆盖4B到8B模型的流畅运行。如果只是偶尔玩玩,手里的12GB旗舰也够跑4B模型,体验不会太差。
6. 实际能跑什么:按场景给建议
说了这么多参数和原理,最后还是得落到“到底能跑什么”上。我按使用场景给几档建议,你可以对号入座。
6.1 日常问答和文本处理:4B模型足够
如果你只是想找个离线的问答助手,处理一些文本总结、翻译、改写之类的任务,4B级别的模型完全够用。这个级别的模型在手机上能跑到15到20 tokens/s,交互体验接近在线服务,而且内存占用可控,12GB手机就能跑得很舒服。
推荐量化等级Q4_K_M,上下文设2048到4096,兼顾速度和记忆能力。这个配置下,模型能记住前面几轮对话,处理千字以内的文本没问题。
6.2 复杂推理和代码辅助:7B到8B是门槛
如果你需要模型做逻辑推理、写代码、处理复杂指令,4B模型的能力就不太够了,得上7B到8B。但这个级别对手机的要求明显提高:需要16GB内存、旗舰芯片、好的散热。
实际体验上,7B模型在手机上能跑,但速度在5到10 tokens/s之间,长回复会等得比较久。适合不赶时间的场景,比如睡前让它慢慢写一段代码,或者处理一个复杂的分析任务。
6.3 大参数量模型:现阶段不实用
14B以上的模型,在手机上基本只能算“能加载”。速度可能只有2到3 tokens/s,生成一段200字的回复要等一分多钟,交互体验很差。而且内存占用大,容易触发系统杀后台。
除非你有非常特殊的离线需求,否则不建议在手机上跑14B以上的模型。真需要大模型能力,远程调用或者用桌面设备更实际。
6.4 MoE模型的定位
MoE模型适合那些“想要7B以上知识量、但能接受8B内存占用”的场景。它的速度比同体积稠密模型快,但比同激活参数量的稠密模型慢。如果你手机内存够大,又觉得7B稠密模型不够聪明,可以试试MoE。
但别指望MoE能让你在12GB手机上跑出30B的效果,内存这道坎绕不过去。
7. 几个容易被忽略的实操细节
最后分享几个我在实际部署中总结的细节,都是文档里不会写、但实际会碰到的。
第一,模型文件传输别用蓝牙。大模型文件动辄几个GB,蓝牙传输慢且容易中断。用数据线或者局域网传输更靠谱。传输完记得校验文件完整性,损坏的模型文件会导致加载失败或输出异常。
第二,注意手机的存储格式。部分手机默认用F2FS或exFAT,对超大文件的支持没问题,但如果你的模型放在SD卡上,要确认SD卡格式支持4GB以上单文件。FAT32格式的SD卡存不下大模型文件。
第三,后台应用要清理。手机的内存管理比较激进,后台应用多了会挤占模型可用内存。跑模型前清一下后台,能明显降低OOM的概率。
第四,温度影响很大。夏天在户外跑模型,手机温度上来后速度衰减比室内明显得多。如果要在高温环境用,最好配个散热背夹,或者降低并发请求。
第五,别迷信跑分。不同工具、不同参数设置下的速度差异很大,同一个模型换个上下文长度、换个采样策略,速度可能差出30%。所以看到别人说“我的手机能跑20 tokens/s”,先问清楚是什么模型、什么量化、什么上下文,再判断自己的设备能不能达到。
第六,电池消耗要有预期。端侧推理是重度负载,跑模型时手机耗电速度可能是日常使用的3到5倍。长时间跑模型建议插着电,否则电池掉得比你想象得快。
第七,模型更新要跟进。端侧推理工具和模型格式都在快速迭代,半年前跑不动的模型,可能新版本工具就支持了。定期更新工具和模型,能解锁新的可能性。
这些细节看起来琐碎,但实际部署时每一个都可能让你卡半天。提前知道,能省不少时间。