candle-vllm
纯Rust实现的高性能LLM推理引擎,提供OpenAI兼容API,支持PagedAttention和
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
纯Rust实现的高性能LLM推理引擎,提供OpenAI兼容API,支持PagedAttention和
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
当你需要在本地服务器部署一个大语言模型,却苦于 vLLM 需要 Python 环境依赖过多、transformers 加载慢、显存碎片化严重时,candle-vllm 提供了一条完全不同的技术路线:纯 Rust 实现,从底层到上层亲手掌控 CUDA/Metal 加速、KV 缓存管理和请求调度,不依赖 Python 生态,用更低的资源消耗跑出更高的吞吐量。
大语言模型推理一直是工程上的硬骨头。主流方案如 vLLM 依托 PyTorch 生态,功能完善但体积庞大、启动慢、显存管理粗放。candle-vllm 的作者意识到,Rust 语言在系统编程层面的控制力恰好是 LLM 推理服务所急需的:用 PagedAttention 精细化管理 KV 缓存减少显存碎片,用 Continuous Batching 最大化 GPU 利用率,用 Rust 零成本抽象的特性避免 Python GIL 瓶颈。
项目诞生于 2024 年初,当前版本 0.8.3,支持从 Llama 到 Qwen3.5 MoE 等 18 种以上模型架构,解码速度在同精度下可与 Python 方案比肩。
candle-vllm 提供与 OpenAI Chat Completions API 完全兼容的 HTTP 接口,包括 /v1/chat/completions、/v1/completions 等端点,支持流式输出(SSE)。这意味着现有基于 OpenAI SDK 的应用(如 LangChain、LlamaIndex、OpenWebUI)几乎不需要修改代码,直接将 base_url 指向 candle-vllm 服务地址即可无缝切换到本地模型。
这是 candle-vllm 最核心的技术亮点。传统推理引擎为每个请求预先分配固定大小的 KV 缓存 Block,导致显存碎片化和内存浪费。candle-vllm 参考 vLLM 的设计,将 KV 缓存切分为固定大小的 Block(默认 Page Size),按需动态分配,碎片率大幅降低。在高并发场景下,同等显存可容纳的并发请求数显著增加。
不同于静态 batching(等待 N 个请求凑成一batch再处理),Continuous Batching 允许请求在生成完成后立即退出,新请求立即加入批次,GPU 利用率始终保持高位。candle-vllm 在 src/scheduler/ 中实现了这一调度逻辑,结合 Block Engine 管理显存分配。
针对显存受限的场景,candle-vllm 支持多种量化方案:GPTQ / Marlin(4-bit 整数量化,Marlin 格式有专用硬件加速,Llama-8B Q4K 可达 163 tokens/s);AWQ(Activation-Aware Weight Quantization,适合混合专家模型);FP8 / Block-wise FP8(Qwen3 系列专属优化,配合 TurboQuant KV Cache 实现更高压缩比);MXFP4 / NVFP4(MiniMax-M2.5、GLM4.7 等新型号的硬件加速格式)。量化后 8B 模型显存需求可从 ~16GB 降至 ~6GB,使消费级 GPU 运行大模型成为可能。
通过 Rust 的多进程(multi-process)和多线程(multi-threaded)模式,candle-vllm 支持多 GPU 并行推理,默认使用张量并行(Tensor Parallelism)。对于超大规模模型(671B DeepSeek),还支持 MPI 多节点分布式推理,通过 mpi feature 启用。
candle-vllm 原生支持 Model Context Protocol(MCP),可与外部工具集成,实现类似 Function Calling 的 Agent 工作流。src/mcp/ 模块包含了 MCP Client、Server、Transport 完整实现,支持工具注册、流式解析和 schema 校验。
从 src/ 目录结构可以清晰看出项目的模块化设计:backend/ 负责低层后端算子(量化、GPTQ、GGUF、CUDA Graph);openai/models/ 实现各模型架构(Llama、Mistral、Qwen、DeepSeek、GLM 等);scheduler/ 实现调度器(Block Engine、Cache Engine、Prefix Cache、Sequence);openai/pipelines/ 管理推理管线(LLM Engine、Streaming、Multi-process/Threaded);openai/ 处理 OpenAI 协议层(请求解析、响应序列化、API Server 基于 Axum);mcp/ 实现 MCP 协议(Client、Server、Transport、Type);tools/ 处理工具调用解析(Schema、Parser、Stream Parser)。
关键依赖:candle-core 和 candle-nn 来自 Hafnir/candle 生态,是 Rust 原生的张量计算库,支持 CUDA/Metal/Accelerate 后端;attention-rs 提供了 FlashAttention 的 CUDA 实现;axum 是 Web 服务层;tokio 异步运行时;openai-protocol 封装了 OpenAI API 的数据结构。
纯 Rust 实现,无 Python 依赖,编译产物是单一可执行文件,部署极为轻量。
适合的场景:需要在 Linux 服务器长期运行 LLM 推理服务,期望比 transformers 更快更省显存的团队;有 Rust 技术栈,想要自研 AI 基础设施的开发者;需要在 Mac(Metal GPU)上离线运行大模型的用户;对 vLLM 的 Python 依赖感到疲惫,想要更轻量的替代方案。
局限之处:纯 CLI 工具,没有 Web UI,对非技术用户不够友好;模型支持依赖手动适配新架构,不像 transformers 那样开箱即用所有模型;社区规模远小于 vLLM,遇到问题主要靠源码和 GitHub Issues;调试难度较高,Rust 编译时间长。
candle-vllm 代表了一种趋势:用 Rust 重写 AI 推理链路的各个环节,实现比 Python 更低的延迟和更精细的资源控制。随着 LLM 推理从研究走向生产,类似 candle-vllm、llama.cpp、SGLang 的 Rust 原生方案正在快速崛起,它们不追求功能全面,而是聚焦在特定硬件上的极致性能。对于追求部署效率和资源利用率的团队,值得关注这一技术方向。