尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

旧手机跑大模型:OlliteRT 部署 Ollama 兼容 API 实战

发布时间:2026/9/26 1:10:53

资讯中心
01
ARTICLE

旧手机跑大模型:OlliteRT 部署 Ollama 兼容 API 实战

旧手机跑大模型:OlliteRT 部署 Ollama 兼容 API 实战
1. 旧手机跑大模型这件事到底靠不靠谱手里有台退役的安卓手机骁龙 855 也好天玑 1200 也罢放在抽屉里吃灰总觉得可惜。拿它当个软路由、做监控推流、跑个 Home Assistant 都算常规操作但要说让它跑本地大模型、对外提供一套 Ollama 兼容的 API很多人第一反应是这不可能。我一开始也这么想直到把 OlliteRT 这个项目跑通才发现旧手机做本地大模型服务器这件事门槛比想象中低得多坑也比想象中多得多。先把结论摆出来OlliteRT 是一套跑在 Android 设备上的本地大模型推理运行时它对外暴露的接口格式与 Ollama 的 API 保持兼容。这意味着你原来写给 Ollama 的调用代码、客户端、脚本只要把 base_url 从http://localhost:11434换成手机的局域网地址加端口基本不用改一行就能跑。它解决的核心问题是在没有独立显卡、没有服务器、没有云 API 额度的前提下用一台闲置安卓手机提供一个局域网内可访问、数据不出内网的大模型推理端点。适合谁来参考三类人。第一类是手上有旧手机、想折腾本地 AI 但预算有限的个人开发者第二类是对数据隐私敏感、不希望 prompt 和上下文离开自己内网的小团队第三类是想学习大模型推理部署、但不想一上来就啃 CUDA 和 vLLM 的入门玩家。如果你属于这三类中的任何一类这篇内容值得你花二十分钟看完因为下面讲的每一步都是我实际踩过之后总结出来的不是照抄文档。需要提前说清楚的是旧手机跑大模型的性能天花板是客观存在的。它不可能替代一张 4090也不可能流畅跑 70B 参数模型。它的合理定位是7B 以下量化模型、单路或低并发、对首 token 延迟不敏感、但对数据隐私和离线可用性有要求的场景。把这个预期摆正后面的所有操作你都会觉得顺理成章。2. 方案选型为什么是 OlliteRT 而不是别的路子2.1 旧手机跑大模型的几条技术路线对比在动手之前我把能想到的几条路都捋了一遍避免一头扎进去才发现方向错了。下面这张表是我实际调研和测试后的对比参数基于一台骁龙 855、8GB 内存的旧机型。方案原理优点致命缺点适合场景Termux llama.cpp在安卓终端里编译运行 llama.cpp生态成熟、模型格式全编译依赖多、无系统级加速、后台易被杀折腾型玩家纯 App 推理如 MLCChat用现成 App 加载模型开箱即用不对外提供 API、无法被其他程序调用单机对话云端 API 转发手机只做代理性能无上限数据出内网、依赖网络、有费用不差钱场景OlliteRT安卓原生推理运行时 HTTP 服务提供 Ollama 兼容 API、可后台常驻、支持 NNAPI 加速模型体积受限、并发能力弱局域网私有推理端点选 OlliteRT 的核心理由有三条。第一API 兼容性。Ollama 的/api/generate、/api/chat、/api/tags这几个端点已经被大量客户端支持兼容它等于免费获得了一整个生态的客户端。第二安卓原生。它不是跑在 Termux 这种模拟层里而是直接调用安卓的推理接口能吃到 NNAPI 这类系统级加速后台存活能力也比终端进程强。第三部署简单。不需要交叉编译不需要 root装个 APK 配一下模型路径就能起来。2.2 Ollama 兼容 API 到底兼容了什么很多人对兼容 Ollama API这句话的理解是模糊的我把它拆开讲。Ollama 的 API 本质上是一套 REST 接口核心的几个端点如下GET /api/tags列出本地已加载的模型返回 JSON 数组每个元素含name、size、modified_at等字段。POST /api/generate给定 prompt 做补全支持stream参数控制是否流式返回。POST /api/chat给定 messages 数组做对话格式与 OpenAI 的 chat 接口类似但字段名不同。POST /api/embeddings生成向量用于 RAG 场景。OlliteRT 兼容的是前三个embeddings 视版本而定。这意味着你在电脑上写的 Python 脚本、在浏览器里用的 WebUI、甚至一些支持自定义 Ollama 端点的桌面客户端都能直接连过来。兼容的价值不在于省了几行代码而在于你不用为手机单独维护一套调用逻辑。注意兼容不等于完全一致。流式返回的 chunk 结构、错误码的具体数值、超时行为不同版本之间可能有细微差异。如果你的客户端对响应格式校验很严格建议先用 curl 手动打一遍接口确认字段对得上再接入正式程序。2.3 模型选型旧手机到底能跑多大的模型这是整个项目里最关键的决策选错了模型后面全是白费功夫。核心约束是内存不是存储。模型文件存在闪存里多大都行但推理时整个模型权重加上 KV Cache 必须能塞进可用内存。以 8GB 内存的旧手机为例系统本身占掉 2.5GB 到 3GB实际可用大概 5GB 左右。模型权重的经验公式是权重占用 ≈ 参数量 × 量化位数 / 8一个 7B 模型用 Q4_K_M 量化平均约 4.5 bit权重占用约7 × 4.5 / 8 ≈ 3.9GB。再加上 KV Cache7B 模型在 2048 上下文下大约需要 0.5GB 到 1GB。加起来接近 5GB属于极限操作系统随时可能因为内存压力杀掉进程。所以我的建议是8GB 内存稳妥选 3B 到 4B 的 Q4 量化模型7B 可以试但要做好被杀的准备。6GB 内存老老实实跑 1.5B 到 3B别贪心。12GB 及以上可以尝试 7B 的 Q4甚至 8B 的 Q4。模型格式上优先选 GGUF因为 OlliteRT 对 GGUF 的支持最成熟。下载渠道方面国内访问模型仓库经常慢得让人抓狂可以找国内的镜像源或者用支持断点续传的下载工具挂着慢慢下。别在手机上下模型用电脑下好再传到手机速度快十倍不止。3. 环境准备与部署实操3.1 手机端的准备工作在装 OlliteRT 之前有几件事必须先做否则后面会莫名其妙失败。第一关闭电池优化。安卓对后台进程的管理非常激进一个跑推理的进程如果被系统判定为耗电大户分分钟被冻结。路径通常在设置 → 应用 → 找到 OlliteRT → 电池 → 无限制。不同厂商的菜单名字不一样小米叫省电策略华为叫应用启动管理OPPO 叫耗电保护自己找一下。第二确认存储权限。模型文件通常放在/sdcard/下的某个目录OlliteRT 需要读取权限。安卓 11 以后的分区存储机制会让直接路径访问变得麻烦建议把模型放在应用专属目录或者通过 SAF 授权。第三固定局域网 IP。手机连的 WiFi 要设置静态 IP或者在路由器里做 DHCP 绑定否则手机重启后 IP 变了所有客户端配置都得改。这一步很多人会忽略等到客户端连不上才想起来。第四保持充电状态。推理是持续高负载电池掉得飞快而且长时间高温对电池寿命有影响。插着电跑同时注意散热别放在被子上。3.2 OlliteRT 的安装与模型导入安装本身没什么好说的拿到 APK 装上即可。真正需要讲的是模型导入这里有个容易踩的坑。OlliteRT 需要一个模型目录里面放 GGUF 文件。我的做法是在手机存储根目录建一个models文件夹把电脑上下好的 GGUF 文件通过数据线拷进去。传输大文件时MTP 协议偶尔会中断建议用adb push命令稳定得多adb push ./qwen2.5-3b-instruct-q4_k_m.gguf /sdcard/models/传完之后在 OlliteRT 里指定模型目录它会扫描目录下的 GGUF 文件并加载。注意文件名不要有中文和空格有些版本对路径编码处理不完善带特殊字符会加载失败。模型加载成功后应用界面通常会显示模型名称、参数量、量化类型和内存占用。如果显示的内存占用超过可用内存的 80%建议换更小的模型别硬撑。3.3 启动 API 服务并验证模型加载完成后启动 HTTP 服务。默认端口一般是 11434和 Ollama 保持一致方便客户端直接迁移。启动后先在手机本机用浏览器访问http://127.0.0.1:11434/api/tags能看到模型列表就说明服务起来了。接下来从电脑上验证。假设手机 IP 是192.168.1.100curl http://192.168.1.100:11434/api/tags如果连不上按这个顺序排查手机和电脑是否在同一网段、手机防火墙是否拦截、服务是否绑定在0.0.0.0而不是127.0.0.1。绑定地址这个坑我踩过有些版本默认只监听本地回环局域网访问不了需要在设置里改成监听所有网卡。验证生成接口curl http://192.168.1.100:11434/api/generate -d { model: qwen2.5-3b, prompt: 用一句话解释什么是量化, stream: false }返回 JSON 里有response字段就说明整条链路通了。第一次调用会慢因为模型要预热第二次开始就正常了。3.4 客户端接入把 base_url 换掉就行这是 Ollama 兼容 API 最爽的地方。以 Python 的ollama库为例import ollama client ollama.Client(hosthttp://192.168.1.100:11434) response client.chat( modelqwen2.5-3b, messages[{role: user, content: 你好}] ) print(response[message][content])原来连本机 Ollama 的代码只改了host一个参数。如果你用的是支持自定义端点的 WebUI在设置里把 API 地址填成手机 IP 即可。这就是兼容性的真正价值迁移成本几乎为零。4. 性能调优与参数配置4.1 线程数与上下文长度的取舍旧手机的 CPU 核心数看着不少但大小核架构下真正能用于推理的高性能核心就那么几个。线程数设置过高会导致核心间争抢反而变慢。我的经验是线程数设为高性能核心数通常是 4 到 6。设成 8 或者更高实测下来吞吐不升反降。上下文长度直接决定 KV Cache 大小。默认 2048 是个比较平衡的值如果你只是做短对话可以降到 1024 省内存如果需要处理长文档往上调要盯着内存占用别把系统撑爆。下面是我在一台骁龙 855 上实测的数据上下文长度内存增量首 token 延迟生成速度512约 150MB0.8s8.5 tok/s1024约 300MB1.1s8.2 tok/s2048约 600MB1.6s7.8 tok/s4096约 1.2GB2.4s6.9 tok/s可以看到上下文翻倍内存增量也大致翻倍生成速度缓慢下降。如果你的场景是问答而不是长文生成2048 完全够用。4.2 量化等级的选择同一个模型有 Q2、Q3、Q4、Q5、Q6、Q8 等多个量化等级数字越大精度越高、体积越大。旧手机上我的建议是内存紧张Q3_K_M体积小但输出质量下降明显偶尔会胡言乱语。平衡之选Q4_K_M体积和质量的最佳平衡点绝大多数场景推荐这个。内存充裕Q5_K_M质量接近原始模型但体积比 Q4 大 20% 左右。Q2 和 Q8 我都不推荐。Q2 质量掉得太狠Q8 体积太大旧手机扛不住。Q4_K_M 是甜点区这句话在 llama.cpp 社区被反复验证过旧手机场景同样适用。4.3 温度与采样参数推理参数里temperature控制随机性top_p控制采样范围repeat_penalty控制重复。旧手机因为算力有限不建议开太复杂的采样策略。我的常用配置{ temperature: 0.7, top_p: 0.9, repeat_penalty: 1.1, num_predict: 512 }num_predict限制最大生成 token 数这个参数很重要。不限制的话模型可能一直生成下去手机发热严重还占着连接。设一个合理的上限比如 512 或 1024能有效控制单次请求的资源消耗。5. 常见问题与排查实录5.1 服务起来但局域网访问不了这是最高频的问题。排查顺序先确认服务监听地址是不是0.0.0.0再确认手机和电脑在同一网段ping一下然后看路由器有没有开启 AP 隔离很多公共 WiFi 默认开启设备之间不能互访。AP 隔离这个坑很隐蔽家里路由器一般不开但公司或公共场所的网络经常开表现就是手机自己能访问电脑死活连不上。5.2 推理到一半进程被杀内存不足的典型症状。安卓的 Low Memory Killer 会在内存紧张时杀掉占用最大的进程。解决办法换更小的模型、降低上下文长度、关闭其他后台应用。如果还是被杀可以在开发者选项里调高后台进程限制但治标不治本。根本办法还是控制模型规模。5.3 生成速度慢得无法接受先看是不是第一次调用预热预热慢是正常的。如果一直慢检查线程数设置、是否开启了 NNAPI 加速、手机是否在充电有些机型充电时会降频。另外别在推理时同时干别的重活旧手机的算力经不起多任务。5.4 中文输出乱码或断句奇怪多半是模型的 tokenizer 和 prompt 模板不匹配。不同模型有不同的对话模板比如 Qwen 系列用|im_start|标记Llama 系列用[INST]。模板用错了模型就不知道哪句是用户说的、哪句是它该接的输出自然乱。确认 OlliteRT 里的模板配置和模型匹配。5.5 常见问题速查表现象最可能原因快速验证解决方向局域网连不上监听地址/AP 隔离手机本机 curl改监听 0.0.0.0、换网络进程被杀内存不足看系统内存曲线换小模型、降上下文速度极慢线程数/降频看 CPU 占用调线程、插电、散热输出乱码模板不匹配换简单 prompt 测试核对对话模板模型加载失败路径/格式问题看应用日志改文件名、换 GGUF流式返回中断连接超时看客户端日志调大超时、关流式6. 这套方案还能怎么扩展跑通基础 API 之后能玩的花样其实不少。最直接的是接一个本地 RAG在电脑上跑一个向量库把文档切块存进去用户提问时先检索相关片段拼进 prompt 再发给手机上的模型。这样旧手机负责推理电脑负责检索各司其职整体能力比单跑模型强得多。另一个方向是做局域网内的多设备共享。一台手机跑模型家里所有设备都能连手机、平板、电脑共用一个推理端点。如果一台不够理论上可以起多台做负载均衡但旧手机的单机性能有限多台的意义更多是冗余而不是提速。还有个实用的扩展是定时任务。让手机在夜间空闲时跑一些批处理任务比如批量总结文档、生成日报草稿白天直接取结果。这种离线批处理的场景对延迟不敏感正好匹配旧手机的性能特点。我个人在实际操作中的体会是旧手机跑大模型这件事预期管理比技术本身更重要。别指望它快别指望它聪明把它当成一个能离线、数据不出门、够用就行的推理端点你会发现它的性价比高得离谱。一台几百块的二手手机换来一个完全私有的 AI 接口这笔账怎么算都不亏。
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。