What's Changed
- Bump version to 0.22.0-pre.1 (#4933) @laggui
- Refactor interpolate from cubek (#4928) @SamuelBelanger
- Combined PRs (#4944) @github-actions[bot]
- Add A-FINE image quality metric (#4894) @Capataina
- Cubek-pool integration (#4948) @SamuelBelanger
- Make RL event types mod public (#4951) @laggui
- [Breaking] Remove
Tensorbackend generic and add high-levelDevicestruct (#4717) @laggui - Feature gate the backend ops extension when no backend feature is enabled (#4953) @laggui
- Refactor/isolate burn backend deps (#4954) @nathanielsimard @laggui
- Refactor tensor kind traits (#4957) @laggui
- feat(metric): add BLEU score training metric (#4937) @kimjune01
- refactor(tensor): add
BridgeTensorto bridge high-level tensor API with dispatch (#4958) @laggui - Bool tensor API improvements (#4955) @Cielbird
- Re-export BurnConfig with fusion/autodiff getters (#4959) @truffle-dev
- refactor(extension): feature gate
Tensor::from/into_primitiveand addfrom/into_bridgew/TensorKindIdvalidation (#4961) @laggui - burn 0.21 cite (#4969) @Redhawk18
- fix(fusion): shared tensor (#4962) @nathanielsimard
- fix(nn): conv1d initializer fan out (#4973) @laggui
- feat(metric): add ROUGE-L score metric (#4967) @jaweed3
- feat(metric)!: add multiclass and multi-label support to AUROC metric (#4960) @manucouto1
- feat(ops): autodiff for rfft/irfft (#4956) @cofinite
- refactor(cubecl): update to reference changes (#4974) @wingertge
- fix(deps): update enumset to 1.1.13 (#4979) @laggui
- fix(dispatch):
WgpuandWebGpure-export feature gating (#4981) @laggui - fix(fusion): resolve tensor into_ir (re-entrancy bug) (#4984) @laggui
- feat(cube): interpolate nearest exact mode (#4982) @SamuelBelanger @louisfd
- fix(features): expose safetensors/pytorch support directly (#4985) @crutcher
- fix(train): guard TUI metric navigation against empty state (#4987) @SAY-5
- fix(doc): correct SgdConfig::init (#4986) @jaweed3
- perf(core)!: improve compile times via opaque inner types to break dependency chain (#4977) @nathanielsimard
- feat(train): add training and evaluation progress logger and add them to the event processors (#4980) @Zatiji
- Update CubeCL & CubeK (#4992) @louisfd
- refactor: use obfuscate from burn-std (#4997) @nathanielsimard
- fix(train): scroll TUI metric tabs to keep selected visible (#4995) @LucaCappelletti94
- feat(dispatch): add remote backend (#4994) @nathanielsimard
- fix(docs): improve error messages with shape/dimension context (#4996) @jaweed3
- feat(train): add mouse support to TUI metric navigation (#4998) @LucaCappelletti94
- refactor(backends)!: remove associated element types & replace with device defaults (#5000) @laggui
- chore(cubek): update to interpolate refactor (#5003) @SamuelBelanger
- fix(ndarray): broadcast remainder operands (#5002) @puneetdixit200
- feat(wgpu): use
WgpuRuntimecompiler generic to enable specialized aliases (#5001) @nathanielsimard - fix(remote): add remote device settings fetched during client init (#5008) @laggui
- refactor(rl): add inference device and update dqn example (#5009) @Charles23R
- fix(dispatch): use the correct webgpu/vulkan/metal/wgpu device (#5010) @laggui
- refactor(cubecl): add lifetime to
View(#4999) @wingertge - added FloatKind::F64 arm for FuseType implementation (#5011) @Andy2887
- refactor(train)!: transform all Progress items into a global progress struct (#5012) @Zatiji
- feat: add
Calibration::AbsMeanfor BitNet b1.58 ternary weight quantization (#4989) @simeon-kepp - fix(doc): inconsistent assertion for non-negative (#5016) @YichiZhang0613
- refactor(tensor)!: replace
TensorKind::id()withconst KINDand renameTensorKindId->Kind(#5018) @laggui - fix(flex): max_pool3d_backward indices type (#5017) @laggui
- perf(flex): bulk-copy inner-contiguous run in to_contiguous (#5019) @jkaczman
- fix(train): use recv_timeout instead of try_recv. (#5021) @jeandudey
- refactor(tensor): seal
TensorKindandParametertraits and consolidate param impls (#5022) @laggui - fix: include RMS_NORM in normalization layer detection for safetensors adapter (#5023) @ogghead
- fix(module): clearer error when generic used in both module and skip fields (#5028) @jaweed3
- fix(tensor): detect NaN element-wise in contains_nan to avoid f16 false positives (#5027) @zhan-wei-919
- fix(remote): correct multi-streams and drastically improve performance (#5029) @nathanielsimard
- refactor(distributed)!: add
DistributedContextandall_reduceto high-level API (#5013) @laggui @Charles23R - feat(extension): add support for custom output types wrapping tensor primitives (#5030) @laggui
- fix(quantization): fallback (dequant -> op -> quant) implementation for slice, gather, select and expand (#5020) @Andy2887
- fix(store): add .allow_partial(true) hint in TensorNotFound error w/ docs (#5032) @jaweed3
- chore: cleanup remote feature flags (#5034) @laggui
- perf: improve compilation speed with into-scalar (#5037) @nathanielsimard
- feat(nn): add rotary encoding reset (#5042) @nicolaslara
- fix(dep): update aes to 0.9.1 (yanked) (#5047) @laggui
- feat: add missing
Devicestaging and memory cleanup methods (#5048) @laggui - fix(ci): use flex as
default_backendand split jobs into backends, crates, and examples shards with merged lcov report (#5041) @laggui - fix(ci): remove
fail_ci_if_errorfor code coverage (#5055) @laggui - fix(dataset): fully qualify HuggingFace dataset repo ids (#5050) @ThierryCantin-Demers
- chore(deps): bump actions/download-artifact from 7 to 8 (#5053) @dependabot[bot]
- chore(deps): bump codecov/codecov-action from 6 to 7 (#5054) @dependabot[bot]
- feat(cube): interpolate autotune (#5044) @SamuelBelanger
- fix(example):
Device::enumerateconfigure (#5056) @laggui - feat(module): add Identity Module, extend Activation and Normalization. (#5058) @crutcher
- feat(fusion): add CubeCL fusion lowering for int bitwise ops (#5057) @iamorlando
- feat(nn): add MultiHeadAttention configuration flags for Linear::bias. (#5059) @crutcher
- Improve compilation speed with into-scalar (#5061) @nathanielsimard
- fix(param): cloning shares lazy initialization state (#5045) @laggui
- feat(extension): support async fn + futures and add
Tensorlow-level backend primitive interop (#5049) @laggui - fix: fix inconsistent assertions (#5062) @YichiZhang0613
- Feat/multi device remote (#5036) @nathanielsimard
- perf(ndarray): read select indices from a contiguous slice (#5066) @IvanUkhov
- feat(cubecl): wire logical any/all reductions (#5051) @zhan-wei-919
- perf(ndarray): reshape standard-layout arrays without copying (#5067) @IvanUkhov
- fix(tensor): prevent unit dim strides from corrupting
split_stridesoutput (#5071) @ArthurBrussee - chore: bump MSRV from 1.92 to 1.95 (#5077) @laggui
- fix: forward features flag in burn Cargo.toml for burn-vision (#5078) @Marc-AnthonyG
- chore(deps): update polars to 0.54 (#5072) @getong
- feat(metric): add AUC-PR (Average Precision) training metric (#4963) @manucouto1
- feat(store): extract burnpack format to burn-pack + add minimal record (#5064) @nathanielsimard
- feat(tensor): hypot function (#5065) @skewballfox
- chore(docs): update readme (#5080) @nathanielsimard @laggui
- fix(train): load checkpoint on the correct device (#5084) @laggui
- fix(fusion): use dtype_to_storage_type in autotune checks (#5085) @laggui
- fix(data): reuse persistent dataloader workers across epochs (#5073) @manucouto1
- Refactor Record - Serialization & Deserialization of Module, Optimizer & LrScheduler (#5083) @nathanielsimard
- update cube @louisfd
- fix(autotune): feature gate interpolate autotune strategy (#5090) @laggui
- chore(deps): bump actions/checkout from 6 to 7 (#5093) @dependabot[bot]
- feat(autotune): support cpu gemm (#5081) @louisfd
- refactor(backend): move device to TensorMetadata (#5089) @skewballfox
- fix(cubecl): materialize lazy device bytes in from_data (#5095) @laggui
- feat(module): param group (#5086) @Charles23R
- fix(tensor): resolve unsupported bool storage to device default (#5094) @yasumorishima
- feat(train): add custom checkpointers (#5097) @Zatiji
- Remote backend fusion: client-side op-graph caching (#5088) @nathanielsimard
- fix(audit): update quinn-proto version in Cargo.lock (#5099) @laggui
- chore(deps): update cube (#5098) @louisfd
- Add remote backend extension (#5101) @nathanielsimard
- perf(remote): materialize tensor readback off the shared runtime (#5104) @nathanielsimard
- feat(autodiff): implement prod and prod_dim (#5106) @leonardwetzel
- Fix checkpointing + minor stuff (#5109) @Charles23R
- fix metric logging when checkpoint + burn-train integration tests (#5116) @Charles23R
- Feat/iroh remote backend (#5111) @jwric
- fix: guard against divide-by-zero in matmul autotune TMA priority (#5117) @ltouati
- Fix/remote async read (#5126) @nathanielsimard
- Implement int_scatter_nd for autodiff backend (#5114) @weiji14
- Fuse Cat operations (#5133) @nathanielsimard
- Perf/fusion dag (#5135) @nathanielsimard
- fix(fusion): don't fuse single-use view ops (#5134) @nathanielsimard
- Fix fusion plan re-exploration for sync segments with a drained tail (#5137) @nathanielsimard
- Fix fused in-place aliasing (never fired since #2870/#3263) (#5138) @nathanielsimard
- Feat/multi optimizers (#5121) @Charles23R
- Fix interpolate autotune key (#5136) @SamuelBelanger
- Feat/graph capture (#5146) @nathanielsimard
- Refactor how graph are captured (#5148) @nathanielsimard
- Feat/lora qlora (#5139) @Charles23R
- Feat/spread param groups (#5154) @Charles23R
- Feat/autotune throughput (#5157) @SamuelBelanger @ThierryCantin-Demers
- Feat/cubecl memory (#5158) @nathanielsimard
- Fix matmul bounds check when launch (#5160) @nathanielsimard
- update dependency versions in Cargo.lock (#5165) @SamuelBelanger
- drop from foreign stream drains home stream (#5166) @Charles23R
- LstmState: Clone, Debug, initial, shape, stack, slice, (un)squeeze (#5167) @crutcher
- fix(ndarray): propagate NaN in argmax/argmin/cummin/cummax (#5155) @jaweed3
- feat(burn-store): add FloatCastAdapter for target-driven float dtype casting (#5164) @laurigates
- update cubek rev (#5169) @Charles23R
- Feat/relu6 activation (#5143) @Bellman281
- feat: add hardtanh and tanhshrink activation functions (#5144) @Bellman281
- fix(store): restore persisted ParamId on load_record and Applier apply (#5177) @jaweed3
- feat: add threshold activation function (#5145) @Bellman281
- feat: add margin ranking loss (#5151) @Bellman281
- feat: add HingeEmbeddingLoss (#5174) @Bellman281
- feat: add soft margin loss (#5149) @Bellman281
- feat: add RReLU activation module (#5150) @Bellman281
- feat: add Mish, SiLU and LogSigmoid activation modules (#5183) @Bellman281
- fix: compute margin^p without std-only f64::powi (no_std build) (#5176) @Bellman281
- Add LstmState::chunk method (#5178) @jaweed3
- feat: add CosineSimilarity module (#5186) @Bellman281
- feat: add PairwiseDistance module (#5185) @Bellman281
- Fix/attention fallback activation gate (#5187) @nathanielsimard
- perf(fusion): use cubek's dedicated any/all reduce instruction (#5113) @zhan-wei-919
- chore: activate burn-wgpu burn-backend default cubecl feature flag (#5199) @ThierryCantin-Demers
- feat(dataset): make image extension matching case-insensitive (#5152) @veezhang
- feat: add TripletMarginLoss (#5175) @Bellman281
- fix(store): preserve module param id on load (#5180) @nathanielsimard
- fix(flex): support GQA/MQA in attention (q_heads % kv_heads == 0) (#5142) @AnayGarodia
- feat: add GaussianNLLLoss (#5182) @Bellman281
- feat: add PixelShuffle and PixelUnshuffle modules (#5184) @Bellman281
- fix(burn-store): prevent CPU exhaustion via pickle memo bomb (#5120) @Infinty-ux
- feat: support negative GLU dimensions (#5203) @mattisonchao
- feat(burn-cubecl): topk_with_indices (#5200) @ThierryCantin-Demers
- fix(autodiff): zero-safe cumprod gradient (#5141) @AnayGarodia
- feat: support negative softmax dimensions (#5205) @mattisonchao
- update cubecl (#5181) @Charles23R
- docs: document per-device default dtypes; make AlreadyInitialized error actionable (#5209) @laurigates
- chore: change loop logic for data iterators and batchers (#5198) @Zatiji
- Fix norm accumulation (#5211) @nathanielsimard
- feat: support negative cumulative dimensions (#5213) @mattisonchao
- feat: support negative FFT dimensions (#5214) @mattisonchao
- feat: support negative sort and top-k dimensions (#5215) @mattisonchao
- fix(tui): silently unwind on training kill signal (#5223) @laggui
- feat: support negative dimensions in statistics and norms (#5225) @mattisonchao
- feat: Tensor<D, Int>::square() support (#5224) @crutcher
- feat(extension): support struct and enum inputs for backend extensions (#5221) @ThierryCantin-Demers
- fix(burn-core): record params through their on_save mapper (#5208) @ThierryCantin-Demers
- Feat/add get many in dataset trait (#5220) @Zatiji
- feat: support negative dimensions across tensor APIs (#5226) @mattisonchao
- perf(cube): pooling and interpolate optimization (#5112) @SamuelBelanger @ThierryCantin-Demers
- fix(tests): nhwc_relayout expected shapes and dtypes equality (#5229) @laggui
- feat(ndarray): native multiply-free ternary matmul for Q2S (BitNet b1.58) (#5075) @simeon-kepp
- fix(autodiff): fix deadlock when a Backward step runs a nested backward (#5194) @laurigates
- refactor(tensor): make
_elemcomparison methods aliases to unify_scalarmethods (#5230) @laggui - feat: add sequential learning rate scheduler (#5204) @AnayGarodia
- fix(burn-cubecl): scatter_nd values offset for multi-dim batches (#5196) @artyompal
- feat(backend): add default int_argtopk impl and native tch support (#5236) @IssaAlBawwab
- fix(examples): swapped lstm cell/hidden args (#5234) @ra1u
- fix(examples): fix lstm bias backprop (#5235) @ra1u
- fix(optim)!: remove erroneous restart in
CosineAnnealingLrScheduler(#5191) @DeathSurfing - fix(tensor): preserve dimension check errors (#5232) @mattisonchao
- feat(tensor): add mask_select (boolean mask indexing) default impl (#5238) @Yashiru
- feat(burn-nn): support negative dimensions (#5241) @mattisonchao
- feat: add
Tensor::empty_like(#5242) @crutcher - fix(burn-train): correctly aggregate per-epoch metrics that require global statistics (#5218) @laggui
- feat(tensor): add
extractmethod; simplifyinplaceimplementation. (#5207) @crutcher - fix(cube): skip unsupported accelerated kernels during autotune (#5239) @SamuelBelanger
- refactor(burn-tensor): remove duplicate dimension checks (#5243) @mattisonchao
- chore(deps): bump actions/stale from 10 to 11 (#5247) @dependabot[bot]
- chore: release 0.22.0-pre.1 (#5249) @laggui
- fix: update publish deps (#5250) @laggui