candle
Hugging Face 出品的纯 Rust 实现机器学习框架,以零成本抽象和内存安全著称,支持 C
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
Hugging Face 出品的纯 Rust 实现机器学习框架,以零成本抽象和内存安全著称,支持 C
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下:你正在开发一个需要实时推理的 AI 应用,数据吞吐量极大,现有 Python 框架的 GIL 锁让你头疼不已——每次并发推理都要付出高昂的线程切换代价。你开始思考:能不能用一门以零成本抽象著称的语言,来重写这套机器学习基础设施?Hugging Face 的工程师们也有同样的想法,于是 Candle 诞生了。
Candle 是 Hugging Face 于 2023 年推出的纯 Rust 实现机器学习框架,目标非常明确——在 Rust 生态中提供与 PyTorch 相似的易用 API,同时享受 Rust 的内存安全与并发优势。它的名字取自蜡烛,寓意"点亮"Rust ML 生态暗角。发布两年多,已斩获 2 万余 Stars,成为 Rust 生态最受欢迎的 ML 框架。
Candle 采用 monorepo 多 crate 结构,每个子 crate 专注一个功能层级:
Tensor、Device、Storage 等底层抽象,支持 CPU(普通 + MKL/Accelerate)、CUDA、Metal 四种后端。核心代码约 3 万行,手工编写所有算子而非依赖 LLVM 自动向量化,确保极致控制。nn.Module 的 Sequential 组合模式。这种架构的好处在于:既可以单独引入 candle-core 作为轻量推理引擎嵌入任意 Rust 应用,也可以组合使用完整生态。对 Rust 开发者而言,这比依赖 PyFFI 或 Python 子进程要优雅得多。

图1:Candle 实现 BERT 推理的代码示例,展示了其简洁的 API 设计
Candle 支持 CUDA(英伟达 GPU)和 Metal(Apple M 系列芯片),切换设备只需一行代码修改:
let device = Device::Cpu; // CPU 推理
let device = Device::new_cuda(0)?; // NVIDIA GPU
let device = Device::new_metal(0)?; // Apple Silicon
底层通过 candle-kernels(CUDA kernel)和 candle-metal-kernels(Metal compute shader)实现手写 GPU 算子,Flash Attention 也做了专门优化(candle-flash-attn crate)。
Candle 内置权重量化支持,支持 INT8、INT4 等低比特量化,大幅降低显存占用。结合 GGUF 格式支持(通过 candle-onnx),可以加载 llama.cpp 生态的量化模型,在消费级 GPU 上跑 70B 参数模型不再是梦。
Candle 支持编译为 WebAssembly,可直接在浏览器中运行推理。官方在 Hugging Face Spaces 部署了 Whisper、LLaMA2、T5、YOLO、Segment Anything 等多个在线 Demo,用户无需安装即可体验。
在线 Demo 地址:https://huggingface.co/spaces/lmz/candle-llama2
通过 candle-onnx crate,Candle 可以加载 ONNX 模型文件,打通了 PyTorch → ONNX → Candle 的模型转换链路。
Candle 的设计哲学是 "最小惊讶原则"——API 与 PyTorch 高度相似,Rust 开发者几乎不需要额外学习成本:
use candle_core::{Device, Tensor};
let device = Device::Cpu;
let a = Tensor::randn(0f32, 1., (2, 3), &device)?;
let b = Tensor::randn(0f32, 1., (3, 4), &device)?;
let c = a.matmul(&b)?; // 矩阵乘法
对于预训练模型,只需几行代码:
let weights = candle_nn::VarBuilder::from_varmap(varmap, candle_core::DType::F32, &device);
let model = llm::llama::Llama::load(weights, &vocab_path, &config)?;
项目提供了详尽的 candle-book 在线文档(基于 mdBook 构建),覆盖安装指南、训练教程、CUDA 后端配置、错误处理等完整知识体系。

图2:Candle 在线文档站(mdBook 构建),提供从入门到精通的完整指引
从代码结构看,Candle 的 candle-core 实现了约 200+ 算子,覆盖 Tensor 运算、卷积、归一化、注意力、损失函数等核心类别。candle-nn 提供了 25+ 常用网络层模块。测试覆盖较为完整,每个子 crate 都有 tests 目录下的单元测试和 benches 目录下的性能基准测试。
文档质量极高——README 包含了快速上手、多后端配置、预训练模型使用等完整说明;candle-book 提供了从基础到高级的体系化教程;crates.io 上的版本更新保持活跃。
Candle 也面临一些现实挑战:
Candle 的出现代表了一个重要趋势——AI 基础设施正在从 Python 独大向多语言扩展。随着 LLM 推理引擎(如 vLLM、llama.cpp)、WebAssembly AI(Tinygrad、WASM)、边缘推理(ONNX Runtime)等场景对性能和安全的要求越来越高,Rust 的内存安全 + 零成本抽象特性开始被 AI 社区重视。
Hugging Face 作为全球最大的 ML 模型平台,选择自研 Candle 并用它实现 Whisper、LLaMA 等主流模型的 Rust 移植,意义深远:它为 Rust 开发者打开了进入 AI 世界的大门,也为需要将 ML 能力嵌入到 Rust 系统服务(数据库、搜索引擎、游戏引擎、网络代理)中的工程师提供了基础设施选择。
未来,随着 Candle 生态的持续完善和 Rust 在系统编程领域的影响力扩大,"Rust + AI" 有望成为继 "Python + AI" 之后的第二条主流技术路线。