Aprendizado de Máquina em Rust: visão geral das bibliotecas para Data Science

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Aprendizado de Máquina em Rust: bibliotecas e ferramentas modernas

O ecossistema de aprendizado de máquina foi associado exclusivamente ao Python por muito tempo. No entanto, Rust, graças ao seu desempenho, segurança de memória e custos zero de abstração, está cada vez mais sendo integrado ao ferramental de ML. Neste artigo, vamos analisar as principais bibliotecas para aprendizado de máquina na linguagem Rust, que permitem construir, treinar e implantar modelos com uma eficiência inatingível para linguagens interpretadas.



Por que Rust para aprendizado de máquina?

Rust oferece três principais vantagens para ML:

  • Desempenho — a velocidade de execução do código é comparável a C/C++.
  • Segurança — o sistema de ownership elimina classes inteiras de erros de memória.
  • Paralelismo — modelo de threads integrado sem condições de corrida de dados.

No entanto, Rust não tenta substituir o Python na parte de pesquisa. Seu nicho é o ambiente de produção, sistemas embarcados, serviços de alta carga e computação de borda (edge computing).



1. Linfa — conjunto completo de algoritmos de ML clássico

O projeto linfa (análogo ao scikit-learn para Rust) fornece uma estrutura modular para tarefas de aprendizado supervisionado e não supervisionado. A biblioteca está em desenvolvimento ativo com o apoio da comunidade Rust-ML.



Componentes principais do Linfa

  • linfa-clustering — K-Means, DBSCAN, Gaussian Mixture
  • linfa-linear — regressão linear e logística
  • linfa-svm — máquina de vetores de suporte
  • linfa-trees — árvores de decisão e floresta aleatória
  • linfa-nn — métodos de vizinhos mais próximos


Exemplo: regressão linear com Linfa

use linfa::prelude::*;use linfa_linear::LinearRegression;use ndarray::array;

fn main() { // Dados de treinamento: (x, y) let x = array![[1.0], [2.0], [3.0], [4.0]]; let y = array![2.0, 4.0, 6.0, 8.0];

// Criando o dataset let dataset = Dataset::new(x, y);

// Treinando o modelo let model = LinearRegression::default().fit(&dataset).unwrap();

// Previsão para x=5 let pred = model.predict(&array![[5.0]]); println!("Previsão: {}", pred);}


2. Burn — framework de aprendizado profundo com suporte a GPU

Burn é um framework moderno para redes neurais, escrito em Rust. Ele suporta diferenciação automática, execução em GPU via WGPU e Vulkan, além de exportação para ONNX.



Principais recursos do Burn

  • Grafos computacionais dinâmicos e estáticos
  • Backends: Torch, WGPU, Ndarray, Fusion
  • Otimizadores integrados (Adam, SGD, AdamW)
  • Suporte a convoluções 1D, 2D, 3D


Exemplo: perceptron simples em Burn

use burn::tensor::{Tensor, backend::Backend};use burn::nn::{Linear, LinearConfig};use burn::module::Module;

#[derive(Module)]struct MLP<B: Backend> { layer1: Linear<B>, layer2: Linear<B>,}

impl<B: Backend> MLP<B> { fn new(device: &B::Device) -> Self { Self { layer1: LinearConfig::new(2, 16).init(device), layer2: LinearConfig::new(16, 1).init(device), } }

fn forward(&self, input: Tensor<B, 2>) -> Tensor<B, 2> { let x = self.layer1.forward(input).relu(); self.layer2.forward(x) }}


3. Candle — framework minimalista do Hugging Face

Desenvolvido pela equipe do Hugging Face, o Candle é focado em simplicidade e velocidade. Ele não usa CUDA (apenas CPU e Metal), o que o torna ideal para inferência em Mac e dispositivos de borda.



Características do Candle

  • Tamanho do binário inferior a 10 MB
  • Suporte pronto para modelos: LLaMA, Whisper, BERT

Recommendations