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 日。本文基于公开文档整理,代码片段和评估方案未作独立运行或性能验证;厂商测试结果已注明来源。

延伸阅读

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台