
说到本地跑大模型,很多人第一反应就是 Ollama。确实,Ollama 用起来方便,一键下载模型就能跑。但今天五哥要介绍一个更轻量的替代方案——Shimmy。
Shimmy 是什么?一句话概括:一个 4.8MB 的单文件程序,提供 100% 兼容 OpenAI 的 API 接口,专门用来在本地跑 GGUF 格式的大模型。
为什么需要 Shimmy?
用云端大模型 API(比如 OpenAI、Claude)有两个问题:
- 隐私风险:你的对话数据要上传到别人的服务器,企业敏感数据、个人隐私都不太放心
- 费用累积:用得多了一笔一笔都是钱,尤其调试阶段反复调用,账单看着心疼
本地跑模型就没有这些问题,数据不出电脑,随便调用不花钱。而 Shimmy 的优势在于,它提供的是和 OpenAI 完全一致的 API 格式,你原来调用 OpenAI 的代码,只需要改一个地址就能切换到本地模型,一行代码都不用多写。
Shimmy vs Ollama,有啥区别?
很多人会问:我用 Ollama 不是挺好的吗?确实 Ollama 也不错,但两者的定位不太一样:
- Ollama:自带模型库,一键拉取模型,有自己的 API 格式(虽然也兼容 OpenAI 格式),更像是一个"模型管理+推理"的一体化工具
- Shimmy:不自带模型管理,专注做一件事——把本地 GGUF 模型包装成 OpenAI 兼容的 API 服务。体积更小(4.8MB vs Ollama 几百MB),启动更快(1-2秒),资源占用更低
而且,Shimmy 可以直接读取 Ollama 的模型目录(~/.ollama/models),两个工具可以配合使用。你用 Ollama 下载模型,用 Shimmy 提供 API 服务,完全没问题。
核心特性一览
- 超轻量:单文件 4.8MB,不需要 Python、Java 等运行时,下载就能用
- 100% OpenAI API 兼容:/v1/chat/completions、/v1/models 等接口完全对齐,支持流式响应
- 隐私优先:所有推理在本地完成,数据零上传
- 自动发现模型:启动时自动扫描 ~/.shimmy/models、~/.ollama/models、~/.cache/huggingface/hub 等目录
- 支持 GGUF 和 SafeTensors 格式:覆盖 90% 以上的开源模型(Llama、Mistral、Qwen、Phi 等)
- CPU/GPU 混合推理:支持 CUDA、Metal、OpenCL 硬件加速,没 GPU 也能跑小模型
- 内置工具:支持计算器、本地文件读取、HTTP 请求等工具调用
- 智能缓存:LRU+TTL 缓存重复查询,相同问题秒回
安装方法
方式一:下载预编译二进制(推荐)
从 GitHub Releases 页面下载对应系统的版本即可:
# Linux x86_64
curl -L https://github.com/Michael-A-Kuykendall/shimmy/releases/latest/download/shimmy-linux-x86_64 -o shimmy
chmod +x shimmy
sudo mv shimmy /usr/local/bin/
# macOS ARM64(Apple Silicon)
curl -L https://github.com/Michael-A-Kuykendall/shimmy/releases/latest/download/shimmy-macos-arm64 -o shimmy
chmod +x shimmy
sudo mv shimmy /usr/local/bin/
方式二:Cargo 安装
如果你装了 Rust 环境:
# 基础版
cargo install shimmy
# 完整版(支持 Hugging Face 缓存和工具链)
cargo install shimmy --features "huggingface tools"
方式三:Docker
docker pull michaelakuykendall/shimmy:latest
docker run -d -p 11435:11435 -v ~/my-models:/root/.shimmy/models shimmy serve
使用教程
1、准备模型
Shimmy 支持 GGUF 格式的模型文件。你可以从 Hugging Face 下载,比如:
# 创建模型目录
mkdir -p ~/.shimmy/models
# 下载一个小型模型试试(比如 Qwen2.5-1.5B-GGUF)
# 从 Hugging Face 下载 .gguf 文件放到 ~/.shimmy/models 目录即可
如果你已经在用 Ollama,Shimmy 会自动扫描 Ollama 的模型目录(~/.ollama/models),不需要重复下载。
2、启动服务
# 默认启动(端口 11435)
shimmy serve
# 自定义端口和模型目录
shimmy serve --port 8080 --model-dir /path/to/models
启动成功后,终端会显示可用模型列表和服务地址。
3、查看可用模型
# 命令行查看
shimmy list
# API 方式查看
curl http://127.0.0.1:11435/v1/models
4、调用 API
用 curl 测试:
curl -X POST http://127.0.0.1:11435/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "qwen2.5-1.5b-instruct-q4_k_m.gguf",
"messages": [{"role": "user", "content": "用一句话介绍一下自己"}],
"max_tokens": 100,
"temperature": 0.7
}'
用 Python 调用(和 OpenAI SDK 完全一样):
from openai import OpenAI
# 只需要改 base_url,其他代码和调用 OpenAI 一模一样
client = OpenAI(
api_key="随便填",
base_url="http://127.0.0.1:11435/v1"
)
response = client.chat.completions.create(
model="qwen2.5-1.5b-instruct-q4_k_m.gguf",
messages=[{"role": "user", "content": "写一首关于编程的五言绝句"}]
)
print(response.choices[0].message.content)
性能优化技巧
- 选对量化级别:Q4_K_M 是性价比最高的选择,精度和体积平衡得好
- MOE 模型 CPU 卸载:跑 Mixtral 这类混合专家模型时,加 --moe-offload 参数可以省 30%-50% 显存
- 开启缓存:重复提问场景下,缓存可以让响应速度快 10 倍以上
- 多实例负载均衡:企业多人使用场景,可以启动多个 Shimmy 实例做负载均衡
适合什么人用?
- 开发者:本地调试 LLM 应用,不用花钱调云端 API,改个 base_url 就能切回线上
- 企业用户:敏感数据不能出内网,在内网服务器部署 Shimmy,员工用现有工具直接调用
- 学生/研究者:低成本实验不同开源模型,对比效果,不花一分钱
- 隐私党:就是不想让对话数据上传,本地跑本地用,安心
总结
Shimmy 不是要取代 Ollama,而是提供了一个更轻量、更专注的选择。如果你只需要一个 OpenAI 兼容的本地 API 服务,不想装一堆依赖,Shimmy 值得一试。
4.8MB 的体积,1-2 秒启动,100% OpenAI 兼容——这可能是目前最轻的本地大模型推理方案了。
项目地址:https://github.com/Michael-A-Kuykendall/shimmy