一、概述
Candle 是由知名开源组织 Hugging Face 开发的一个极简的机器学习框架。它专为 Rust 语言打造,致力于提供高性能和易用性的完美结合。Candle 的诞生为 Rust 生态在机器学习领域带来了新的选择,让 Rust 开发者能够更轻松地构建和部署机器学习应用。
首先,Rust 语言以其优秀的性能和安全性著称,非常适合开发对性能和可靠性要求较高的应用。其次,Candle 的 API 设计借鉴了 PyTorch,使得 Rust 开发者可以用较低的学习成本快速上手。此外,Candle 支持多种后端,可以灵活地部署到各种环境中,满足不同的需求。
二、 Candle 的特点
简洁直观: Candle 的 API 设计借鉴了 PyTorch,代码风格简洁明了,学习曲线平缓。
高性能: 得益于 Rust 语言的高性能,Candle 在推理速度上比 Python 框架有明显优势。
多种后端: 支持 CPU、GPU(CUDA)和浏览器(WASM)等多种部署环境。
丰富的模型库: 内置了大量常用的 SOTA 模型,涵盖 NLP、语音、视觉等领域
三、示例
1、安装
通过 cargo add candle-core 就可以安装 cpu 版本的 Candle,这里以最简化的版本演示。本地 Cargo.toml 文件内容为:
[package]
name = "candle_demo"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
candle-core = "0.4.1"
2、使用
下面在 src/main.rs 中使用 Candle 进行矩阵乘法的代码:
// 引入 Candle 的核心模块
use candle_core::{Device, Tensor};
fn main() -> Result<(), Box<dyn std::error::Error>> {
// 创建一个 CPU 设备
let device = Device::Cpu;
// 在 CPU 上创建两个随机矩阵
// a: 2 行 3 列
// b: 3 行 4 列
let a = Tensor::randn(0f32, 1.0, (2, 3), &device)?;
let b = Tensor::randn(0f32, 1.0, (3, 4), &device)?;
// 计算矩阵乘法 c = a * b
// c 的形状为 (2, 4)
let c = a.matmul(&b)?;
// 打印结果矩阵 c
println!("{c}");
// 返回 Ok,表示程序运行成功
Ok(())
}
3、说明:
- 首先引入了 Candle 的核心模块 Device 和 Tensor。
- 创建了一个 CPU 设备 device。
- 在 device 上创建了两个随机矩阵 a 和 b,形状分别为 (2, 3) 和 (3, 4)。
- 调用 matmul 方法计算矩阵乘法 c = a * b,结果矩阵 c 的形状为 (2, 4)。
- 使用 println! 宏打印结果矩阵 c。
- 返回 Ok(()),表示程序运行成功,没有发生错误。
输出:
[[-2.3070, 1.9028, -1.3688, 0.5730],
[ 0.1824, 0.6339, -2.1298, -2.2783]]
Tensor[[2, 4], f32]
是不是非常简单?只要把数据加载到 Tensor 中,就可以方便地进行各种运算。
四、总结
Candle 的出现让 Rust 在机器学习领域更进一步,为开发者提供了一个高效易用的工具。无论你是想尝试前沿的 AI 模型,还是要将模型部署到资源受限的环境中,Candle 都是你的不二之选。目前本项目正在积极开发中,对于有兴趣入门 Rust 使用机器学习的小伙伴可以尽早入门!