v0.10.0

tracel-ai/burnv0.10.0Oct 24, 2023by nathanielsimard

AI Summary

This release introduces the `burn-compute` crate, a new training dashboard, and WebGPU support in the browser, accompanied by several breaking changes to the tensor API.

Key Highlights

  • Introduction of `burn-compute` crate for custom backends.
  • New training dashboard using Ratatui.
  • WebGPU support in the browser.
  • Breaking changes: Reading operations are async in wasm.

Breaking Changes

  • Reading operations are now async when compiling to wasm (except for `wasm-sync`).
  • Improved Clamp API.
  • Massive refactor to use `burn-compute`.
  • Heavy refactor of `burn-train`.

New Features

  • Burn Compute crate for async backends.
  • Autotune capabilities.
  • ONNX record types and no-std support.
  • Covariance and diagonal operations.
  • Unfold tensor operation.
  • Non-blocking reads in WGPU.
  • Custom checkpoints and early stopping.

Full Release Notes

Burn `v0.10.0` sees the addition of the `burn-compute` crate to simplify the process of creating new custom backends, a new training dashboard and the possibility of using the GPU in the browser along with a web demo. Additionally, numerous new features, bug fixes, and CI improvements have been made.

Warning: there are breaking changes, see below.

# Changes

## Burn Compute

- Introduction of `burn-compute`, a new Burn crate making it easier to create async backends with custom kernels. @nathanielsimard, @louisfd

- Add new memory management strategies @louisfd, @nathanielsimard

- Add autotune capabilities @louisfd

## Burn Import

- Add more ONNX record types @antimora

- Support no-std for ONNX imported models @antimora

- Add custom file location for loading record with ONNX models @antimora

- Support importing erf operation to ONNX @AuruTus

## Burn Tensor

- Add covariance and diagonal operations @ArvidHammarlund

- [Breaking] Reading operations are now `async` when compiling to `wasm`, except when `wasm-sync` feature is enabled. @nathanielsimard @AlexErrant 

- [Breaking] Improved Clamp API @nathanielsimard
  
- Add unfold tensor operation @agelas, @nathanielsimard

- Improve tensor display implementation with ellipsis for large tensors: @macroexpansion

## Burn Dataset

- Improved speed of SqLite Dataset @antimora

- Use gix-tempfile only when sqlite is enabled @AlexErrant

## Burn Common

- Add benchmark abstraction @louisfd

- Use thread-local RNG to generate IDs @dae

## Burn Autodiff

- Use AtomicU64 for node ids improving performance @dae

## Burn WGPU

- Enable non-blocking reads when compiling to `wasm` to fully support WebGPU @nathanielsimard

- Add another faster matmul kernel @louisfd

- [Breaking] Massive refactor to use burn-compute @nathanielsimard

## Burn Candle

- Candle backend is now available as a crate and updated with Candle advances @louisfd @agelas

## Burn Train

- New training cli dashboard using ratatui @nathanielsimard

- [Breaking] Heavy refactor of burn-train making it more extensible and easier to work with @nathanielsimard

- Checkpoints can be customized with criteria based on collected metrics @nathanielsimard

- Add the possibility to do early stopping based on collected metrics @nathanielsimard

## Examples

- Add image classifier web demo using different backends, including WebGPU, @antimora

## Bugfixes

- Epoch and iteration were swapped. (#838) @daniel-vainsencher

- RNN (Gru & LSTM) were not generic over the batch size @agelas, @EddieMataEwy

- Other device adaptors in WGPU were ignored when best available device was used @chistophebiocca

## Documentation

- Update book @nathanielsimard

- Doc improvements with std feature flag: @ArvidHammarlund

## Chores

- Update all dependencies @antimora

- Lots and lots of CI Improvements with coverage information @Luni-4, @DrChat, @antimora, @dae, @nathanielsimard

# Thanks

Thanks to all aforemetioned contributors and to our sponsors @smallstepman, @0x0177b11f and @premAI-io.