Машинное обучение на Rust: обзор библиотек для Data Science

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Машинное обучение на Rust: библиотеки и инструменты для Data Science

Rust — язык системного программирования, который завоевывает популярность в сфере Data Science и машинного обучения (ML). Благодаря высокой производительности, безопасности памяти и отсутствию сборщика мусора, Rust становится отличной альтернативой Python для продакшн-систем, где критичны скорость и надежность. В этой статье мы рассмотрим ключевые библиотеки для машинного обучения на Rust, их возможности и примеры использования.

Почему Rust для машинного обучения?

Традиционно ML-разработка ведется на Python из-за богатой экосистемы (TensorFlow, PyTorch, scikit-learn). Однако Python имеет ограничения по скорости выполнения и потреблению памяти. Rust предлагает:

  • Производительность на уровне C/C++ — идеально для высоконагруженных инференсов и обучения на больших данных.
  • Безопасность памяти — компилятор предотвращает утечки и гонки данных.
  • Интеграция с Python — через PyO3 можно создавать быстрые Rust-расширения для Python-кода.
  • Встраиваемость — подходит для IoT, веб-сервисов и edge-устройств.

Основные библиотеки ML на Rust

1. Linfa — аналог scikit-learn

Linfa — это фреймворк для классических алгоритмов машинного обучения. Он предоставляет модульную архитектуру, где каждый алгоритм реализован в отдельном крейте. Поддерживаются:

  • Линейная и логистическая регрессия
  • Метод опорных векторов (SVM)
  • Деревья решений и случайный лес
  • Кластеризация (K-Means, DBSCAN)
  • Понижение размерности (PCA)

Пример: линейная регрессия

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

fn main() {
    // Обучающие данные: X (признаки), y (целевая переменная)
    let x = Array2::from_shape_vec((5, 1), vec![1.0, 2.0, 3.0, 4.0, 5.0]).unwrap();
    let y = Array2::from_shape_vec((5, 1), vec![2.0, 4.0, 6.0, 8.0, 10.0]).unwrap();
    
    let dataset = Dataset::new(x, y);
    let model = LinearRegression::default().fit(&dataset).unwrap();
    
    // Предсказание
    let test_x = Array2::from_shape_vec((1, 1), vec![6.0]).unwrap();
    let prediction = model.predict(&test_x);
    println!("Предсказанное значение: {:?}", prediction);
}

2. Burn — нейросети и глубокое обучение

Burn — современный фреймворк для глубокого обучения, написанный на Rust. Он поддерживает:

  • Автоматическое дифференцирование
  • Различные бэкенды: CPU (ndarray), GPU (CUDA, Vulkan)
  • Сверточные и рекуррентные сети
  • Оптимизаторы (Adam, SGD)

Пример: простая нейронная сеть

use burn::tensor::Tensor;
use burn::nn::{Linear, Relu};
use burn::optim::Adam;

fn main() {
    // Определение модели
    let model = Linear::new(10, 2);
    let input = Tensor::random([1, 10], burn::tensor::Distribution::Normal);
    
    // Прямой проход
    let output = model.forward(input);
    println!("Выход сети: {:?}", output);
}

3. SmartCore — полный цикл ML

SmartCore — библиотека, покрывающая весь пайплайн: от предобработки данных до оценки модели. Включает:

  • Нормализацию, масштабирование признаков
  • Классификацию (KNN, Naive Bayes)
  • Регрессию (линейная, гребневая)
  • Метрики качества (accuracy, F1-score)

4. Candle — легковесный фреймворк от Hugging Face

Candle — минималистичный ML-фреймворк с акцентом на инференс. Отлично подходит для запуска моделей на CPU и edge-устройствах. Поддерживает загрузку моделей формата PyTorch.

Инструменты для работы с данными

Для полноценного ML-пайплайна на Rust потребуются также:

  • ndarray — многомерные массивы (аналог NumPy).
  • polars — быстрая работа с табличными данными (

Рекомендаций