说起来有点丢人,但我确实在本地跑大模型这件事上,被命令行折腾得够呛。
每次想跑个 GGUF,流程大概是这样的:先对着显卡型号纠结下哪个预编译包,再把那串 -ngl、--ctx-size、缓存量化参数一个个翻出来填,拼出一条长得离谱的命令,敲回车,然后盯一屏幕滚动的日志,祈祷显存别爆。爆了?多半也看不出为啥。改完参数重来,循环往复。命令行当然很强,但每次都从头背一遍,实在有点反人类。
于是趁着大模型免费,我用 Tauri 2 + Vue 3 糊了一个小工具,叫 llama-ui。先说清楚它是什么——一个启动器,不是聊天界面。聊天这种事我交给 llama-server 自带的 WebUI 或者我自己搞的前端,llama-ui 只负责把服务稳稳跑起来,并且让我看清楚它到底在干嘛。这个定位我一直没动摇过,免得又写成一个四不像。
它到底在帮我偷什么懒
我把日常最烦的几点列出来,看看它怎么接:
- 参数背不动:启动参数全变成表单,改一下旁边就实时生成命令;别人贴给我的命令也能一键拆回去,不用肉眼 parse。
- 预编译包挑花眼:它读一下我的 CPU / 显卡 / 显存,推荐该下 CUDA 版、Vulkan 版还是 CPU 版,下载还带进度条和实时速度,满足一点点进度焦虑。
- 显存爆了不知道为啥:仪表盘能看推理速度、Token、上下文和缓存占用;日志被结构化解析一下,OOM、CUDA 报错、端口被占、上下文不够会直接提示我,不用自己当人肉 grep。
- 关了窗口显存还被占着:这个最气人。现在不管正常退出还是程序崩了,后台的 llama-server 都会被自动杀掉,不留孤儿进程占我显存。
- 换套配置每次重填:不同场景的整套参数存成方案,一键切换,懒人福音。
能干嘛:拆成四块
- 服务管理:一键启停,看运行状态、PID、端口、当前模型;点了直接浏览器开内置 WebUI;实时日志加指标仪表盘,一屏看全。
- 模型管理:自动扫模型目录,把 GGUF 列出来(名字 / 路径 / 大小),选中即用,不用手填路径。
- 下载与更新:从 GitHub 拉 llama.cpp 预编译包,带进度、可取消;按本机硬件推荐该下的后端版本。
- 设置:模型目录、下载源、几套启动方案、自动检查更新开关;应用本体也支持自更新。
一条线走下来就是:
下载 llama.cpp → 选 GGUF → 可视化配参数 → 一键启动 → 实时观测
几个我觉得挺爽的小点
参数不用背,命令看得到。 所有启动参数做成表单,按"基础 / GPU 与显存 / 采样 / 服务行为 / 多模态"分组,每项旁边带说明,点开就知道干啥、填多少。每改一项右侧就实时出命令,所见即所得,想直接拷命令行也行。反过来别人贴的命令也能导入自动拆回配置项。
跑起来之后也能看清楚。 开指标后界面用仪表盘展示推理速度、Token、上下文和缓存占用,还会把"我想要的"和"实际生效的"放一起对比——比如我申请 8192 上下文,实际只生效 4096,它会直说。日志不再是天书,OOM / CUDA 报错 / 端口占用 / 上下文不够会被自动识别提示。
顺便夸一句自己:不留孤儿进程。正常退出或崩了都会杀掉后台进程,显存不会被偷偷占着。频繁换模型换参数的时候,这点真的香。
下载和硬件从第一步就帮我选对。 llama.cpp 的 Windows 包分 CUDA / Vulkan / CPU,CUDA 还得配套一个运行时附件。选错版本、漏下附件都白忙活。llama-ui 读我显卡显存推荐版本,下载时还校验主包和附件版本架构是否一致。它支持"自备目录"和"托管下载"两种模式,互不打架。
应用自己也能更新。 不光引擎能更新,llama-ui 本体也支持应用内自更新:检查到新版、验签过就静默装好自动重启,不用手动下安装包,懒到极致。
谁适合玩
你要是也中了下面任意一条毒,它大概率对你有用:
- 常在本地用 llama.cpp,但烦透了背启动参数;
- 想随时切不同模型配置,又不想每次重填;
- 希望服务"看得清状态、关得干净",而不是神秘地占着显存。
llama-ui 不替你写 prompt、不做聊天界面——它就只想把"把本地大模型服务跑起来并看清楚它在干嘛"这件重复又易错的事,变成几次鼠标点击。纯属自娱自乐顺手开源,如果你也在本地玩 llama.cpp,欢迎来试试、来拍砖。
评论