Sobre o projeto
Burn é uma biblioteca de tensores e framework de deep learning escrita em Rust, voltada para computação numérica, treinamento e inferência. Seu objetivo declarado é evitar a divisão usual entre uma pilha de treinamento em Python e um mecanismo de implantação separado: o mesmo código de modelo pode ser treinado e depois executado em produção, o que o projeto apresenta como útil para personalização em dispositivo e aprendizado federado.
Design e ergonomia
- API semelhante ao PyTorch com formas e grafos dinâmicos, enquanto compila fluxos de operações de tensores em JIT e realiza fusão automática de kernels.
- A compilação incremental é enfatizada: o README afirma que alterações no código do modelo recompilam em menos de 5 segundos, mesmo em modo release.
- Backends podem ser trocados sem alterar o código do modelo; vários backends podem coexistir em uma aplicação e o dispositivo é escolhido em tempo de execução via `Device`.
Backends
- GPU: CUDA, ROCm, Metal, Vulkan, WebGPU e LibTorch (obsoleto a partir da versão 0.22.0). A cobertura varia por fornecedor: Nvidia (CUDA, Vulkan, WebGPU, LibTorch), AMD (ROCm, Vulkan, WebGPU, LibTorch), Apple (Metal, WebGPU, LibTorch), Intel e Qualcomm (Vulkan, WebGPU), Wasm (WebGPU).
- CPU: backend CubeCL CPU, Flex e LibTorch para x86 e Arm; Flex também cobre Wasm e no_std.
- Decoradores de backend: Autodiff adiciona retropropagação a qualquer backend; Fusion adiciona fusão de kernels onde houver suporte e é habilitado por padrão nos backends acelerados de primeira parte; Remote (beta) suporta execução cliente/servidor via Iroh ou WebSocket para computação distribuída.
Treinamento e inferência
- Um painel de treinamento em terminal construído sobre Ratatui mostra métricas de treinamento e validação em tempo real, com navegação por teclas de seta e a capacidade de interromper o loop de treinamento sem travar.
- Modelos ONNX podem ser importados por meio do burn-onnx e convertidos em código Rust nativo usando as APIs do Burn, para que sejam executados em qualquer backend do Burn; o README observa que este crate está em desenvolvimento ativo com um conjunto limitado de operadores.
- Pesos dos formatos PyTorch e Safetensors podem ser carregados em modelos definidos no Burn.
- A inferência pode ser executada no navegador via WebAssembly usando Flex (CPU) ou WGPU (WebGPU), com demonstrações de MNIST e classificação de imagens.
- Os componentes principais suportam no_std para ambientes embarcados bare-metal; atualmente, apenas o backend Flex funciona em no_std.
Ecossistema
- CubeCL: linguagem de computação GPU e compilador por trás dos backends acelerados, utilizável de forma independente.
- burn-onnx: importação ONNX; burn-store: salvamento/carregamento de pesos e importação PyTorch/Safetensors.
- burn-vision, burn-rl, burn-dataset para visão, aprendizado por reforço e conjuntos de dados.
- Repositório de modelos com modelos pré-treinados e exemplos; burn-bench para benchmarking de backends ao longo do tempo.
- Uma lista de crates da comunidade cobre carregamento de dados (polars, arrow-rs, image, hf-hub), tokenização e PNL (tokenizers, rust-bert), bibliotecas numéricas (ndarray, nalgebra), ML clássico (linfa, smartcore), runtimes de inferência (candle, mistral.rs, ort, tract, wonnx), ferramentas de LLM/RAG (rig, langchain-rust), embeddings e busca vetorial (fastembed, qdrant, lancedb), visão computacional (kornia-rs), simulação (rapier) e visualização (rerun, plotters).
Primeiros passos
- O Burn Book é a documentação principal, cobrindo tensores, módulos, otimizadores e kernels de GPU personalizados.
- Exemplos incluem um fluxo de trabalho básico de MNIST, loop de treinamento personalizado, kernel WGPU personalizado, conjuntos de dados CSV e de imagens, regressão, renderizador personalizado, demonstrações de inferência no navegador, importação de pesos PyTorch, classificação e geração de texto, e WGAN no MNIST.
- O licenciamento é MIT/Apache-2.0.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.