运行多个大语言模型(LLM)非常有用:无论是用于比较模型输出、设置备用方案,还是实现行为定制,实践中我们经常以这种方式使用 LLM。
一些应用已经提供了多模型运行的平台。但如果你希望完全在本地运行、节省 API 成本,并保证数据隐私,情况就会复杂许多。问题在于:本地设置通常意味着要处理多个端口、运行不同进程,并且手动切换,不够理想。
这正是 Llama-Swap 要解决的痛点。它是一个超轻量的开源代理服务(仅需一个二进制文件),能够让你轻松在多个本地 LLM 之间切换。简单来说,它会在本地监听 OpenAI 风格的 API 请求,并根据请求的模型名称,自动启动或停止对应的模型服务。客户端无需感知底层切换,使用体验完全透明。
Llama-Swap 工作原理
概念上,Llama-Swap 就像一个智能路由器,位于多个 LLM 服务进程之前。当 API 请求到达(如 POST /v1/chat/completions),它会检查 JSON 里的 model 字段,加载对应的服务进程,如果需要,还会停止其他已经运行的模型。
例如:
- 先请求模型 A,再请求模型 B → 代理会自动关掉 A 的进程,再启动 B,让每次请求都由正确的模型响应。
默认情况下,Llama-Swap 每次只允许运行一个模型。但它的 Groups 功能可以调整:
swap: false→ 组内的多个小模型可以同时运行,不会互相卸载- 大模型组 → 每次只启动一个,节省资源 这样你可以灵活掌控系统资源与并发能力。
环境准备
确保系统具备以下条件:
- Python 3 (>=3.8):用于脚本和工具。
- llama.cpp (llama-server):兼容 OpenAI API 的服务程序。
- 硬件:现代 CPU 足够;GPU 可加速。
- Docker(可选):运行预构建镜像,x86 更佳,Apple M1/M2 建议裸机安装。
Hugging Face CLI:便捷下载模型文件:
pip install -U "huggingface_hub[cli]"
Homebrew(macOS):快速安装运行环境,例如:
brew install llama.cpp
提供 llama-server 二进制文件来运行本地模型。
分步操作
1. 安装 Llama-Swap
curl -L -o llama-swap.tar.gz https://github.com/mostlygeek/llama-swap/releases/download/v126/llama-swap_126_darwin_arm64.tar.gz
tar -xzf llama-swap.tar.gz
chmod +x llama-swap
./llama-swap --version
2. 下载示例模型
以 SmolLM2-135M 和 Qwen2.5-0.5B 为例:
mkdir -p ~/llm-models
huggingface-cli download bartowski/SmolLM2-135M-Instruct-GGUF --include "SmolLM2-135M-Instruct-Q4_K_M.gguf" --local-dir ~/llm-models
huggingface-cli download bartowski/Qwen2.5-0.5B-Instruct-GGUF --include "Qwen2.5-0.5B-Instruct-Q4_K_M.gguf" --local-dir ~/llm-models


