Об этом проекте

Burn — это библиотека тензоров и фреймворк глубокого обучения, написанный на Rust и предназначенный для численных вычислений, обучения и инференса. Заявленная цель — избежать обычного разделения между стеком обучения на Python и отдельным движком развёртывания: один и тот же код модели можно обучать, а затем запускать в production, что проект позиционирует как полезное для персонализации на устройстве и федеративного обучения. Дизайн и эргономика - API, похожий на PyTorch, с динамическими формами и графами, при этом JIT-компиляция потоков тензорных операций и автоматический фьюжн ядер. - Подчёркивается инкрементальная компиляция: в README утверждается, что изменения кода модели перекомпилируются менее чем за 5 секунд даже в release-режиме. - Бэкенды можно менять без изменения кода модели; несколько бэкендов могут сосуществовать в одном приложении, а устройство выбирается во время выполнения через `Device`. Бэкенды - GPU: CUDA, ROCm, Metal, Vulkan, WebGPU и LibTorch (устарел с версии 0.22.0). Покрытие зависит от производителя: Nvidia (CUDA, Vulkan, WebGPU, LibTorch), AMD (ROCm, Vulkan, WebGPU, LibTorch), Apple (Metal, WebGPU, LibTorch), Intel и Qualcomm (Vulkan, WebGPU), Wasm (WebGPU). - CPU: бэкенд CubeCL CPU, Flex и LibTorch для x86 и Arm; Flex также охватывает Wasm и no_std. - Декораторы бэкендов: Autodiff добавляет обратное распространение ошибки к любому бэкенду; Fusion добавляет фьюжн ядер там, где он поддерживается, и включён по умолчанию на собственных ускоренных бэкендах; Remote (бета) поддерживает выполнение клиент/сервер через Iroh или WebSocket для распределённых вычислений. Обучение и инференс - Терминальная панель обучения, построенная на Ratatui, показывает метрики обучения и валидации в реальном времени, с навигацией клавишами-стрелками и возможностью прервать цикл обучения без сбоя. - Модели ONNX можно импортировать через burn-onnx и преобразовывать в нативный код Rust с использованием API Burn, чтобы они работали на любом бэкенде Burn; в README отмечается, что этот крейт находится в активной разработке с ограниченным набором операторов. - Веса из форматов PyTorch и Safetensors можно загружать в модели, определённые в Burn. - Инференс может выполняться в браузере через WebAssembly с использованием Flex (CPU) или WGPU (WebGPU), с демонстрациями MNIST и классификации изображений. - Основные компоненты поддерживают no_std для встраиваемых сред без ОС; в настоящее время в no_std работает только бэкенд Flex. Экосистема - CubeCL: язык GPU-вычислений и компилятор, стоящий за ускоренными бэкендами, может использоваться самостоятельно. - burn-onnx: импорт ONNX; burn-store: сохранение/загрузка весов и импорт PyTorch/Safetensors. - burn-vision, burn-rl, burn-dataset для компьютерного зрения, обучения с подкреплением и наборов данных. - Репозиторий models с предобученными моделями и примерами; burn-bench для бенчмаркинга бэкендов с течением времени. - Список крейтов сообщества охватывает загрузку данных (polars, arrow-rs, image, hf-hub), токенизацию и NLP (tokenizers, rust-bert), численные библиотеки (ndarray, nalgebra), классический ML (linfa, smartcore), среды инференса (candle, mistral.rs, ort, tract, wonnx), инструменты LLM/RAG (rig, langchain-rust), эмбеддинги и векторный поиск (fastembed, qdrant, lancedb), компьютерное зрение (kornia-rs), симуляцию (rapier) и визуализацию (rerun, plotters). Начало работы - Burn Book — основная документация, охватывающая тензоры, модули, оптимизаторы и пользовательские GPU-ядра. - Примеры включают базовый рабочий процесс MNIST, пользовательский цикл обучения, пользовательское WGPU-ядро, наборы данных CSV и изображений, регрессию, пользовательский рендерер, демонстрации инференса в браузере, импорт весов PyTorch, классификацию и генерацию текста, а также WGAN на MNIST. - Лицензирование: MIT/Apache-2.0.