ExBurn — Elixir bridge to the Burn deep learning framework.
ExBurn provides a high-level API for tensor computation, neural network training, and GPU-accelerated machine learning by delegating to Burn via Rust NIFs (Native Implemented Functions).
Architecture
Elixir/Axon → Nx.Defn → ExBurn.Defn.Compiler → ExBurn.Backend → ExBurn.Nif (Rustler) → Burn/CubeCL → GPU
↕
ExCubecl (GPU buffers, kernels, pipelines)Quick Start
# Set ExBurn as the default Nx backend
Nx.default_backend(ExBurn.Backend)
# Create and manipulate tensors
t = Nx.tensor([1.0, 2.0, 3.0])
Nx.add(t, t) |> Nx.to_list()Modules
ExBurn.Defn.Compiler—Nx.Defn.Compilerimplementation for GPU-accelerated defnExBurn.Backend— Nx backend that delegates to Burn via NIFExBurn.Nif— Rustler NIF stubs for Burn interopExBurn.Tensor— Tensor conversion utilities between Nx and Burn formatsExBurn.BurnBridge— High-level bridge for Burn operations and ExCubecl buffersExBurn.CubeclBridge— GPU compute via ExCubecl (buffers, kernels, pipelines)ExBurn.Model— Model definition and training orchestrationExBurn.Training— Training loop implementationExBurn.Serving— Nx.Serving integration for batched concurrent inference
Summary
Functions
Sets the default Nx backend to ExBurn.Backend.
Checks whether an NVIDIA CUDA GPU is available.
Returns the default device for tensor operations.
Returns a map with device information including GPU availability, backend name, and available backends.
Returns the name of the active compute device (e.g., "CUDA (NVIDIA GPU)").
Returns the current version of ExBurn.
Functions
@spec configure!() :: :ok
Sets the default Nx backend to ExBurn.Backend.
After calling this, all Nx operations will be executed via Burn.
@spec cuda_available?() :: boolean()
Checks whether an NVIDIA CUDA GPU is available.
@spec default_device() :: :cpu | :gpu
Returns the default device for tensor operations.
Currently returns :gpu when a compatible GPU backend is available,
otherwise falls back to :cpu.
@spec device_info() :: map()
Returns a map with device information including GPU availability, backend name, and available backends.
@spec device_name() :: String.t()
Returns the name of the active compute device (e.g., "CUDA (NVIDIA GPU)").
@spec version() :: String.t()
Returns the current version of ExBurn.