llama-swap:本地多模型按需切换
介绍 llama-swap 的模型进程代理、正确 YAML cmd 与端口变量、TTL 和切换策略,不把它误解为自动显存调度器。
直接回答:llama-swap 根据请求模型启动、切换并代理本地模型服务。是否可并存由配置策略与资源容量决定,并不只是检测显存不足才卸载。
它解决什么问题
直接使用 llama.cpp 的 llama-server 时,启动参数、端口与模型生命周期通常由用户或其他编排程序管理;更换模型可以复用同一端口,并非必须修改所有客户端 URL。
llama-swap 提供统一代理地址,根据请求的模型及配置策略管理后端进程。它简化生命周期管理,但不能自动推断所有模型的显存需求或保证资源足够。
配置:一个 YAML 文件
healthCheckTimeout: 180
models:
qwen-coder:
cmd: >-
/opt/homebrew/bin/llama-server
--model /path/to/models/Qwen2.5-Coder-7B-Instruct-Q5_K_M.gguf
--port ${PORT}
--host 127.0.0.1
--ctx-size 8192
ttl: 120
aliases:
- qwen2.5-coder
cmd 是命令字符串,不是参数数组;${PORT} 是动态端口变量。替换真实二进制与权重路径,按 llama.cpp 版本添加加速参数。ttl 控制空闲卸载,不是显存容量探测。此示例未在本轮启动。
启动与请求
./llama-swap --config config.yaml
默认监听 8080 端口,未配置预加载钩子时通常按需加载——首个请求到来才按需拉起。客户端用 OpenAI 兼容 API 格式请求,model 字段填配置里的模型名或别名即可。
VRAM 管理:TTL 机制
按配置的切换/并存策略安排模型,预先测试完整权重、缓存和并发内存需求。互斥的两个模型频繁交替请求仍会反复加载,增加 TTL 不能消除这种切换;可考虑能同时容纳的模型或独立服务。
Web UI 与适用场景
自带 Web UI 查看模型状态。什么时候用它,什么时候用替代品:需要精细控制 llama.cpp 启动参数、同时维护多个本地模型时选 llama-swap;只跑单模型或不需要参数级控制时,Ollama 这类一体化工具更省事。
常见问题(FAQ)
Q:支持其他后端吗?
A:需后端接口、健康检查和启动停止方式兼容,并非任意进程均可直接接入。
Q:切换时请求不会丢吗?
A:仍可能因超时、启动失败、取消或资源不足失败,客户端应处理错误,重试需考虑幂等。
Q:可以直接暴露公网吗?
A:不应开放未认证服务;配置监听地址、API 密钥、网络限制和资源预算。
参考资料
资料核对日期:2026 年 9 月 29 日。本文基于公开文档整理,代码片段和评估方案未作独立运行或性能验证;厂商测试结果已注明来源。