Об этом проекте
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.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.