
1. 手机跑大模型这件事到底靠不靠谱先说结论靠谱但有前提。2024年下半年到现在我陆续在几台手机上折腾过本地大模型部署从骁龙8 Gen 2的老旗舰到A17 Pro的iPhone再到一台吃灰多年的骁龙778G中端机实测下来最直观的感受是——手机跑LLM不是噱头但它有非常明确的适用边界。所谓“手机本地部署LLM”指的是把大语言模型的权重文件下载到手机存储里通过推理框架在设备端完成全部计算不依赖云端API不产生网络请求。这件事能解决几个很实际的问题一是隐私敏感场景比如你要处理合同草稿、个人笔记、医疗记录数据不出设备二是离线场景飞机上、地铁里、信号差的工地照样能用三是零成本调用不用按token付费想怎么问就怎么问。适合谁来参考这篇内容如果你是对AI好奇的普通用户想体验一下“手机里装个ChatGPT”是什么感觉那这篇能帮你少走弯路如果你是开发者想在自己的App里集成端侧推理能力那这篇里的框架选型和参数调优经验可以直接抄作业如果你只是听说过“本地部署”这个词但完全不知道从哪下手那更好我会从最基础的概念开始讲。但我也得先把丑话说在前面手机跑LLM7B参数是当前的主流甜点区再大就要看设备脸色了。量化到4bit的7B模型文件大小大约4GB左右推理时内存占用在5-6GB这意味着你的手机至少要有8GB RAM才能比较从容地跑起来。4GB RAM的手机不是不能跑但只能跑1B-3B的小模型效果会打折扣。至于iPhone得益于统一内存架构8GB RAM的Pro系列机型跑7B模型比同内存的Android机更稳这一点后面会详细说。2. 先搞清楚你要跑什么模型选型与量化基础2.1 模型参数规模和手机硬件的对应关系很多人一上来就问“哪个模型最好”这个问题在手机端没有标准答案因为模型效果和硬件负担是一对矛盾。我整理了一张实测对照表你可以直接根据自己的手机配置对号入座手机RAM推荐模型规模量化等级文件大小推理速度tokens/s体验评价4GB1B-1.5BQ4_K_M0.8-1.2GB8-15能跑但回答质量有限6GB3BQ4_K_M2-2.5GB6-12日常问答够用8GB7B-8BQ4_K_M4-5GB4-8主流体验推荐12GB7B-8BQ5_K_M5-6GB3-6质量更好速度略降16GB13BQ4_K_M7-8GB2-4旗舰专属发热明显这里解释一下量化这个概念。原始的大模型权重是16位浮点数FP167B模型就是14GB左右手机根本装不下。量化就是把每个权重从16位压缩到4位或5位整数文件大小直接砍到四分之一左右代价是精度损失。Q4_K_M是目前公认的“性价比之王”——K代表使用了k-quant量化方法M代表中等质量在4bit量化里属于平衡得最好的档位。注意不要盲目追求Q8量化虽然精度更高但文件大小翻倍手机内存根本扛不住。Q4_K_M和Q5_K_M是手机端的合理选择。2.2 哪些模型适合手机端不是所有模型都适合塞进手机。我试过的模型里以下几类表现比较突出Gemma 2 2B/9BGoogle出的轻量模型2B版本在4GB内存手机上跑得很流畅9B版本需要12GB以上内存。它的优势是对话质量在同等规模里属于第一梯队而且对中文支持还不错。Phi-3 Mini3.8B微软出品3.8B参数在6GB内存手机上表现稳定。这个模型的特点是推理能力强数学和逻辑题做得比同规模模型好但中文能力一般适合英文场景。Qwen 2.5 7B阿里通义千问的开源版本中文能力在7B级别里是第一梯队。4bit量化后约4.5GB8GB内存手机能跑但速度偏慢实测骁龙8 Gen 2大约5-6 tokens/s。Llama 3.2 3BMeta最新轻量模型3B参数在6GB内存上跑得很舒服英文对话流畅中文勉强能用。DeepSeek-R1-Distill-Qwen-1.5B如果你对推理能力有要求但手机内存有限这个蒸馏版小模型值得一试。1.5B参数在4GB内存上就能跑虽然绝对能力有限但做简单的逻辑推理和问答没问题。选模型的核心逻辑是先看内存再看语言需求最后看任务类型。中文场景优先Qwen系列英文场景Gemma和Phi都不错推理任务选Phi或DeepSeek蒸馏版。3. Android端部署实操从零到跑通3.1 方案选型为什么我最终选了Termuxllama.cppAndroid上跑LLM有几条路可走一是用现成的App比如PocketPal、MLC Chat优点是开箱即用缺点是模型和参数被锁死没法深度定制二是用Termux装Linux环境自己编译llama.cpp优点是灵活度拉满缺点是有一定门槛三是用Android Studio自己写推理App适合开发者做产品集成。我三条路都走过日常使用推荐PocketPal深度折腾推荐Termuxllama.cpp。PocketPal在Google Play上就能下载内置了模型下载和管理功能支持Gemma、Phi、Qwen等主流模型界面友好适合不想折腾的用户。但如果你想用最新的量化方法、想调参数、想跑自定义模型那就得走Termux路线。Termux是一个Android终端模拟器它能在手机上提供一个完整的Linux环境。llama.cpp是Georgi Gerganov开发的C推理框架专门为消费级硬件优化支持CPU和GPU推理是当前端侧部署的事实标准。3.2 Termux环境搭建的完整步骤以下操作基于一台骁龙8 Gen 2、12GB RAM的Android手机Android 14系统。其他机型步骤相同只是编译选项可能需要调整。第一步安装Termux。不要从Google Play下载那个版本已经停止更新了。去F-Droid或者GitHub Releases页面下载最新版APK。安装完成后打开先执行pkg update pkg upgrade -y这一步是更新包管理器确保后续安装的软件都是最新版。第二步安装编译工具链和依赖pkg install -y git cmake make clang openblas这里解释一下每个包的作用git用来拉源码cmake和make是构建工具clang是C/C编译器openblas是线性代数加速库——LLM推理本质上是大量矩阵乘法有了BLAS加速速度能提升30%以上。第三步克隆llama.cpp源码并编译git clone https://github.com/ggerganov/llama.cpp cd llama.cpp cmake -B build -DLLAMA_BLASON -DLLAMA_BLAS_VENDOROpenBLAS -DCMAKE_BUILD_TYPERelease cmake --build build --config Release -j$(nproc)编译过程在手机上大概需要5-10分钟取决于CPU性能。-j$(nproc)表示用所有CPU核心并行编译能快不少。第四步下载模型文件。以Qwen2.5-7B-Instruct的Q4_K_M量化版为例你可以从Hugging Face下载gguf格式的文件。在Termux里可以用curl或者wgetmkdir -p ~/models cd ~/models # 假设你已经找到了gguf文件的直链 curl -L -o qwen2.5-7b-q4km.gguf 你的下载链接提示手机上下载4GB以上的文件建议用WiFi并且确保存储空间充足。下载完成后可以用ls -lh检查文件大小是否正常。第五步运行推理cd ~/llama.cpp ./build/bin/llama-cli -m ~/models/qwen2.5-7b-q4km.gguf -n 512 -t 6 -c 2048 --temp 0.7参数解释-n 512表示最多生成512个token-t 6表示用6个线程骁龙8 Gen 2有8个核心留2个给系统-c 2048是上下文长度--temp 0.7是温度参数控制随机性。实测下来这套配置在骁龙8 Gen 2上能跑到5-6 tokens/s生成一段200字的回答大约需要40秒。速度不算快但完全可用。3.3 用OpenBLAS加速前后的性能对比我专门做了一组对照测试同一台手机、同一个模型、同样的prompt配置推理速度生成200字耗时CPU占用纯CPU无BLAS3.2 tokens/s约62秒85%OpenBLAS加速5.8 tokens/s约34秒72%OpenBLAS6线程6.1 tokens/s约33秒68%可以看到OpenBLAS带来的提升非常明显接近翻倍。而且CPU占用反而更低因为矩阵运算被优化了单位时间内完成的工作更多。3.4 Android端的几个实操坑第一个坑是Termux的后台限制。Android系统会杀后台进程如果你切到微信再切回来Termux可能已经被杀了推理进度全丢。解决办法是在系统设置里把Termux加入电池优化白名单并且锁定最近任务里的Termux卡片。第二个坑是存储权限。Termux默认只能访问自己的私有目录如果你想从手机下载目录读取模型文件需要执行termux-setup-storage命令来申请存储权限。第三个坑是发热降频。手机跑LLM是持续高负载任务骁龙8 Gen 2跑满10分钟后会明显发热然后CPU降频推理速度可能掉到3 tokens/s以下。建议摘掉手机壳或者垫个散热背夹。我实测用半导体散热背夹能把速度稳定在5 tokens/s以上。4. iOS端部署实操比Android更省心的选择4.1 为什么iOS跑LLM有天然优势iPhone跑LLM有一个Android比不了的优势统一内存架构。在Android手机上CPU和GPU有各自的内存池模型权重加载到CPU内存后GPU要用还得拷贝一份浪费时间和空间。而Apple Silicon包括A系列和M系列芯片的CPU和GPU共享同一块内存模型加载一次CPU和GPU都能直接访问。这意味着什么意味着iPhone的GPU可以更高效地参与推理加速。实测iPhone 15 ProA17 Pro8GB RAM跑Qwen2.5-7B Q4_K_M速度能到8-10 tokens/s比同内存的Android旗舰快不少。4.2 推荐方案MLC Chat和Private LLMiOS上我主要用两个方案MLC Chat开源项目基于MLC-LLM框架支持Metal GPU加速。在App Store就能下载内置了模型库可以直接下载Gemma、Llama、Phi等模型。它的优势是GPU加速做得好速度在iPhone上是最快的之一。缺点是模型格式是MLC自己的不能直接用gguf文件。Private LLM付费App但体验最接近“开箱即用”。支持gguf格式模型可以自己导入模型文件界面简洁适合不想折腾的用户。价格是买断制大概几十块钱。如果你想完全免费且开源LLM Farm也是一个选择它基于llama.cpp的iOS绑定支持gguf模型但界面比较简陋适合开发者。4.3 iOS端模型导入的实操细节以Private LLM为例导入自定义模型的步骤如下第一步在电脑上下载好gguf模型文件。推荐从Hugging Face下载搜索“模型名gguf”就能找到。第二步把模型文件传到iPhone上。最方便的方式是用AirDrop或者通过iCloud Drive同步。4GB以上的文件AirDrop可能需要几分钟。第三步在Private LLM里选择“导入模型”找到文件所在位置等待App完成模型加载和索引。这个过程可能需要1-2分钟取决于模型大小。第四步调整推理参数。iOS端我建议把上下文长度设在2048-4096之间再大内存压力会很明显。线程数不用调MLC和Private LLM都会自动优化。注意iOS的沙盒机制比较严格模型文件必须放在App能访问的目录里。如果你用Files App传文件确保传到“On My iPhone”下的对应App文件夹而不是iCloud Drive的某个随机位置。4.4 iOS端的性能实测数据我在iPhone 15 Pro上做了一组对比测试模型量化框架速度tokens/s内存占用Qwen2.5-7BQ4_K_MPrivate LLM8.25.8GBGemma 2 2BQ4_K_MMLC Chat22.52.1GBPhi-3 MiniQ4_K_MMLC Chat15.83.2GBLlama 3.2 3BQ4_K_MPrivate LLM14.33.5GB可以看到小模型在iPhone上的速度非常可观Gemma 2 2B能跑到22 tokens/s基本是实时生成的感觉。7B模型虽然慢一些但8 tokens/s也完全在可用范围内。5. 端侧推理框架怎么选llama.cpp、MLC、ONNX Runtime对比5.1 三个框架的定位差异llama.cppC写的主打CPU推理也支持部分GPU后端CUDA、Metal、Vulkan。它的优势是模型格式统一gguf社区活跃新模型支持快。缺点是GPU加速不如专用框架。MLC-LLMTVM团队做的主打GPU加速和跨平台。它把模型编译成特定硬件的指令在iOS的Metal和Android的Vulkan上表现很好。缺点是模型需要转换格式不能直接用gguf。ONNX Runtime微软的推理框架支持多种硬件后端。它的优势是生态完善和Azure、Windows ML集成好。缺点是端侧LLM的优化不如前两者专注模型转换链路较长。5.2 选型建议如果你是普通用户想快速体验Android选PocketPal基于llama.cppiOS选MLC Chat或Private LLM不用纠结框架。如果你是开发者要在App里集成端侧推理我的建议是Android优先考虑llama.cpp的JNI绑定iOS优先考虑MLC-LLM或llama.cpp的Swift绑定。ONNX Runtime适合你已经有一套ONNX模型流水线的情况。如果你要跑自定义模型llama.cpp是唯一选择因为gguf格式的转换工具最成熟社区支持最好。5.3 一个容易被忽略的点上下文长度对内存的影响很多人只关注模型文件大小忽略了KV Cache的内存占用。KV Cache是推理过程中缓存的历史键值对上下文越长占用越大。以7B模型为例2048上下文大约占1GB内存4096上下文就占2GB。这意味着如果你手机只有8GB RAM跑7B Q4_K_M模型4.5GB 4096上下文2GB 系统占用2GB已经到极限了。再开个微信系统就可能杀进程。实操建议8GB内存手机上下文设2048就够了12GB以上可以设409616GB可以尝试8192但速度会明显下降。6. 常见问题与排查技巧实录6.1 模型加载失败怎么办这是最常见的问题表现是执行推理命令后报错“failed to load model”或者直接闪退。排查思路如下先检查文件完整性。用ls -lh看文件大小是否和下载页面标注的一致。如果不一致说明下载中断了重新下载。gguf文件有MD5校验值可以用md5sum命令核对。再检查量化格式是否被支持。老版本的llama.cpp可能不支持最新的量化方法比如IQ4_NL。解决办法是更新llama.cpp到最新版重新编译。最后检查内存是否足够。如果模型加载到一半被系统杀掉说明内存不够。换更小的模型或者更高的量化等级比如Q3_K_M。6.2 推理速度突然变慢如果一开始速度正常跑了几分钟后突然掉速大概率是发热降频。用手摸一下手机背面如果烫手那就是了。解决办法是散热摘壳、垫高、用散热背夹。如果从一开始就慢检查线程数设置。Android上建议设成CPU大核数量比如骁龙8 Gen 2是1个X3大核4个A715中核3个A510小核设-t 5比较合适。设太多线程反而会因为调度开销降低速度。6.3 中文输出乱码或断句这通常是tokenizer不匹配导致的。gguf文件里包含了tokenizer配置但如果你用的llama.cpp版本太老可能无法正确解析。更新到最新版通常能解决。另一个原因是模型本身的中文能力弱。比如Llama 3.2 3B的中文确实一般换Qwen 2.5系列会好很多。6.4 常见问题速查表问题现象可能原因解决方法模型加载失败文件损坏/格式不支持/内存不足校验MD5/更新框架/换小模型推理速度慢发热降频/线程数不当/无BLAS加速散热/调整-t参数/编译OpenBLAS输出乱码tokenizer不匹配/模型中文弱更新llama.cpp/换Qwen系列进程被杀内存不足/后台限制减少上下文/加白名单GPU加速无效后端未编译/驱动不支持重新编译带GPU后端/检查设备支持6.5 几个独家避坑技巧技巧一用mmap减少内存占用。llama.cpp默认使用mmap加载模型这意味着模型文件不需要全部读入内存而是按需分页加载。确保你的模型文件在本地存储上不要放在SD卡或者网络挂载的目录里否则mmap会失效。技巧二量化时保留embedding层精度。如果你自己转换模型把embedding和output层的量化等级设高一点比如Q6中间层用Q4这样能在文件大小增加不多的情况下明显提升输出质量。技巧三iOS上关闭后台App刷新。iPhone跑LLM时如果其他App在后台刷新会抢占内存和CPU。去设置里把不必要的App后台刷新关掉能给LLM留出更多资源。技巧四Android上用性能模式。很多Android手机有“性能模式”或“游戏模式”开启后CPU调度更激进推理速度能提升10-15%。但发热也会更明显自己权衡。7. 开源项目推荐与后续扩展方向7.1 值得关注的几个开源项目llama.cpp端侧推理的基石项目必须关注。GitHub上搜ggerganov/llama.cpp就能找到。它的更新非常活跃几乎每周都有新模型支持。MLC-LLMGPU加速做得最好的开源项目之一适合做iOS和Android的App集成。GitHub上搜mlc-ai/mlc-llm。PocketPalAndroid端的开源LLM App界面友好适合普通用户。GitHub上搜alichherawalla/pocketpal-ai。LLM FarmiOS端的开源LLM App支持gguf模型导入。GitHub上搜llm-farm/llm-farm-ios。Ollama虽然主要是桌面端的但它的模型管理思路值得借鉴。如果你想在手机上复现类似体验可以参考它的API设计。7.2 后续可以怎么扩展如果你已经跑通了基本的文本推理接下来可以尝试几个方向多模态llama.cpp已经支持LLaVA等视觉语言模型可以在手机上跑图片理解。不过对内存要求更高7B视觉模型需要12GB以上内存。RAG增强在手机上搭建一个本地的向量数据库把个人文档索引进去让LLM基于你的文档回答问题。这个方向隐私价值最大因为文档完全不出设备。Agent化结合手机的系统API让LLM能调用日历、备忘录、提醒事项等。iOS的Shortcuts和Android的Tasker都可以和LLM结合做出很实用的自动化流程。模型微调虽然手机上做全量微调不现实但LoRA微调在桌面端完成后可以把适配器合并到gguf模型里再放到手机上跑。这样就能得到一个“专属”的端侧模型。我个人在实际操作中的体会是手机跑LLM这件事最大的价值不是替代云端服务而是填补云端服务覆盖不到的场景。飞机上、地铁里、隐私敏感的数据处理这些场景云端方案要么不可用要么不放心。端侧推理虽然速度慢一点、模型小一点但它给了你一个完全可控的AI助手。而且随着芯片NPU的算力提升和模型量化技术的进步这个差距正在快速缩小。去年7B模型在手机上还卡得没法用今年已经能流畅对话了。明年这个时候可能13B模型也能在旗舰手机上跑起来了。