What's Changed
- chore: bump cubek to 83e2c81, back to git cubecl after the 0.22.0 release (#5988) @louisfd
- fix(fusion): keep an indexed op's output as its block's reference (#5991) @nathanielsimard - also released in 0.22.1.
- chore: update cubecl to 9f6bb84 and cubek to 4405c35 (#5993) @louisfd
- fix(fusion): a transaction returns a failed op's error instead of panicking (#5986) @ThierryCantin-Demers
- perf(remote): read a transaction's tensors in one request (#5983) @ThierryCantin-Demers
- feat(cubecl): add a col2im path and autotune for conv_transpose3d (#5793) @vboussot
- fix(module): clarify derive field handling and suggest
#[module(skip)](#5997) @laggui - also released in 0.22.1. - chore: bump cubecl to 98652370 (parallel compilation) and cubek to match (#5996) @nathanielsimard
- feat(remote): replace a device whose server restarted (#5951) @ThierryCantin-Demers
- Run wasm static constructors once in web examples (#5998) @haydenflinner
- fix(fusion): register uploads as materialized instead of queuing an Init (#5970) @saiyambharara
- fix(derive): preserve generic submodules with primitive type arguments (#6000) @laggui - also released in 0.22.1.
- fix(train): ignore CER padding by token value (#5945) @Mikyx-1
- fix(train): validate F-beta and default to F1 (#5965) @Mikyx-1
- fix(vision): call the CPU connected components directly in the cube backend (#5908) @saiyambharara
- perf(remote): copy large tensors less when sending (#5989) @ThierryCantin-Demers
- chore!: remove deprecated ndarray backend (#5999) @laggui
- feat(remote)!: send messages of any size in 1 MiB frames (#6002) @ThierryCantin-Demers
- chore: bump cubek to 4871781 and cubecl to f508ec57 (#6008) @louisfd
- chore: bump cubek to 7a887e8 (#6011) @louisfd
- fix(cubecl): accumulate half col2im in f32 (#5963) @onenewcode
- chore: clean up references left after the ndarray removal (#6013) @antimora
- feat: expose persistence feature for CubeCL backends (#6012) @laggui - also released in 0.22.1.
- feat(pack): make reader size limits configurable (#6007) @Charles23R
- fix(vision): restore accelerated connected components (#6003) @laggui
- chore!: remove deprecated libtorch backend (#6009) @laggui
- fix(router): forward ctc_loss and ctc_loss_backward as single operations (#6001) @khimaros
- Chore/cubecl execution (#6015) @nathanielsimard
- feat(tensor): add 3D pooling (
avg_pool3d,max_pool3d) (#5801) @Sadik00789 - chore: bump cubek to 369cbff (#6020) @louisfd
- feat(capture): add scope input and output helpers (#5990) @Sadik00789
- feat(tensor): add round_to for rounding to a number of decimals (#5842) @ax1s-x1zz
- feat(train): add Matthews correlation coefficient metric (#5818) @Mikyx-1
- feat(quant)!: support every symmetric scheme on Flex, FP8 and FP4 included (#6004) @ThierryCantin-Demers
- docs: add agent guidance and AI disclosure policy (#6021) @laggui
- fix(vision): initialize CPU NMS mask buffer (#6019) @onenewcode
- feat(remote)!: support quantized tensors on the remote backend (#6010) @ThierryCantin-Demers
- docs: remove review notice from PR template (#6022) @laggui
- perf(remote): reuse message buffers across messages (#6017) @ThierryCantin-Demers
- fix(nn): account for dilation in max pooling same padding (#6023) @laggui
- refactor(quant): use CubeCL's scheme axis methods, float value check and minifloat codecs (#6024) @ThierryCantin-Demers
- chore: bump cubek to 3423b49 (#6033) @louisfd
- chore: bump cubek to 813ead4 (#6032) @louisfd
- chore: bump cubek to 84977b4 (#6043) @louisfd
- chore: bump cubecl to 92f9afe, and cubek to b0c6d1c (#6050) @nathanielsimard
- perf(fusion): a reduce-broadcasted fuser with nothing to undo skips its reset (#6036) @louisfd
- fix: clarify tensor container type mismatch panics (#5971) @tandede
- fix(nn): validate binary cross entropy probabilities and targets (#5969) @Mikyx-1
- fix(nn): train and persist stateful PWFF activations (#5932) @Mikyx-1
- ci: lower stale-pr workflow permission to contents: read (#6040) @Fr3ya
- fix(train): handle WER sequence lengths (#6028) @onenewcode
- feat(tensor)!: support all indexing update ops for bool scatter and select_assign (#6035) @mattisonchao
- chore: bump cubek to a680b70 (#6060) @louisfd
- chore: bump cubek to 6424d4e (#6061) @louisfd
- fix(nn): return zero attention for fully masked rows (#6039) @Mikyx-1
- fix(cubecl): support Flex32 tensor data (#6056) @onenewcode
- feat(store): load PyTorch checkpoints from bytes (#5755) @superroket169
- fix: preserve Flex32 dtype in TensorData conversions (#6062) @laggui
- test(fusion): cover singleton select with wide queued operations (#6052) @lorenzozanee
- fix(docs): enable branches std workaround and repair optional API links (#6016) @laggui - also released in 0.22.1.
- chore: bump cubek to 612e30b (#6064) @louisfd
- fix(tensor): preserve integer exponents in scalar powers (#6058) @laggui
- feat(signal): add complex inverse FFT (ifft) (#5840) @ax1s-x1zz
- docs: add Copilot review instructions (#6044) @antimora
- fix(std): preserve Flex32 dtype in full data (#6069) @onenewcode
- feat(tensor)!: support scatter_nd and gather_nd for bool tensors (#6047) @mattisonchao
- fix(deps): update rustls to 0.23.46 (#6070) @laggui - also released in 0.22.1.
- fix(train): reject incomplete LPIPS pretrained weights (#6067) @HongchengZhao
- fix(tensor): return off-value rows for out-of-range one_hot_fill indices (#6065) @HarpeLm
- fix(cubecl): update cubek to bound depthwise gather tap unrolling (#6072) @laggui
- feat(signal): support arbitrary-size rfft/irfft via Bluestein's algorithm (#5757) @ax1s-x1zz
- chore: update cubecl and cubek revs (#6074) @Charles23R
- feat(derive): support generic fields and recursive modules (#6059) @laggui
- chore: update cubek to 1c369a8 (paged pools read through a table) (#6077) @SamuelBelanger
- feat: native fmod backend op with CubeCL and fusion kernels (#6045) @saiyambharara
- docs(wasm): explain constructor overhead and explicit startup initialization (#6078) @laggui - also released in 0.22.1.
- chore: update cubecl to 68ebac9 and cubek to 8271653 (element-free tile) (#6080) @louisfd
- fix(cubecl): use f64 NaN constants in fmod (#6079) @laggui
- fix: fmod's NaN is an f64, as Float::new takes since cubecl #1815 (#6081) @louisfd
- fix(cubecl): check ctc_loss shared memory against the device limit (#6029) @rawsun007
- chore: update cubek to 1b03a39 (#6084) @louisfd
- chore: update cubek to 31abf85 (recursive scale tiles, mma operand form, exact plane grid) (#6085) @louisfd
- docs: add design and scope review instructions (#6063) @antimora
- feat(std): add tolerance accessors (#6087) @laggui
- feat(std): add dtype-aware random, zeros and ones
TensorDataconstructors (#6088) @laggui - chore: update cubek to a018224e (filling planes copy NVFP4 scale words) (#6093) @louisfd
- chore: bump cubek to 19681e1 (#6094) @louisfd
- fix(deps): update zip to 9.0.4 (#6096) @laggui - also released in 0.22.1.
- chore: update cubek to de3db6b4 (an operand's element is data at launch) (#6098) @louisfd
- Bump cubek to 21ee901 and cubecl to e848fc5 (#6099) @louisfd
- fix(fusion): tune index-reading fused blocks on zeroed indices under CompileAndAutotune (#6076) @SamuelBelanger
- test: separate IR capture tests from backend graph replay tests (#6097) @laggui
- fix(dataset): enable branches std workaround for all sqlite builds (#6092) @getong - also released in 0.22.1.
- fix(fusion): check binding limit for the first operation (#6053) @abroy77 - also released in 0.22.1.
- test: remove redundant tests and fix tests that did not exercise their names (#6066) @antimora
- perf(flex): run 2D conv im2col directly on NCHW input (#6075) @Gilfeather
- Bump cubek to 773469d and cubecl to 72726b1 (#6104) @louisfd
- ci: replace previous rust test runs with compilation checks (#6102) @laggui
- Bump cubek to 056648c (#6105) @louisfd
- chore: update cubecl to 040311eb and cubek to f9c35e4f (collectives between devices) (#6106) @ThierryCantin-Demers
- Bump cubek to 82d76ba and cubecl to dbaf9b4 (#6129) @louisfd
- ci: group transfer integration tests to reduce recompilation (#6107) @laggui
- feat(nn): add 1D and 2D Lp pooling modules (#5977) @Prajwal-k-tech
- fix(fusion): hold an operation's read-only inputs until it is submitted (#6086) @ThierryCantin-Demers
- perf(store): speed up strided gathers and weight transposes (#6041) @skewballfox
- Bump cubek to 71fe448 and cubecl to 0f41bac (#6130) @louisfd
- Open perf(store): speed up strided gathers and weight transposes (#6041) @skewballfox
- ci: bump github-actions (#6132) @Charles23R
- Bump cubek to 2e6927b (#6133) @louisfd
- fix(optim): keep LBFGS updates aligned with missing gradients (#6121) @Mikyx-1
- fix(dispatch): route autodiff only for associated float inputs (#6109) @laggui
- Bump cubek to 9aa3a95 (#6137) @louisfd
- chore: remove obsolete backend test proc macro (#6139) @laggui
- Feat/burn instrument (#6131) @nathanielsimard
- Bump cubek to 238d219 (#6141) @louisfd
- Bump cubek to be0a6ea (#6142) @SamuelBelanger
- feat(backend): collectives over a group of devices (#6111) @ThierryCantin-Demers
- fix(nn): reject asymmetric deform conv padding (#6101) @dannyward630
- perf(nn): avoid historical query attention in cached inference (#6125) @Mikyx-1
- perf(store)!: load transposed Linear weights without moving their bytes (#6113) @skewballfox
- chore: bump cubek to a46ed5e (#6150) @louisfd
- Bump cubek to its shared BlueprintStrategy (#6151) @louisfd
- chore: bump cubek to quantized_arg (cubek#890) (#6152) @louisfd
- chore: pin cubek to its main merge of quantized_arg (#890) (#6153) @louisfd
- test(fusion): keep the matmul epilogue view test exact under TF32 (#6134) @noahsabaj
- fix(fusion): bound elemwise fused kernel by computation width (#6138) @gvozdetsky
- fix(deps): resolve dependency audit failures (#6160) @laggui
- Feat/instrument report (#6143) @nathanielsimard
- Bump cubek to f3e0bed (#6161) @louisfd
- Bump cubek to f9ba742 (#6162) @louisfd
- chore(std)!: remove obsolete i8 packing helper (#6118) @onenewcode
- chore: bump cubek to 7c49f3f (#6163) @louisfd
- fix(activation): use exact erf derivative in gelu_backward and fuse CubeCL gelu/sigmoid kernels (#6114) @ssoj13
- Chore: bump cubek to f75cfc0 (#6164) @louisfd
- Bump cubek to d2d3582 (#6166) @louisfd
- feat(config): support CubeK matmul TF32 settings in burn.toml (#6170) @laggui
- feat(cubecl): use grouped-query-attention (#6127) @gzsombor
- Chore: bump cubek; the tiled Cmma and CpuGemm candidates take the dense routines' settings (#6168) @louisfd
- fix(fusion): index a fused block's reference at the block width (#6169) @SamuelBelanger
- Chore: bump cubecl and cubek, the tile DSL now in cubecl (#6175) @louisfd
- chore: bump version to 0.23.0-pre.1 (#6176) @laggui
- fix(remote): give same-server transfers random ids (#6145) @ThierryCantin-Demers
- Chore: bump cubek to c465e06 (#6177) @louisfd
- fix(std)!: validate quantized tensor data lengths (#5978) @Prajwal-k-tech
- refactor(backend)!: DDP syncs gradients through the group all-reduce (#6144) @ThierryCantin-Demers
- Chore: bump cubek to a7e14f7 (#6178) @louisfd
- Chore: bump cubek to a20728c, a stored tensor hands out its buffers (#6180) @louisfd
- fix(fusion): handle dequantization below the packing width (#6091) @acshi
- fix(cubecl): compute half-precision CTC loss in f32 (#6103) @quantumshiro
- Chore: bump cubek to the tiled attention kernels and cubek-microkernel (#6181) @louisfd
- perf(burn-cubecl): relax end alignment for zero-copy slices (#6136) @ssoj13
- feat(tensor): collectives as Tensor ops (#6183) @ThierryCantin-Demers
- Chore: bump cubecl and cubek to the packed KV cache read through tiles (#6188) @louisfd
- fix(deps): update ctutils to 0.4.4 (#6189) @laggui
- chore: remove 0.22 migration guide (#6186) @laggui
- perf(nn): don't persist temp QR tensors (#6172) @EthanAlmloff
- fix(tensor): use a Shape reshape target as given (#6112) @mattisonchao
- test(nn): use default device instead of flex (#6190) @laggui
- feat(nn): add opt-in compute instrumentation to built-in layers (#6165) @nathanielsimard
- Chore: bump cubek to the dequantize routines moved into cubek-matmul (#6191) @louisfd
- feat(tensor): support grouped-query attention and causal mask alignment (#5953) @Andy2887
- Chore: pin cubek main, and pass no sliding window to cubek's attention (#6192) @louisfd
- docs(book): explain profiling custom modules with compute annotations (#6194) @laggui
- fix(train)!: separate progress reporting from iterator exhaustion (#6184) @laggui
- docs: document conventional commit and PR title conventions (#6198) @laggui
- Tile kernels: autotune only cubek's tile-DSL matmul and attention (#6193) @louisfd
- refactor(cubecl): tile-kernels attention runs cubek's autotune (#6199) @louisfd
- feat(instrument)!: the peaks measure one launch, and the measurement file is version 4 (#6201) @louisfd
- chore: bump cubecl and cubek to the file-read counter (#6200) @nathanielsimard
- Chore: the macro semicolon lint under its rustc 1.97 name (#6202) @louisfd
- feat(linalg): add Cholesky decomposition (#5858) @Mikyx-1
- docs: add book changelog and contribution guidelines (#6195) @laggui
- chore(cubecl): remove obsolete macro semicolon lint allowances (#6203) @laggui
- feat(instrument): price components in a run of their own (#6196) @nathanielsimard
- Chore: bump cubecl and cubek to main, with the device's reported cores (#6204) @louisfd
- fix(nn): diagnose negative variance in GaussianNLLLoss (#6182) @mattisonchao
- fix(instrument): suspend observation while evaluating bounds (#6205) @laggui
- chore: bump cubecl and cubek to main (#6214) @nathanielsimard
- chore: bump cubecl and cubek to main (#6221) @nathanielsimard
- fix: reject zero LoRA rank (#6110) @Kostyanikov
- fix(instrument): a component part of whose work fused elsewhere is not scored (#6222) @nathanielsimard
- fix(tensor): validate Shape rank in expand (#6211) @onenewcode
- fix(cubecl): tile-kernels matmul races every routine in one round (#6207) @louisfd
- chore: bump cubek to main (#6227) @louisfd
- fix(deps): update zstd-sys and temporarily ignore unused Polars vulnerabilities (#6229) @laggui
- feat(group): split tensors over a group of devices (#6025) @ThierryCantin-Demers
- chore: bump cubecl and cubek to main (#6231) @louisfd
- fix(cubecl): update revision to fix unfold with unaligned outer strides (#6206) @laggui
- perf(train): use U8 confusion codes when supported (#6224) @Mikyx-1
- Bump cubek to 1377fe3 (#6244) @louisfd
- fix(router): move unsigned int tensors between router clients (#6230) @ThierryCantin-Demers
- perf(cubecl): parallel atomic select_assign (Add) with f32 accumulation for half precision (#6135) @ssoj13
- fix(tensor): handle variance over empty axes (#6237) @tandede
- feat(tensor)!: add ONNX Resize interpolation options (#6154) @Sadik00789
- perf(cubecl): tile-kernels matmul stops at the roofline, prepares each launch once, runs a one-column product transposed (#6243) @louisfd
- fix(train): handle BLEU and ROUGE-L sequence lengths (#6242) @onenewcode
- perf(cubecl): remove unnecessary alloc in conv2d bias backward (#6173) @EthanAlmloff
- feat(cubecl): tile-kernels matmul reads quantized inputs (#6246) @louisfd
- test(nn): make orthogonal initializer tests independent of RNG seeding (#6248) @laggui
- fix(tensor): validate device and dtype compatibility across module operations (#6225) @onenewcode
- Tile-kernels matmul: roofline bound by the bus in the traffic's direction (#6249) @louisfd
- feat(cubecl): tile-kernels attention takes a bool mask and both causal alignments (#6251) @louisfd
- feat(linalg): add batched linear solve (#5856) @Mikyx-1
- feat(tensor)!: add dilation to average pooling (#6235) @ashokram-si
- perf(cubecl): stride phase decomposition (#6179) @EthanAlmloff
- chore: bump cubecl and cubek to main (#6254) @louisfd
- feat(instrument-report): expose the component readings the table prints (#6260) @nathanielsimard
- feat(data): configurable dataloader prefetch (#6252) @Charles23R
- feat: native attention backward pass (#6209) @louisfd
- feat(tensor): report why a graph capture falls back (#6255) @SamuelBelanger
- fix(train): aggregate BLEU corpus statistics (#6240) @Arc000007
- feat(tensor): read a device's memory capacity (#6250) @ThierryCantin-Demers
- perf(cubecl): run the CPU gemm candidate at cubek's CPU settings (#6245) @Charles23R
- perf(vision): optimize Flex CPU median blur (#6219) @Mikyx-1
- docs: clarify licensing for books and examples (#6265) @laggui
- fix(cubecl): preserve NHWC layout for dilated average pooling (#6258) @laggui
- fix(cubecl): handle repeated targets in bool scatter_nd reductions (#6215) @HarpeLm
- CI: skip PRs into staging/ branches, check their pins before main (#6266) @louisfd
- fix(tensor): return fewer chunks instead of panicking in
chunk(#6263) @b84330808 - feat(tensor)!: make reshape zeros literal and add ZeroDimPlaceholders (#6257) @laggui
- feat(core): split a model by layers across devices (#5702) @ThierryCantin-Demers
- perf(store): avoid repeated SafeTensors header parsing (#6269) @Arc000007
- feat(group): split tensors from data on the host (#6232) @ThierryCantin-Demers
- feat(cubecl): attention backward kernels by default, run cubek matmul plans (#6268) @louisfd
- chore: prepare burn 0.23.0-pre.1 release (#6287) @laggui