大约两年前,我开发了一个专为家庭生活服务的小型机器人。它的核心目标是协调家庭内部的各项事务,主要功能包括:
- 每日简报:每天早晨,它会汇总家庭日程,让我们对一天了然于胸。
- 智能购物:负责管理和同步全家人的购物清单,避免遗漏。
- 快速提醒:处理那些需要快速设置、随时提醒的小事。
- 天气预报:除了常规天气信息,还会根据我们家太阳能电池板的情况,提供专门的太阳辐射预报。
为了让访问尽可能方便,我将助手做成了一个 Telegram 机器人。这样一来,家人们无需安装任何专用App,在任何地方都能轻松使用。
助手背后的智能引擎:从云端到本地的抉择
在过去的两年里,这个机器人的“大脑”一直是各种云端AI模型,比如 ChatGPT、Claude 和 Gemini。由于需要处理的任务复杂度并不算高(全部提示词和工具定义加起来大约 2300个token),总体效果还算令人满意。我切换模型的主要原因,往往是哪个平台的API价格更优惠。
然而,助手越有用,我们使用它的频率就越高——这直接导致了成本的上升。在某些月份,仅API调用费用就超过了 12欧元。这很大程度上是因为机器人是自主运行的,它并非被动等待指令,而是会主动执行计划好的任务。虽然这种主动性是它的核心价值,但也意味着更高的token消耗。
12欧元或许不算“天价”,但当你已经为其他AI服务支付订阅费时,这笔开销就显得有些多余了。更重要的是,我发现自己开始犹豫是否要为助手添加新功能,因为总会下意识地担心API账单会随之水涨船高。
尽管最近出现了许多更经济的开源模型(如DeepSeek、Qwen、GLM),并且像 OpenRouter 这样的聚合平台提供了极具竞争力的价格,但我始终不愿意将涉及家庭生活的个人数据发送到未知的服务器上。因此,我的长期目标一直很明确:最终让助手的“大脑”完全运行在本地AI上。
时机成熟:在VPS上部署本地AI
我的机器人代码托管在Hetzner的一台个人VPS上,配置是当时的标准款:4个vCPU和8GB内存。
为了找到响应质量和推理速度之间的最佳平衡点,确保用户体验流畅,我尝试了多个小型开源模型。经过一系列测试,我决定每月多花几欧元,将VPS升级到 8个vCPU和16GB内存。
升级硬件是为了能运行更大的模型。在缺乏GPU的系统中追求更大模型,听起来可能有些矛盾,但这正是 MoE(专家混合) 模型的神奇之处。这类模型虽然对内存要求更高,但能提供显著提升的推理速度。
最终,GPT-OSS-20B 模型被证明是完美的选择。经过 Q4量化后,它大约占用12GB内存,为操作系统和其他应用留下了4GB空间,完全够用。
性能优化:榨干有限硬件的每一分潜力
在有限的硬件上运行自己的模型时,每一项优化都至关重要。我很快发现,助手在构建动态提示和处理消息历史的方式上,并没有针对 KV缓存 进行优化。当使用速度极快的云端模型时,这类低效问题被掩盖了,但在本地运行时则暴露无遗。
经过多轮迭代和代码优化,我找到了一个“足够好”的解决方案。提示词和工具定义仍然保持在2300个token左右,但现在的处理效率大大提升。平均生成速度达到了 22 tokens/秒,对于当前的硬件条件和项目需求来说,这是一个完全可以接受的结果。
得失权衡:用即时性换取掌控感
转向本地部署后,我失去了云端模型那种“即时”响应的体验。但作为交换,我获得了三大核心收益:隐私、完全自主权,以及无限免费的token。现在,我终于可以毫无顾虑地专注于扩展助手的功能,再也不用盯着每月的账单发愁了。
下一步计划:收集数据,持续优化
我并不认为这次迁移是本地AI计划的终点。现在,我将每一次对话互动都保存到文件中,形成完整的日志。
我的计划是,等待2-3个月,对收集到的数据进行简单清理,然后将其作为训练数据,用来微调一个更小的专用模型。也许到那时,我能在获得更快速度的同时,再次降低VPS的配置,进一步节约成本。
如果你也对部署本地AI应用、实现数据主权感兴趣,欢迎来 云栈社区 的 人工智能 板块交流探讨,那里有更多关于模型部署与优化的实战分享。
译自:My family assistant now runs on local AI[1]
作者:Rashi
引用链接
[1] My family assistant now runs on local AI: https://www.nunodonato.com/my-family-assistant-now-runs-on-local-ai/