burn
Um framework de deep learning flexível e agnóstico de backend - treine e infira em Rust com backends de computação plugáveis.
Busque em todas as páginas da documentação
Um framework de deep learning flexível e agnóstico de backend - treine e infira em Rust com backends de computação plugáveis.
use burn::backend::NdArray;
use burn::module::Module;
use burn::nn::Linear;
use burn::tensor::Tensor;
type B = NdArray<f32>;
#[derive(Module, Debug)]
struct Model<B: burn::backend::Backend> {
linear: Linear<B>,
}
fn forward<B: burn::backend::Backend>(m: &Model<B>, x: Tensor<B, 2>) -> Tensor<B, 2> {
m.linear.forward(x)
}Quando usar isso:
use burn::backend::NdArray;
use burn::module::Module;
use burn::nn::{Linear, LinearConfig};
use burn::tensor::Tensor;
type B = NdArray<f32>;
#[derive(Module, Debug)]
struct Mlp<B: burn::backend::Backend> {
fc: Linear<B>,
}
fn main() {
let device = <B as burn::backend::Backend>::Device::default();
let mlp = Mlp::<B> {
fc: LinearConfig::new(4, 2).init(&device),
};
let input = Tensor::<B, 2>::from_data([[1.0, 2.0, 3.0, 4.0]], &device);
let out = mlp.fc.forward(input);
println!("{:?}", out.into_data());
}O que isso demonstra:
Module para registro de parâmetrosLinearConfig para configuração de camadaBackend.Learner conecta datasets, otimizadores, métricas e checkpointing.| Backend | Alvo |
|---|---|
| NdArray | Desenvolvimento de CPU, CI |
| WGPU | GPU multiplataforma |
| CUDA | Servidores NVIDIA |
ort como fallback.| Alternativa | Usar Quando | Não Usar Quando |
|---|---|---|
| candle | Pesos de transformadores HF desde o primeiro dia | Você precisa de troca genérica de backend |
| ort | Apenas inferência ONNX em produção | Treinamento dentro do Rust |
| tch | Precisa reutilizar código PyTorch arbitrário | Política de dependência pura de Rust |
| JAX/Python | Treinamento em larga escala em TPU | Implantação na borda sem Python |
Os caminhos de inferência amadurecem mais rápido que o treinamento em larga escala. Valide a precisão e o desempenho no seu modelo antes de cortar o Python.
Altere o alias de tipo type B = ... e reconstrua com flags de feature apropriadas - nenhuma reescrita de código fonte para o código do módulo.
Sim, via burn-import e módulos customizados - o suporte a transformer está ativo, mas verifique os exemplos para sua arquitetura.
Implemente o trait Dataset ou adapte leitores CSV/Parquet da seção de dados em lotes de tensores.
Existem caminhos experimentais; espere limites de tamanho e SIMD - profile antes de apostar no treinamento no navegador.
Use LearnerBuilder com configuração de otimizador, rastreadores de métricas e learner.fit(dataloader) - veja o livro do burn para o snippet completo.
ONNX via ort é ótimo para grafos congelados; módulos nativos do burn permitem caminhos quentes apenas em Rust.
Execute comparações de tensores dourados em um lote fixo após importação/exportação - não confie apenas nas curvas de perda.
Backends WGPU/CUDA cacheiam alocações; descarte tensores não utilizados e limite o tamanho do lote quando OOM.
candle é focado em HF; burn é geral - veja candle para atalhos do transformer zoo.
Versões da Stack: Esta página foi escrita para Rust 1.97.0 (edição 2024), Tokio 1.x, Axum 0.8, serde 1.0, sqlx 0.8, clap 4, e Polars 0.46+.
Revisado por Chris St. John·Última atualização: 16 de jul. de 2026