candle介绍
candle 是huggingface开源的Rust的极简 ML 框架。
candle-矩阵乘法示例
cargo new myapp
cd myapp
cargo add --git https://github.com/huggingface/candle.git candle-core
cargo build # 测试,或执行 cargo ckeck
use candle_core::{Device, Tensor};
fn main() -> Result<(), Box<dyn std::error::Error>> {
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)?;
println!("{c}");
Ok(())
}
~/myrust$ cargo new myapp
Created binary (application) `myapp` package
~/myrust$ cd myapp
~/myrust/myapp$ cargo add --git https://github.com/huggingface/candle.git candle-core
Updating git repository `https://github.com/huggingface/candle.git`
Updating git submodule `https://github.com/NVIDIA/cutlass.git`
Adding candle-core (git) to dependencies.
Features:
- accelerate
- cuda
- cudarc
- cudnn
- metal
- mkl
Updating git repository `https://github.com/huggingface/candle.git`
Updating crates.io index
~/myrust/myapp$ cargo build
Downloaded serde_derive v1.0.195
Downloaded either v1.9.0
Downloaded autocfg v1.1.0
Downloaded zerofrom v0.1.3
Downloaded zerofrom-derive v0.1.3
Downloaded synstructure v0.13.0
Downloaded crossbeam-deque v0.8.5
Downloaded yoke-derive v0.7.3
Downloaded half v2.3.1
Downloaded bytemuck v1.14.1
Downloaded rand_core v0.6.4
Downloaded paste v1.0.14
Downloaded proc-macro2 v1.0.78
Downloaded itoa v1.0.10
Downloaded memmap2 v0.9.4
Downloaded syn v2.0.48
Downloaded crossbeam-epoch v0.9.18
Downloaded cfg-if v1.0.0
Downloaded bitflags v1.3.2
Downloaded num_cpus v1.16.0
Downloaded gemm-f32 v0.17.0
Downloaded reborrow v0.5.5
Downloaded stable_deref_trait v1.2.0
Downloaded rayon-core v1.12.1
Downloaded seq-macro v0.3.5
Downloaded thiserror-impl v1.0.56
Downloaded dyn-stack v0.10.0
Downloaded thiserror v1.0.56
Downloaded unicode-xid v0.2.4
Downloaded rand_chacha v0.3.1
Downloaded ppv-lite86 v0.2.17
Downloaded bytemuck_derive v1.5.0
Downloaded getrandom v0.2.12
Downloaded once_cell v1.19.0
Downloaded unicode-ident v1.0.12
Downloaded byteorder v1.5.0
Downloaded crc32fast v1.3.2
Downloaded num-complex v0.4.4
Downloaded gemm-common v0.17.0
Downloaded crossbeam-utils v0.8.19
Downloaded quote v1.0.35
Downloaded ryu v1.0.16
Downloaded num-traits v0.2.17
Downloaded zip v0.6.6
Downloaded rand_distr v0.4.3
Downloaded serde v1.0.195
Downloaded rand v0.8.5
Downloaded raw-cpuid v10.7.0
Downloaded libm v0.2.8
Downloaded serde_json v1.0.111
Downloaded rayon v1.8.1
Downloaded libc v0.2.152
Downloaded gemm-c64 v0.17.0
Downloaded gemm-c32 v0.17.0
Downloaded safetensors v0.4.2
Downloaded gemm-f64 v0.17.0
Downloaded gemm v0.17.0
Downloaded gemm-f16 v0.17.0
Downloaded yoke v0.7.3
Downloaded pulp v0.18.6
Downloaded 60 crates (3.1 MB) in 14.91s
Compiling proc-macro2 v1.0.78
Compiling unicode-ident v1.0.12
Compiling libc v0.2.152
Compiling cfg-if v1.0.0
Compiling libm v0.2.8
Compiling autocfg v1.1.0
Compiling crossbeam-utils v0.8.19
Compiling ppv-lite86 v0.2.17
Compiling rayon-core v1.12.1
Compiling reborrow v0.5.5
Compiling paste v1.0.14
Compiling either v1.9.0
Compiling bitflags v1.3.2
Compiling seq-macro v0.3.5
Compiling once_cell v1.19.0
Compiling unicode-xid v0.2.4
Compiling raw-cpuid v10.7.0
Compiling serde v1.0.195
Compiling crc32fast v1.3.2
Compiling serde_json v1.0.111
Compiling stable_deref_trait v1.2.0
Compiling itoa v1.0.10
Compiling ryu v1.0.16
Compiling thiserror v1.0.56
Compiling byteorder v1.5.0
Compiling num-traits v0.2.17
Compiling zip v0.6.6
Compiling crossbeam-epoch v0.9.18
Compiling quote v1.0.35
Compiling syn v2.0.48
Compiling crossbeam-deque v0.8.5
Compiling getrandom v0.2.12
Compiling memmap2 v0.9.4
Compiling num_cpus v1.16.0
Compiling rand_core v0.6.4
Compiling rand_chacha v0.3.1
Compiling rayon v1.8.1
Compiling rand v0.8.5
Compiling rand_distr v0.4.3
Compiling synstructure v0.13.0
Compiling bytemuck_derive v1.5.0
Compiling serde_derive v1.0.195
Compiling zerofrom-derive v0.1.3
Compiling thiserror-impl v1.0.56
Compiling yoke-derive v0.7.3
Compiling bytemuck v1.14.1
Compiling num-complex v0.4.4
Compiling dyn-stack v0.10.0
Compiling half v2.3.1
Compiling zerofrom v0.1.3
Compiling yoke v0.7.3
Compiling pulp v0.18.6
Compiling gemm-common v0.17.0
Compiling gemm-f32 v0.17.0
Compiling gemm-c64 v0.17.0
Compiling gemm-f64 v0.17.0
Compiling gemm-c32 v0.17.0
Compiling gemm-