旧手机变AI服务器!OlliteRT开源项目实测,24小时跑本地模型

把旧手机翻出来当本地模型服务器用,这事儿真没想象中那么折腾。

每天其实就那么几件碎活儿要处理,比如抓几个RSS源啊,整理相册标签啊,或者接几条智能家居的指令。每次也耗不了几秒,但问题是得有个东西一直蹲在那儿待命。为这点事专门开台电脑?算了吧,电费都回不来。

我最近在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——这俩才支持多模态,能看图、能听音频,而且回答前会先输出一段思考过程,体验完全不一样。

如果你的手机内存只有6GB……嗯,别一上来就选E2B,真的带不动。老老实实从1B或者1.5B的小模型开始吧。

话说回来,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、出字速度和峰值、首字延迟、成功率……这些东西都在那儿摆着,一眼就能看到。

还有个可拖动的悬浮窗,这个我觉得挺实用。手机放一边当服务器用的时候,不用专门点进去,瞟一眼就知道服务还活着没。

日志页呢,每次请求和响应都记下来了。支持按方法或者状态码过滤,也能搜关键词,JSON还带语法高亮。老实讲,这个高亮对我来说挺重要的,不然一堆代码看着头疼。

每条日志下面有一排小标记,比如耗时、是不是流式、有没有开思考、输入token占上下文的比例——比例快满的时候,数字会变黄,再满就变红。你猜怎么着?这设计挺贴心,一眼就能看出哪里快出问题了。

除了应用内的界面,它还有个/metrics端点,输出29个Prometheus格式的指标。我家里跑Grafana,直接就能接入,不用额外折腾,感觉这步省了不少事。

Home Assistant除了能调用模型,还能通过内置的REST接口远程看状态、切换模型、改设置。这个我觉得挺方便的,特别是人不在家的时候。

内置的Benchmark功能,能在一台手机上把几个模型挨个跑一遍,然后比较长输入处理速度、出字速度、加载速度。说实话,这个功能我一开始没怎么用,后来试了一次,发现对选模型还挺有帮助的。

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

每个模型都能单独存自己的推理参数,温度、top-k、top-p、最大输出长度这些,都是按模型记着的,重启了也还在。加速器嘛,GPU和CPU之间可以随便切,默认是GPU,出问题了再换CPU也不迟。不过有一点得提醒你——改最大输出长度或者加速器,会触发模型重新加载一次,等个几秒吧。

想让手机跟个小服务器似的常驻跑着,有三个开关我觉得值得打开:

  • 闲置自动卸载:设个时间,比如5分钟没请求就把模型从内存里卸掉,内存还给系统。下个请求来了它会自己重新加载,代价就是这次会慢几秒。手机平时还得干别的活吧?这个功能就很实用了。
  • 开机自启:选好默认模型,把开关打开,手机重启后服务自己就起来了。但前提是得关掉电池优化,不然安卓后台可能直接把进程杀掉,你猜怎么着?就白费力气了。
  • 常驻通知:这个靠前台通知把后台服务保住,通知栏上有停止服务和复制地址两个按钮,简单粗暴。

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

06 安装三步,但别放公网

从GitHub Releases下载APK装一下,打开后在模型列表里挑一个下载,下完点模型卡片上的Start Server,状态页就会给你个地址,一般是http://手机IP:8000/v1,填进客户端就能用了。是不是还挺简单的?

不过呢,目前发布的都是beta版本,最新是v0.9.7-beta.1,安装包三十几MB,不算大。但说实话,beta版嘛,偶尔有点小毛病也是正常的,对吧?

硬件要求

这个得先看清楚,不然白折腾:

  • 安卓12以上
  • arm64架构
  • 内存最低6GB,你要是想跑多模态,那我建议8GB以上

你看,2017年之后的安卓机基本都是arm64,所以大部分手机都行。但模拟器和x86设备就别想了,直接不支持的。

接口那边支持bearer token验证,开了之后,没带token的请求直接返回401。你还可以设置客户端IP访问规则,只让家里设备访问,监听范围也能自己调。我觉得这个挺贴心的,至少比裸奔强。

不过官方文档里头特别强调了一件事:别把端口映射到公网上去。为什么这么说?因为没HTTPS,token验证也就是个基础防护,真的不够看。老实讲,这玩意儿就是为局域网设计的,你非拿到外网用,风险自己扛。

07 几个硬限制

  • 一次只能加载一个模型,请求排队处理。说实话,这就不适合多人共用了
  • 只支持.litertlm格式,GGUF不认——你猜怎么着?llama.cpp和Ollama的模型文件全都用不了
  • token计数是拿字符数除以四估的。英文还行,代码和多语言就偏了,算费用根本不准
  • 本地导入模型会复制文件到应用目录,占双倍空间。导完记得删原文件,不然白占地方
  • 移动端跑起来,logprobs、语法约束输出、重复惩罚、LoRA——这些全都没有

只跑推理的话,够用了。

08 适合当什么用

说实话,想拿它替代正经推理机器,那基本不现实。一次只能跑一个模型、请求还得排队,这个硬伤绕不过去。

不过呢,放特定场景下它还挺香的。任务碎、量小、不想开电脑、数据又不想外传——这些情况它刚好能接住。再加上监控、日志、权限、自启这些功能都有,当个常驻服务完全没问题。

你要是手头有闲置的安卓机,真的可以装一个试试。不亏。

GitHub开源地址:https://github.com/NightMean/OlliteRT

常见问题

Q:OlliteRT支持哪些模型格式?

A:只支持.litertlm格式。GGUF?不认。所以llama.cpp和Ollama的模型文件基本都白搭。

Q:手机内存6GB能跑多模态模型吗?

A:想多了。Gemma 4 E2B这种多模态模型,最低得8GB内存才行。E4B更夸张,要12GB。6GB的话,还是老老实实跑纯文本小模型吧。

Q:OlliteRT能部署到公网吗?

A:官方不建议,我也不建议。没HTTPS加密,token验证也就糊弄一下小白,顶多局域网内耍耍,别想着外网访问。