candle
Framework minimalista de deep-learning da Hugging Face em Rust - tensores, módulos nn e inferência de transformadores sem Python.
Busque em todas as páginas da documentação
Framework minimalista de deep-learning da Hugging Face em Rust - tensores, módulos nn e inferência de transformadores sem Python.
use candle_core::{Device, Tensor};
use candle_nn::{linear, Linear, Module, VarBuilder};
fn mlp(vb: VarBuilder) -> candle_core::Result<Linear> {
linear(768, 128, vb.pp("proj"))
}
fn forward(x: &Tensor, layer: &Linear) -> candle_core::Result<Tensor> {
layer.forward(x)
}Quando usar isto:
use candle_core::{Device, Tensor};
use candle_nn::{linear, Linear, Module, VarBuilder, VarMap};
fn main() -> candle_core::Result<()> {
let device = Device::Cpu;
let varmap = VarMap::new();
let vb = VarBuilder::from_varmap(&varmap, candle_core::DType::F32, &device);
let layer = linear(4, 2, vb.pp("fc"))?;
let x = Tensor::new(&[[1.0f32, 0.5, -0.2, 3.0]], &device)?;
let y = layer.forward(&x)?;
println!("output shape: {:?}", y.shape());
Ok(())
}O que isto demonstra:
VarMap + VarBuilder para parâmetros treináveiscandle-core fornece Tensor, Device e autodiff (controlado por feature).candle-nn agrupa camadas, otimizadores e utilitários de loss.candle-transformers hospeda definições de modelos que correspondem às configurações da HF.| Crate | Papel |
|---|---|
candle-core | Matemática de Tensor, dispositivos |
candle-nn | Camadas, utilitários de treinamento |
candle-transformers | BERT, Llama, etc. |
Cargo.lock e CI contra exemplos da HF.F32, a menos que o modelo exija BF16.[batch, seq, hidden] - a atenção falha silenciosamente com bugs de broadcast. Correção: afirme ranks nos limites dos módulos.Device::cuda_if_available() na inicialização e registre a escolha.| Alternativa | Usar Quando | Não Usar Quando |
|---|---|---|
| burn | Pesquisa de treinamento agnóstico de backend | Você quer ports de transformadores mantidos pela HF |
| ort | ONNX exportado de qualquer framework | Você precisa de treinamento em Rust |
| tch (bindings PyTorch) | Precisa executar grafos PyTorch arbitrários | Você quer dependências puramente Rust |
| Python HF | Maior acervo de modelos e treinadores | Implantação edge em binário único |
Possível para modelos pequenos/médios; o treinamento de LLMs grandes ainda geralmente ocorre em Python, e os pesos são convertidos para inferência no Candle.
Use os construtores de modelo do candle-transformers mais os arquivos safetensors do repositório do modelo - combine os nomes de arquitetura do config.json.
Habilite o recurso cuda em candle-core e use Device::new_cuda(0)? quando o hardware estiver disponível.
GGUF e checkpoints quantizados são comuns para caminhos de inferência de LLM - siga os exemplos do Candle da HF para cada família de modelo.
Habilite o clipping de gradiente, diminua a taxa de aprendizado e inspecione as estatísticas do tensor após cada camada nos loops de treinamento.
O treinamento no Candle ainda pode exportar através de ferramentas separadas; muitas equipes treinam em outro lugar e inferem no Candle a partir de pesos publicados.
O Candle é focado na HF para transformadores; o Burn é de propósito geral com backends plugáveis - veja burn.
Adequado para treinamento em escala de pesquisa; verifique a numerologia em comparação com o PyTorch em um lote de referência antes de confiar nas curvas de loss.
Preencha as sequências de tokens, construa máscaras de atenção, execute um forward - combine com Tokenizers.
Compartilhe pesos somente leitura com Arc; o estado por requisição (cache KV) não deve competir entre threads sem sincronização.
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