Candle
是 Rust
的极简 ML 框架,重点关注性能(包括 GPU 支持)和易用性。尝试我们的在线演示:
whisper
、LLaMA2
、T5
、yolo
、Segment Anything
。
模块
Candle
项目包括一些crates
,如下:
candle-book
:candle
相关的文档candle-core
: 核心功能库,核心操作,设备,Tensor
结构定义等。candle-nn
: 神经网络,构建真实模型的工具candle-examples
: 在实际环境中使用库的示例candle-datasets
: 数据集和数据加载candle-transformers
:Transformer
相关实现工具candle-flash-attn
:Flash Attention v2
实现candle-kernels
:CUDA
加速实现candle-pyo3
:Rust
提供的Python
接口candle-wasm-examples
:Rust
WASM
示例
其它有用的库:
candle-lora
: 提供了符合官方peft
实现的LoRA
实现
特点
- 语法简单(看起来像PyTorch)
- 支持模型训练
- 支持用于自定义操作运算
- 后端
- 优化的CPU后端,具有针对
x86
的可选MKL
支持和针对Mac
的Accelerate
支持 - CUDA后端可以再GPU上高效运行,通过NCCL运行多GPU分配
- WASM支持,在浏览器中运行模型
- 优化的CPU后端,具有针对
- 包含的模型
- 语言模型
LLaMA v1 and v2
FaIcon
StarCoder
Phi v1.5
T5
Bert
Whisper
(多语言支持)Stable Diffusion v1.5, v2.1, XL v1.0
Wurstchen v2
- 计算机视觉
DINOv2
EfficientNet
yolo-v3
yolo-v8
Segmeng-Anything(SAM)
- 语言模型
- 文件格式
- 加载模型支持的格式如下:
safetensors
npz
ggml
PyTorch files
- 加载模型支持的格式如下:
- 无服务部署
- 小型且快速的部署
- 使用
llama.cpp
量化类型的量化支持
基本用法介绍
-
创建张量
Tensor::new(&[[1f32, 2.], [3., 4.]], &Device::Cpu)?
Tensor::zeros((2, 2), DType::F32, &Device::Cpu)?
-
张量索引
tensor.i((.., ..4))?
-
张量重塑
tensor.reshape((2, 2))?
-
张量矩阵乘法
a.matmul(&b)?
-
张量数据移动到特定设备
tensor.to_device(&Device::new_cuda(0)?)?
-
更改张量数据类型
tensor.to_dtype(&Device::F16)?
-
张量算术运算
&a + &b
-
保存模型
candle::safetensors::save(&HashMap::from([("A", A)]), "model.safetensors")?
-
加载模型
candle::safetensors::load("model.safetensors", &device)