找回密码
立即注册
搜索
发回帖 发新帖

4948

积分

0

好友

634

主题
发表于 1 小时前 | 查看: 4| 回复: 0

把旧手机变成一台本地模型服务器,这件事其实比想象中简单。

每天总有那么几件零碎活儿要处理:抓取几个 RSS 源、给相册照片打标签、接几条智能家居的控制指令。每件事耗时不过几秒钟,但总得有个东西一直挂着。专门为这点小事开一台电脑,怎么算都不划算。

最近在 GitHub 上发现了一个思路挺巧的项目——OlliteRT,直接把闲置的安卓手机变成一台本地推理服务器。

OlliteRT GitHub 仓库页面

这个项目叫 OlliteRT,作者的思路很简单:对标 Ollama 的使用体验——在手机上跑模型,同时开一个兼容 OpenAI 的 HTTP 接口,局域网里其他设备填个地址就能直接调用。

01 它靠什么跑起来

底层用的是谷歌的 LiteRT-LM 运行时,推理直接调用手机自身的GPU或CPU。对外暴露一个 HTTP 服务,Apache-2.0 协议开源。

项目本身是在谷歌 AI Edge Gallery 的基础上改造的,并不是从零开发。

模型下载完成后,断网也能正常使用。数据全部在手机本地处理,官方明确表示不收集数据,代码里也没有统计逻辑。

02 模型选择:先看手机内存够不够

模型来源有三种方式:

  • 应用内置清单直接下载,文件托管在 HuggingFace 的 LiteRT 社区
  • 导入手机里已有的 .litertlm 文件
  • 自定义模型源,填 JSON 或 URL,大约每 24 小时刷新一次

内置清单目前有七个模型可选:

模型 大小 最低内存 上下文 能力
Gemma 4 E2B 2.4 GB 8 GB 32K 文本、图片、音频、思考、工具、MTP
Gemma 4 E4B 3.4 GB 12 GB 32K 同上
Gemma 3n E2B 3.4 GB 8 GB 4K 文本、图片、音频
Gemma 3n E4B 4.6 GB 12 GB 4K 文本、图片、音频
Gemma 3 1B 0.5 GB 6 GB 1K 纯文本
Qwen 2.5 1.5B 1.5 GB 6 GB 4K 纯文本
DeepSeek-R1 1.5B 1.7 GB 6 GB 4K 纯文本

这里有个容易误判的地方。标题说 6GB 内存能跑,指的是最低门槛,只有最下面三个小模型符合。官方推荐的 Gemma 4 E2B 最低要 8GB,E4B 要 12GB——这两个支持多模态,能看图、能听音频,回答前还会先输出一段推理过程。

OlliteRT 模型下载列表界面

手机内存只有 6GB 的话,别一上来就选 E2B。

Gemma 4 还有个 MTP 功能,一次预测多个词,出字速度会明显提升,需要在模型设置里手动开启。

03 客户端基本不用改

这是它做得比较到位的地方。

OpenAI 的 chat/completions、completions、responses 全都支持,音频转写接口也有,连 Anthropic 的 messages 接口都兼容了,流式和非流式都能用。模型列表和健康检查端点也齐了。

所以手头现成的工具基本不用动:

  • Python 里用 OpenAI 官方 SDK,把 base_url 指向手机就行
  • curl 直接调用没问题
  • Open WebUI 填个地址就能连上

有人把 NAS 上几个定时任务的接口地址改了一下,任务直接跑起来了。

两个需要注意的点

工具调用目前是实验性质,在 Gemma 4 上效果最好,小模型不一定能稳定按格式返回。默认走 schema 注入,不行可以在设置里关掉,退回提示词解析的方式。

Home Assistant 还需要额外配置,要装自定义集成,语音指令还要再配一个转写组件,不是填个地址就能用。

04 状态、日志、指标一应俱全

服务跑起来后,状态页上有实时数据:运行时长、请求数、输入输出 token、出字速度和峰值、首字延迟、成功率。

OlliteRT 运行状态与 API 指标页面

还有一个可拖动的悬浮窗,手机放在一边当服务器时,瞟一眼就知道服务是否还在跑。

日志页记录每次请求和响应,支持按方法或状态码过滤,能搜关键词,JSON 带语法高亮。每条日志下方有一排标记:耗时、是否流式、是否开启思考、输入 token 占上下文比例——快满时数字会变黄变红。

OlliteRT 活动日志查看器

除了应用内的界面,它还有 /metrics 端点,输出 29 个 Prometheus 格式指标,家里跑 Grafana 可以直接接入。

Home Assistant 除了调用模型,还能通过内置 REST 接口远程查看状态、切换模型、修改设置。

内置的 Benchmark 功能,可以在同一台手机上把几个模型挨个测一遍,比较长输入处理速度、出字速度和加载速度。

05 常驻运行的几个关键开关

每个模型可以单独保存推理参数,温度、top-k、top-p、最大输出长度都按模型存储,重启后依然生效。加速器可在 GPU 和 CPU 间切换,默认 GPU,有问题再换 CPU。修改最大输出长度或加速器会触发模型重载。

OlliteRT 推理参数设置界面

要让手机像小服务器一样常驻,三个开关值得打开:

闲置自动卸载:设定时间,比如 5 分钟无请求就把模型从内存卸载,内存还给系统。下个请求进来会自动重新加载,代价是这次会慢几秒。手机还要干别的活时,这个功能很实用。

开机自启:选默认模型打开开关,手机重启后服务自动启动。前提是关闭电池优化,否则安卓后台可能直接杀掉进程。

常驻通知:靠前台通知保住后台服务,通知栏有停止服务和复制地址两个按钮。

三个都配好,这台手机基本就是个免维护的设备。

06 安装三步,但别放公网

从 GitHub Releases 下载 APK 安装,打开后在模型列表选一个下载,完成后点模型卡片上的 Start Server,状态页会显示地址,一般是 http://手机IP:8000/v1。填进客户端即可。

目前发布的都是 beta 版本,最新是 v0.9.7-beta.1,安装包三十几 MB。

硬件要求

  • 安卓 12 以上
  • arm64 架构
  • 内存最低 6GB,多模态建议 8GB 以上

2017 年后的安卓机基本都是 arm64,模拟器和 x86 设备不支持。

接口支持 bearer token 验证,开启后无 token 请求返回 401。也能设置客户端 IP 访问规则,只放行家里设备,监听范围可调。

官方文档特别强调:不要通过端口映射暴露到公网。没有 HTTPS,token 验证也只是基础防护。适用场景就是局域网。

07 几个硬限制

  • 一次只能加载一个模型,请求排队处理,不适合多人共用
  • 只支持 .litertlm 格式,不认 GGUF,llama.cpp 和 Ollama 的模型文件用不了
  • token 计数按字符数除以四估算,英文还行,代码和多语言会偏,不能用来算费用
  • 本地导入模型会复制文件到应用目录,占双倍空间,导入后记得删原文件
  • 移动端运行时的限制,logprobs、语法约束输出、重复惩罚、LoRA 这些都没有

只跑推理的话,够用了。

08 适合当什么用

替代正经推理机器不现实——一次一个模型、请求排队,这个限制绕不过去。

但放在特定场景下刚好:任务碎、量小、不想开电脑、数据不想外传,加上监控、日志、权限、自启都有,当常驻服务没问题。

家里有闲置安卓机的话,可以装一个试试。更多本地化 AI 部署的玩法,来云栈社区聊聊。




上一篇:增量计算弥合实时与离线5%数据差:快手小红书万核级架构实战
下一篇:互联网公司裁员为什么总先拿技术部门开刀?技术岗被优化的真实原因
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-10-8 03:55 , Processed in 0.073372 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表