1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
//! # `burn`-Adjacent Infrastructure
//!
//! `bunsen::burner` is the infrastructure layer: the pieces that sit
//! *next to* `burn` itself, not on top of its tensor surface. Where
//! [`crate::blocks`] gives you new `Module`s and [`crate::kits`] gives
//! you whole models, `burner` gives you the tooling for working with
//! `burn` modules, optimizers, and records at a level `burn`'s default
//! surface doesn't expose.
//!
//! Most code that uses `bunsen` won't import from `burner` at all. You
//! reach for it when you need to:
//!
//! - **introspect a model** generically — the reflection layer in
//! [`module::reflection`] turns a `Module` into a queryable XML document with
//! an `XPath` query API, for "select every rank-2 weight under the
//! transformer blocks" problems;
//! - **compose optimizers** — the `GroupOptimizerAdaptor{N}` family in
//! [`optim`] mounts multiple optimizers on a single module (e.g. Muon for
//! matrix parameters, `AdamW` for the rest), each driving a disjoint group of
//! parameters, with per-group learning- rate selectors;
//! - **carry tensor metadata** in non-generic code paths —
//! [`descriptors::TensorParamDesc`] captures the metadata of any
//! `Param<Tensor<B, R, K>>` (its `ParamId`, `Shape`, rank, dtype, kind)
//! without carrying the generics that the underlying tensor type does;
//! - **work with `burn::record`** outside what the derive macros provide for
//! free.
//!
//! The reflection and group-optimizer pieces compose: the canonical
//! pattern is to walk a model with `XmlModuleTree`, slice it into
//! parameter groups with `XPath`, and hand the groups to a
//! `GroupOptimizerAdaptor`.
//!
//! ## Map of the module
//!
//! - [`descriptors`] — type-erased descriptors for tensors and
//! parameters. The lingua franca used by the reflection and optimizer
//! machinery to talk about parameters uniformly.
//! - [`module`] — module-side helpers: a type-mapper for `Module` field
//! re-typing, and (under `features = ["reflection"]`) the XML/XPath
//! reflection layer.
//! - [`optim`] — optimizer extensions (under `features = ["train"]`).
//! Headlined by the `GroupOptimizerAdaptor{N}` family and the
//! `OptimizerGroup` / `LrSelector` building blocks.
//! - [`record`] — helpers for working with `burn::record` types.
//! - [`tensor`] — tensor helpers that don't fit neatly in [`crate::ops`],
//! including a `DataView` abstraction.
//! - [`distribution`] — distribution-related utilities.