eb899db16c
* Add q_* ops to match float ops * Refactor q_* ops w/ dequant_op_quant macro * Comparison ops are already implemented by default to compare dequantized values * Add default arg min/max implementation and fix tch implementation * Avoid division by zero scale * Add default q_gather implementation (tch does not support on quantized tensor) * Add warning instead for tch quantize_dynamic * Call chunk backend implementation * Add QFloat check for q_ ops * Add tch q_min/max_dim_with_indices * Add q_ ops tests * Clippy fix * Remove dead code/comments * Fix quantization tests precision * Set higher tolerance for ndarray backend * Remove comment |
||
---|---|---|
.. | ||
src | ||
Cargo.toml | ||
LICENSE-APACHE | ||
LICENSE-MIT | ||
README.md | ||
env.bash |
README.md
Burn Tensor
Burn Tensor Library
This library provides multiple tensor implementations hidden behind an easy to use API that supports reverse mode automatic differentiation.
Features
- Flexible ✨
- CPU + GPU 🙏
- Multi-Threads 🚀
- Intuitive Usage 😌
- No Global State 🚫
- Multiple Backends 🦾
- Reverse Mode Autodiff 🔥
Backends
For now, three backends are implemented, and some more are planned.
- Pytorch using tch-rs
- 100% Rust backend using ndarray
- WGPU backend
- Candle backend
- Tensorflow using tensorflow-rust
- CuDNN using RustCUDAtensorflow-rust
- ...
Autodiff
Automatic differentiation is implemented as just another tensor backend without any global state. It's possible since we keep track of the order in which each operation as been executed and the tape is only created when calculating the gradients. To do so, each operation creates a new node which has a reference to its parent nodes. Therefore, creating the tape only requires a simple and efficient graph traversal algorithm.
let x = AutodiffTensor::from_tensor(x_ndarray);
let y = ADtodiffTensor::from_tensor(y_ndarray);
let z = x.matmul(&y);
let grads = z.backward();
let x_grad = x.grad(&grads);
let y_grad = y.grad(&grads);
Cuda
To run with CUDA set TORCH_CUDA_VERSION=cu121
.
Notes
This crate can be used alone without the entire burn stack and with only selected backends for smaller binaries.
Feature Flags
This crate can be used without the standard library (#![no_std]
) with alloc
by disabling
the default std
feature.
std
- enables the standard library.burn-tensor-testgen
- enables test macros for generating tensor tests.