ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

30分钟实战:llama.cpp在Android手机上跑通本地大模型的完整路径

30分钟实战:llama.cpp在Android手机上跑通本地大模型的完整路径 30分钟实战llama.cpp在Android手机上跑通本地大模型的完整路径【免费下载链接】llama.cppLLM inference in C/C项目地址: https://gitcode.com/GitHub_Trending/ll/llama.cppllama.cpp 是一个用 C/C 写的大模型推理引擎它能把 GGUF 格式的模型文件搬到手机、树莓派这类非主流设备上跑。这篇实战教程带你完成 llama.cpp Android 本地部署全程不需要 root跑通之后你的手机就能在完全断网的情况下回答你的问题——隐私数据不出设备地铁里、飞机上照样用。本文结构一览先看你最终会得到什么两条部署路径怎么选一张对比表主推Termux 在手机上直接编译5 步走通备选电脑端用 NDK 交叉编译性能调优选量化模型、调上下文故障速查表 下一步清单跑通之后是什么样先说结果你有两个目标场景命令行问答在手机的终端里敲一句中文提示模型一段一段地把回答打印出来速度大概是每秒几个到十几个 token取决于机型和模型大小。离线可用模型文件放在本地存储里拔掉网络也能跑适合不想把对话内容上传到云端的场景。能达到的效果取决于两件事手机内存RAM够不够以及你选的模型多大。下面两条路径都能到达这个终点差别只在于编译这件事在哪台机器上做。两条部署路径怎么选Termux 手机编译NDK 电脑交叉编译适合谁只有手机、想快速体验的零基础用户有电脑、要给多台设备打包或想省手机电池的开发者需要 root 吗不需要不需要但要用 adb 连接设备难度⭐ 低⭐⭐⭐ 中高耗时30~60 分钟编译在手机上进行20~40 分钟编译在电脑上手机只是接收文件代价编译时手机发烫、耗电要先装好 Android SDK/NDK 环境主推 Termux 路径全程只用到手机步骤线性出了问题也好排查NDK 路径后面简写思路讲清楚即可。Termux 路径手机上直接编译前置条件Android 7.0API 24以上运行模型时建议至少 4GB 空闲内存留 2GB 以上存储空间放模型文件。第 1 步装好 Termux 这个手机上的 LinuxTermux 是一个终端模拟器装好后你的手机就拥有了一个可以敲 Linux 命令的环境编译、下载、运行都行不需要 root。如果 Play 商店里的版本提示无法安装从 Termux 项目自己的发布页或 F-Droid 渠道获取即可这是社区里最常见的卡点。第 2 步把编译工具链补齐这一步是安装编译 llama.cpp 需要的三个基础工具git拉代码、cmake构建系统、clang编译器。pkg update pkg upgrade -y pkg install git cmake clang避坑如果安装时提示untrusted repository先执行termux-change-repo选一个国内镜像源再重试。第 3 步拉取源码并编译把项目克隆到手机上然后用 CMake 配置、make 编译。-j4表示用 4 个并发任务编译中端机型上大概要等十几分钟期间手机会发热属正常现象。git clone https://gitcode.com/GitHub_Trending/ll/llama.cpp cd llama.cpp mkdir build cd build cmake .. make -j4避坑编译中途别杀后台。Termux 被系统清理掉后之前的编译进度会作废需要在终端里重新执行 make。第 4 步下载一个 GGUF 模型GGUF 是 llama.cpp 使用的模型文件格式可以理解为一个把模型权重和词表打包好的压缩包从任意模型站点拿到.gguf文件后用下面命令下载即可把{model-url}换成你实际的模型地址curl -L {model-url} -o ~/model.gguf模型放在主目录~/下性能最好。第 5 步跑通第一次问答编译出的可执行文件在build/bin里。下面的命令会加载模型、按 2048 的上下文长度处理你的提示词cd ~/llama.cpp/build/bin ./llama-cli -m ~/model.gguf -c 2048 -p 你好世界看到逐字打印的回答说明 llama.cpp Android 本地部署已经成功。llama-cli只是其中一个入口examples目录下的其他可执行程序如llama-simple理论上也能用。避坑-c上下文长度千万别一上来就填 32768 这种大数内存会瞬间飙高Termux 直接被系统杀掉屏幕停在最后一行输出。先从 2048 或 4096 开始试。NDK 交叉编译路径在电脑上给手机做饭适合这样的场景你有一台电脑 多台要部署的手机不想让每台手机都编译一遍。前提是电脑上已经装好 Android SDK/NDK并配置了ANDROID_NDK环境变量。第一步用 NDK 的工具链文件告诉 CMake目标是 Android 的 arm64 设备同时关掉两个在 Android 上不可用的依赖OpenMP 和 llamafile命令如下cmake \ -DCMAKE_TOOLCHAIN_FILE$ANDROID_NDK/build/cmake/android.toolchain.cmake \ -DANDROID_ABIarm64-v8a \ -DANDROID_PLATFORMandroid-28 \ -DGGML_OPENMPOFF \ -DGGML_LLAMAFILEOFF \ -B build-android cmake --build build-android --config Release -j4-DANDROID_ABI按你的设备调整-j4的并发数按电脑核心数改。第二步把编译产物和模型一起推送到手机然后在设备 shell 里运行。注意最后那行必须带上LD_LIBRARY_PATH因为 Android 不会自动去lib目录找依赖库adb shell mkdir /data/local/tmp/llama.cpp adb push build-android/bin /data/local/tmp/llama.cpp/ adb push model.gguf /data/local/tmp/llama.cpp/ adb shell cd /data/local/tmp/llama.cpp LD_LIBRARY_PATHlib ./bin/llama-cli -m model.gguf -c 2048 -p 你好世界避坑如果 adb 连接不上先确认手机开了开发者模式里的 USB 调试。另外 Android 系统自带库比较精简交叉编译时 CMake 只能看到 NDK 提供的那部分库遇到找不到某 .so的报错属于环境限制不是你的操作问题。性能调优3 个杠杆决定快慢先建立一点直觉大模型推理的绝大部分耗时都花在矩阵乘法上下面这张图展示了矩阵乘在内存里的两种存储布局这也是 llama.cpp 针对 ARM CPU 做大量优化的对象。在这个前提下你手里有三个杠杆选量化版本同一个模型有 Q4_K_M、Q8_0、F16 等多个量化精度。手机内存有限优先选 4bit文件名里带 Q4_K_M的版本显存占用小、速度明显更快内存宽裕再上 8bit 换质量。控制上下文-c上下文越大KV cache模型记住前文的缓存越吃内存。从 2048/4096 起步够用就不加。选对模型体量7B 级别量化后大约 4GB 文件是大多数中高端手机的舒适区想更快就换 3B 以下的小模型。顺手把其他后台 App 关掉给推理留足内存。故障速查表现象可能原因处理办法Termux 装不上 / 装好后闪退用了被限制的渠道版本换 F-Droid 或 Termux 官方渠道重装编译到一半被杀、终端退出系统回收后台或内存不足重新执行 make降低并发如make -j2运行后闪退或卡死上下文过大内存被打爆把-c降到 2048 再试提示找不到模型 / 加载失败文件没下载完整常见于断点删除后重新 curl 下载比对文件大小速度非常慢模型太大或后台占用内存换更小的量化模型清理后台应用跑通之后接着做这 4 件事换 2~3 个不同体量/量化档位的模型实测一遍记下每秒 token 数选出你这台手机的甜点配置。把-c从 2048 逐步加到 4096、8192找到内存和体验的平衡点。翻一翻 examples/ 目录看看simple、chat等更多运行入口挑一个更适合你的交互方式。想看官方完整的 Android 部署说明含 GUI 绑定方式直接读仓库里的 docs/android.md。【免费下载链接】llama.cppLLM inference in C/C项目地址: https://gitcode.com/GitHub_Trending/ll/llama.cpp创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表