Rust Burn Library for Deep Learning
Новый фреймворк глубокого обучения(ML) на Rust, который стремится достичь баланса между гибкостью, производительностью и простой использования

Professional pentester, technical writer, telegram channel owner
Burn
Burn представляет собой новый фреймворк глубокого обучения, полностью написанный на языке программирования Rust. Основная цель создания этого фреймворка вместо использования существующих, таких как PyTorch или TensorFlow, заключается в создании универсального инструмента, который бы идеально подходил различным пользователям, включая исследователей, инженеров по машинному обучению и инженеров программного обеспечения низкого уровня.
Основные принципы Rust Burn: гибкость, производительность и простота использования.
Гибкость обеспечивается возможностью быстрого внедрения передовых исследовательских идей и проведения экспериментов.
Производительность достигается за счет оптимизации, включая использование специфических для аппаратного обеспечения функций, таких как Tensor Cores на графических процессорах Nvidia.
Простота использования обусловлена упрощением рабочего процесса по обучению, развертыванию и запуску моделей в производственной среде.
Основные особенности:
Гибкий и динамический вычислительный граф
Потокобезопасные структуры данных
Интуитивно понятные абстракции для упрощения процесса разработки
Высокая производительность при обучении и выводе
Поддержка многих реализаций для CPU и GPU
Полная поддержка протоколирования, метрик и контрольных точек во время обучения
Активное, хотя и небольшое, сообщество разботчиков
Установка Rust

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Установка Burn
Чтобы использовать Rust Burn, сначала необходимо установить Rust на вашу систему. После правильной настройки Rust вы можете создать новое приложение на Rust с помощью cargo, менеджера пакетов Rust.
Выполните следующую команду в вашем текущем каталоге:
cargo new new_burn_app
Перейдите в этот новый каталог:
cd new_burn_app
Далее добавьте Burn как зависимость, а также функцию бэкенда WGPU, которая позволяет выполнять операции на GPU:
cargo add burn --features wgpu
В конце скомпилируйте проект для установки Burn:
cargo build
Это установит фреймворк Burn вместе с бэкендом WGPU. WGPU позволяет Burn выполнять низкоуровневые операции на GPU.
Примеры кода
Поэлементное Сложение
Чтобы запустить следующий код, откройте и замените содержимое в src/main.rs:
use burn::tensor::Tensor;
use burn::backend::WgpuBackend;
// Псевдоним для используемого бэкенда.
type Backend = WgpuBackend;
fn main() {
// Создание двух тензоров, первый с явными значениями и второй с единицами, имеющими такую же форму, как у первого
let tensor_1 = Tensor::from_data([[2., 3.], [4., 5.]]);
let tensor_2 = Tensor::ones_like(&tensor_1);
// Выводим результат поэлементного сложения (с использованием бэкенда WGPU) двух тензоров.
println!("{}", tensor_1 + tensor_2);
}
В основной функции мы создали два тензора с бэкендом WGPU и произвели их сложение.
Чтобы выполнить код, введите cargo run в терминале.
Вывод:
Теперь вы должны увидеть результат сложения.
Tensor {
data: [[3.0, 4.0], [5.0, 6.0]],
shape: [2, 2],
device: BestAvailable,
backend: "wgpu",
kind: "Float",
dtype: "f32",
}
Примечание: данный код является примером из Burn Book: Getting started.
Поэлементный Модуль Прямого Прохода
Вот пример простого использования фреймворка. Мы объявляем поэлементный модуль прямого прохода и его реализацию в этом фрагменте кода.
use burn::nn;
use burn::module::Module;
use burn::tensor::backend::Backend;
#[derive(Module, Debug)]
pub struct PositionWiseFeedForward<B: Backend> {
linear_inner: Linear<B>,
linear_outer: Linear<B>,
dropout: Dropout,
gelu: GELU,
}
impl PositionWiseFeedForward<B> {
pub fn forward(&self, input: Tensor<B, D>) -> Tensor<B, D> {
let x = self.linear_inner.forward(input);
let x = self.gelu.forward(x);
let x = self.dropout.forward(x);
self.linear_outer.forward(x)
}
}
Вышеуказанный код взят из репозитория GitHub.
Примеры Проектов
Чтобы узнать больше о примерах и запустить их, скачайте репозиторий https://github.com/burn-rs/burn и выполните указанные проекты:
MNIST: Обучите модель на CPU или GPU с использованием различных бэкендов.
MNIST Inference Web: Вывод модели в браузере.
Text Classification: Обучите кодировщик трансформера с нуля на GPU.
Text Generation: Создайте и обучите авторегрессивный трансформер с нуля на GPU.
Предварительно Обученные Модели
Для создания вашего AI-приложения вы можете использовать следующие предварительно обученные модели и дополнительно настроить их на своем наборе данных:
SqueezeNet: squeezenet-burn Llama 2: Gadersd/llama2-burn Whisper:
Gadersd/whisper-burn Stable Diffusion v1.4: Gadersd/stable-diffusion-burn
Итог
Rust Burn — новый и перспективный фреймворк глубокого обучения, который позволяет разработчикам на Rust максимально использовать преимущества языка. Обеспечивая гибкость, производительность и удобство, Burn может стать альтернативой устоявшимся решениям в области глубокого обучения. Несмотря на начальную стадию развития, фреймворк обещает большие возможности для специалистов и исследователей.



