⚡ AI开发平台
Shimmy:5.7K Stars 的纯 Rust WebGPU 推理引擎,单文件运行本地大模型
📅 2026-07-29
👤 阿涛
⏱ 约 10 分钟
什么是 Shimmy?
在本地大模型推理领域,长期以来存在一个尴尬的局面:Ollama 虽简单但依赖 llama.cpp(C++ 工具链),llama.cpp 本身高效但编译配置繁琐,vLLM 强大但对硬件要求高。对于只想在本地跑个模型的普通用户来说,每一步都需要处理 CUDA、CMake、Python 虚拟环境等复杂依赖。
Shimmy 试图彻底改变这一点——它是一个纯 Rust 编写的 WebGPU 推理引擎,只有一个可执行文件,无需 Python、无需 C++ 工具链、无需 CUDA,在任何 GPU 上都能运行(NVIDIA、AMD、Intel、Apple Silicon),并提供 100% 兼容的 OpenAI API 接口。
项目由开发者 Michael A. Kuykendall 创建,于 2025 年 8 月开源,采用 MIT 许可证。开发者明确承诺:「Shimmy 将永远免费。没有星号、没有『暂时免费』、没有转向付费。」
📊 项目速览
⭐ GitHub Stars: 5,718+ | 🍴 Forks: 549 | 🦀 语言: 100% Rust | 🔑 许可证: MIT
📦 形式: 单文件二进制 | 🔧 引擎: Airframe (纯 Rust WebGPU/WGSL)
🖥 平台: Linux / macOS / Windows | 📅 首次发布: 2025-08-28
🚀 启动时间: <100ms | 💾 内存占用: ~50MB
Shimmy 的开发理念非常清晰:「基础设施应该是透明的」。它把自己定位为 LLM 推理领域的基础设施——你不需要知道它如何工作,只需要它能工作。从下载到运行,整个流程可以在 30 秒内完成。
Airframe 引擎:从零构建的 Rust GPU 运行时
Shimmy 最有技术含量的部分是其自研的 Airframe 引擎(从 v2.0.0 开始成为默认推理引擎)。这是一套纯 Rust 编写的 WebGPU(WGSL)Transformer 运行时,从零构建,没有依赖任何现有的推理框架。
为什么这很重要?
- 无需 C++ 工具链:从头到尾只有 Rust,编译简单,不存在 CMake 配置地狱
- F32 全精度:推理全程使用 32 位浮点精度,确定性好,输出质量高
- WGSL 计算着色器:通过 WebGPU 在任何 GPU 上运行(Vulkan / D3D12 / Metal)
- 自动模型检测:从 GGUF 元数据自动推导模型规格,无需硬编码常量
- YaRN RoPE 缩放:通过环境变量
SHIMMY_MAX_CTX 即可扩展上下文长度
Airframe 引擎目前经过 GPU 数学验证(GPU Math Verified),对支持的每个模型的每种量化类型,都独立验证了 GPU 反量化着色器的输出与 CPU 参考实现完全一致。测试使用 quant_verify 工具,每种量化类型测试 512 个元素。
TurboShimmy:INT4 KV 缓存压缩
v2.1.0 引入的 TurboShimmy 是 Shimmy 的另一个技术亮点——它通过 ON-GPU 的 INT4 KV 缓存压缩系统,将 KV 缓存从 32 位浮点压缩为每头向量 4 位整数,全部在 WGSL 计算着色器中完成,无需 CPU 往返。
一句话效果:一个参数 ~7 倍 KV 缓存节省。
🚀 不同 GPU 显存下的效果对比
3GB GPU: 原本只能跑 Llama-3.2-1B → TurboShimmy 后可跑 Llama-3.2-3B ✅
4GB GPU: 原本 Llama-3.2-3B 2048 上下文跑得很紧 → 可跑到 8192 上下文 ✅
6GB GPU: 原本仅能跑 3B 短上下文 → 可跑 7B 模型 ✅
以 Llama-3.2-3B 为例(ctx=2048):默认 F32 模式 KV 缓存 ~512MB,总显存 ~2.4GB;开启 TurboShimmy 后 KV 缓存仅 ~72MB,总显存 ~2.0GB,2.5GB 的 GPU 即可流畅运行。
质量验证方面,在 Llama-3.2-3B 上进行的「大海捞针」测试表明:在 ctx≤2048 时,所有测试深度(15%、50%、85%)下检索引擎能力相较 F32 模式零退化。
核心功能详解
⚡
单文件二进制
一个可执行文件即开即用,无需 Python、C++ 工具链或 CUDA
🖥️
全 GPU 支持
WebGPU 驱动层兼容 NVIDIA、AMD、Intel、Apple Silicon
🔌
100% OpenAI API
完整兼容 /v1/chat/completions 等端点,现有工具直接对接
🔋
INT4 KV 压缩
TurboShimmy 节省 ~7× KV 缓存显存,低配 GPU 也能跑大模型
🔍
模型自动发现
自动检测 HF 缓存、Ollama、LM Studio 和本地 models/ 目录
📦
GGUF 原生支持
兼容整个 llama.cpp 生态系统,7 种架构 + 7 种量化类型
⚙️
自动上下文扩展
YaRN RoPE 缩放 + 自动 KV 缓存分配,一键扩展上下文窗口
🔄
跨平台
Linux / macOS / Windows,同一二进制,一致体验
🔌 模型自动发现
Shimmy 会自动扫描以下位置的 GGUF 模型并注册服务:HuggingFace 模型缓存、Ollama 模型目录、LM Studio 缓存(~/.cache/lm-studio/models)、本地 ./models/ 文件夹。无需手动配置每个模型的路径。
⚡ 极致性能
与同类工具相比,Shimmy 的性能优势非常明显:启动时间 <100ms(Ollama 需要 5-10 秒),内存占用仅 ~50MB(Ollama 需要 200MB+)。这使得它特别适合作为服务组件嵌入到其他应用中。
支持的模型与量化类型
✅ 已 GPU 验证的模型
| 模型 |
架构 |
量化 |
大小 |
最低 VRAM |
| TinyLlama-1.1B-Chat |
Llama |
Q4_0 |
638 MB |
~800 MB |
| Llama-3.2-1B-Instruct |
Llama |
Q4_K_M |
770 MB |
~1 GB |
| Llama-3.2-3B-Instruct |
Llama |
Q4_K_M |
1.9 GB |
~2.5 GB |
| phi-2 |
Phi-2 |
Q4_K_M |
1.7 GB |
~2.2 GB |
| gemma-2-2b-it |
Gemma-2 |
Q4_K_M |
1.6 GB |
~2 GB |
| starcoder2-3b |
StarCoder2 |
Q4_K_M |
1.8 GB |
~2.3 GB |
| gpt2 |
GPT-2 |
Q4_K_M |
107 MB |
~200 MB |
额外的 7B 级模型(deepseek-coder-6.7b、deepseek-llm-7b、qwen2-7b 等)处于计划中,需要 ≥16GB VRAM 的 GPU 进行验证。
✅ 支持的量化类型
F32(全精度)、F16(半精度)、Q4_0(4-bit 32 元素块)、Q8_0(8-bit 32 元素块)、Q4_K(4-bit K-quant 超块)、Q5_K(5-bit K-quant)、Q6_K(6-bit K-quant)。所有类型在 GPU 和 CPU 之间进行了交叉验证。
与同类工具对比
| 特性 |
Shimmy |
Ollama |
llama.cpp |
vLLM |
| 启动时间 |
<100ms |
5-10s |
秒级 |
分钟级 |
| 内存占用 |
~50MB |
200MB+ |
50-100MB |
500MB+ |
| 语言 |
纯 Rust |
Go + C++ |
C++ |
Python + C++ |
| GPU 后端 |
WebGPU |
CUDA/Metal/Vulkan |
CUDA/Metal/Vulkan |
CUDA |
| OpenAI API |
100% |
部分 |
需额外服务 |
100% |
| 安装方式 |
单文件下载 |
包管理器 |
编译/下载 |
pip install |
| Python 依赖 |
无 |
无 |
无 |
需要 |
| 许可证 |
MIT |
MIT |
MIT |
Apache 2.0 |
Shimmy 的最大优势是极低的启动开销和部署复杂度。如果你需要一个轻量级、可嵌入的本地推理服务,Shimmy 在当前市场上几乎没有对手。
快速上手教程
以下是在 30 秒内启动 Shimmy 的完整流程:
下载 Shimmy 二进制文件
从 GitHub Releases 页面下载对应平台的单个可执行文件:
Linux/macOS: shimmy-linux-x86_64,Windows: shimmy-windows-x86_64.exe
下载 GGUF 模型
从 HuggingFace 下载一个 GGUF 格式的模型文件,比如 TinyLlama-1.1B-Chat Q4_0(仅 638MB)。
启动服务
SHIMMY_BASE_GGUF=/path/to/model.gguf ./shimmy serve
调用 API
使用任何兼容 OpenAI SDK 的工具进行调用:
curl http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model":"default","messages":[{"role":"user","content":"你好!"}]}'
开启 INT4 KV 缓存压缩只需加一个参数:./shimmy serve --kv-quant int4
扩展上下文长度:SHIMMY_MAX_CTX=8192 ./shimmy serve
OpenAI API 兼容性
Shimmy 提供 100% 兼容的 OpenAI API 端点:
/v1/chat/completions — 聊天补全(ChatML 格式)
/v1/completions — 文本补全
/v1/models — 模型列表(自动发现后注册的模型)
/v1/embeddings — 嵌入向量
这意味着任何支持 OpenAI API 的工具——ChatBox、Open WebUI、Cline、Continue.dev 等——都可以通过更改 API Base URL 直接对接 Shimmy。
常见问题
Shimmy 真的免费且永远免费吗?
开发者明确承诺「Shimmy will be free forever」,采用 MIT 许可证,且表示永远不会转向付费。赞助是自愿行为。
我的 GPU 能用吗?
Shimmy 使用 WebGPU 作为 GPU 后端,兼容 Vulkan(NVIDIA/AMD)、D3D12(Windows)和 Metal(Apple Silicon)。基本上所有现代 GPU 都支持。
需要安装什么依赖吗?
不需要。Shimmy 是静态编译的单文件二进制,不依赖 Python、C++ 运行时、CUDA 工具包或任何其他外部软件。下载即可运行。
支持多 GPU 吗?
目前不支持多 GPU 并行。v2.3.0 加入了适配器选择修复,优先选择独立 GPU 而非集成 GPU。
与 Ollama 相比如何?
Shimmy 更加轻量(~50MB 内存 vs Ollama 的 200MB+)、启动更快(<100ms vs 5-10s)、OpenAI API 兼容性更好(100% vs 部分)。但 Ollama 有更丰富的模型管理功能和更大的社区生态。
能跑 7B 以上的大模型吗?
需要 ≥16GB VRAM 的 GPU。shimmy 的 Airframe 引擎在技术上支持更大的模型,但这些模型尚未经过官方 GPU 数学验证。
Rust
WebGPU
本地推理
GGUF
OpenAI兼容
开源
单文件
LLM