shimmy
纯Rust编写的轻量级本地大模型推理服务器,100%兼容OpenAI API接口
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
纯Rust编写的轻量级本地大模型推理服务器,100%兼容OpenAI API接口
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
图1:Shimmy 项目 Logo
想象这样的场景:你在凌晨两点部署本地 LLM 服务,NVIDIA 驱动报错、CUDA 版本不兼容、Python 环境依赖地狱轮番上阵——而隔壁工位的同事只需要一条 curl 命令,30 秒后模型就跑起来了。
这就是 Shimmy 试图解决的问题。它是一个用纯 Rust 编写的本地 AI 推理服务器,兼容 OpenAI API 协议,无需 Python、无需 CUDA、不需要任何复杂的工具链,一个二进制文件搞定一切。永久免费,没有套路。
本地 LLM 推理一直是开源社区的热门赛道。Ollama 靠着简洁的 UX 拿下了大量用户,但它的底层依赖(llama.cpp + Python 环境)在企业级部署时经常成为噩梦。llama.cpp 作者 Georgi Gerganov 也在 2024 年公开表示 CUDA 维护负担过重,开始重构计算后端。
正是在这个时间窗口下,Michael A. Kuykendall 从 2024 年开始系统性地推进 Shimmy 项目。v1.x 基于 llama.cpp 构建,提供 Ollama 兼容的 API;v2.0(2025 年)是真正的分水岭——完全移除 llama.cpp,引入自研的 Airframe 引擎,用纯 Rust + WebGPU(WGSL)实现推理,从此告别 C++ 工具链。
Shimmy v2.0 的核心创新是 Airframe 引擎——一个用 Rust 实现的 WebGPU(WGSL)推理运行时。WebGPU 原本是浏览器标准,但 wgpu 库将它移植到了桌面环境,提供了跨平台的 GPU 通用计算能力:
| 操作系统 | 底层 API |
|---|---|
| Windows | Direct3D 12(首选)或 Vulkan |
| Linux | Vulkan(首选)或 OpenGL |
| macOS | Metal(Apple Silicon 原生) |
这意味着 Shimmy 不需要 NVIDIA 独占的 CUDA,AMD 显卡(Vulkan)、Intel 核显(Xe)、Apple Silicon(Metal)全部支持。一个二进制文件在不同平台自动选择最优后端。
Shimmy 支持两种主流模型格式:
两种格式都可以通过 SHIMMY_BASE_GGUF 环境变量指定目录,Shimmy 自动扫描并注册模型,无需配置文件。
Shimmy 实现了标准的 OpenAI Chat Completions API:
curl http://localhost:11434/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model": "llama-7b", "messages": [{"role": "user", "content": "Hello!"}]}'
任何使用 OpenAI SDK 的应用(LangChain、LlamaIndex、Dify 等)只需改一个 base URL,就能切换到本地 Shimmy 后端。API 兼容性实测通过 OpenAI 官方测试套件。
当 max_tokens 超过模型原生上下文窗口时,Shimmy 使用 YaRN(Yet another RoPE extensioN) 技术动态重新计算旋转位置编码(RoPE)的缩放因子,支持超长上下文推理。内置 KV Cache 完全重置机制,保证请求间的状态隔离。
| 模型 | 大小 | 加载时间 | 首 Token | 吞吐 | 显存 |
|---|---|---|---|---|---|
| phi3-mini | 2.4GB | 1.2s | 220ms | 24.3 t/s | 3.1GB |
| llama-7b | 4.1GB | 2.8s | 410ms | 15.7 t/s | 5.9GB |
| mistral-7b | 4.1GB | 2.6s | 380ms | 18.2 t/s | 5.7GB |
实测硬件:Intel i7-12700K + 32GB RAM + NVMe SSD。相比 Ollama 在同等硬件下差距不大,但部署复杂度显著更低。
# Linux x86_64 (含 WebGPU)
curl -L https://github.com/Michael-A-Kuykendall/shimmy/releases/latest/download/shimmy-linux-x86_64 -o shimmy
chmod +x shimmy
./shimmy serve
v2.0 预编译版本已包含 Airframe WebGPU 引擎,无需额外安装驱动层。macOS ARM64(Apple Silicon)和 Windows 版本同样提供。
# docker-compose.yml 核心配置
services:
shimmy:
image: ghcr.io/michael-a-kuykendall/shimmy:latest
ports:
- "11434:11434"
volumes:
- ./models:/app/models
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
Docker 镜像使用多阶段构建(Rust 1.85 编译 + Debian Bookworm 运行),最终镜像极小,且支持 NVIDIA GPU 直通。
cargo install shimmy
# 或克隆后
cargo build --release --features huggingface
注意:从源码编译默认使用 huggingface 引擎(CPU),需要额外安装 Python 环境。如需 GPU 加速,需启用 --features airframe,但需要完整 Rust 工具链 + wgpu 依赖。
Shimmy v2.0 实现了 HTTP 流式响应,但 WebSocket 接口仍在开发中。对于需要实时双向通信的场景(如实时对话界面),可能需要等待后续版本。
Shimmy v2.0 完全移除了 llama.cpp 的 GGML 后端,仅支持 GGUF 格式。如果你的模型库还在用旧版 GGML 格式,需要先转换。
Shimmy 是推理服务器,不支持 LoRA 微调、模型训练等操作。这类需求仍需用 ollama、text-generation-webui 等工具。
部分用户在 Apple Silicon Mac 上报告 Metal 后端性能低于预期,尤其是大模型(70B)。Airframe 的 macOS 交叉编译能力仍在建设中,ARM64 Linux 版本也暂时只支持 huggingface 引擎而非 Airframe。
Shimmy 的出现是 Rust 在 AI 基础设施领域影响力的又一个例证。Burn(深度学习框架)、Candle(极简推理)、Gryphon(量化推理)……纯 Rust ML 生态正在快速成熟。
相比 Python-first 的工具链,Rust 的优势在于:
Shimmy 的 Apache-2.0 许可和「永久免费」承诺也值得注意。在 Llama.cpp 作者 Georgi Gerganov 开始对维护负担感到疲惫、部分项目转向闭源许可的背景下,这种社区驱动的开源承诺显得尤为稀缺。
作者 Michael A. Kuykendall 在项目中明确表示:所有赞助资金 100% 用于维持项目免费,路线图直接受社区投票影响。这种透明运营模式在小团队开源项目中极为罕见。
如果你正在找一款无需配置、开箱即用、支持多硬件后端的本地 LLM 推理服务,Shimmy v2.0 值得加入你的工具箱。只需一条 curl 命令,30 秒后你的本地模型就会开始说话。