tracel-ai/burn

Burn is a next generation tensor library and Deep Learning Framework that doesn't compromise on flexibility, efficiency and portability.

Burn – Rust 우선 텐서 라이브러리 및 딥러닝 프레임워크

개요 – Burn은 저수준 텐서 연산과 고수준 딥러닝 API를 모두 제공하는 오픈 소스 Rust 크레이트입니다. 모델 학습과 프로덕션 환경에서의 실행을 위해 동일한 Rust 코드를 작성할 수 있도록 하여, 일반적인 Python에서 ONNX로의 내보내기 단계를 제거하는 것을 목표로 합니다.

중요성 – 대부분의 연구용 프레임워크(PyTorch, TensorFlow)는 Python 중심이며, 학습된 모델은 나중에 별도의 런타임(ONNX, TensorRT 등)으로 내보내집니다. Burn은 이러한 단계를 통합합니다:

  • PyTorch와 유사한 동적 그래프 인체공학(런타임에 모양 변경 가능).
  • JIT 컴파일 및 자동 커널 융합으로 동적 그래프의 유연성을 유지하면서 GPU 수준의 속도 제공.
  • Rust의 증분 컴파일로 편집-실행 주기를 짧게 유지(릴리스 모드에서도 재컴파일 < 5초).

주요 구성 요소

영역 크레이트 / 프로젝트 제공 기능
연산 CubeCL CUDA, ROCm, Metal, Vulkan 및 WebGPU로 컴파일되는 Rust 기반 GPU 연산 언어. 커널은 Rust로 한 번 작성하면 지원되는 모든 백엔드에서 실행 가능.
모델 상호 운용성 burn-onnx ONNX 모델을 가져와 네이티브 Burn Rust 코드로 변환.
burn-store 가중치 로드 및 저장(PyTorch .pt, Safetensors 등).
도메인 라이브러리 burn-vision, burn-rl, burn-dataset 비전 연산, 강화 학습 도우미 및 데이터셋 유틸리티.
사전 학습 모델 models Burn으로 구축된 즉시 실행 가능한 예제 모음.
도구 burn-bench 시간에 따른 백엔드 성능 비교를 위한 벤치마크.

지원되는 백엔드 – Burn은 플러그인 아키텍처를 통해 많은 장치에서 실행될 수 있습니다:

  • GPU – CUDA, ROCm, Metal, Vulkan, WebGPU (Nvidia, AMD, Apple, Intel, Qualcomm 및 브라우저 지원).
  • CPU – 두 가지 옵션:
    • CubeCL CPU – LLVM을 통한 JIT 컴파일 커널 (x86 및 ARM 지원).
    • Flex – no_std, WebAssembly 및 임베디드 타겟에서 작동하는 순수 Rust Eager 백엔드.
  • 백엔드는 Device 추상화를 통해 런타임에 교체 가능하며, 동일한 바이너리에서 여러 백엔드를 활성화하고 텐서별로 장치를 선택할 수 있습니다.

특수 기능

  • 자동 미분 (Autodiff) – 역전파는 장치별로 켤 수 있는 데코레이터입니다. 텐서는 요청 시에만 계산 그래프를 기록하여 추론을 가볍게 유지합니다.
  • 커널 융합 (Kernel fusion) – 연속적인 연산을 단일 GPU 커널로 자동 병합하여 시작 오버헤드를 줄입니다.
  • 원격 실행 (beta) – 클라이언트-서버 모델을 통해 암호화된 Iroh 또는 간단한 WebSocket 전송을 사용하여 텐서 작업을 다른 머신(또는 클라우드)으로 오프로드할 수 있습니다.
  • 학습 대시보드 – 터미널 UI(Ratatui로 구축)는 실시간 지표를 표시하고, 안전하게 학습을 일시 중지할 수 있으며, 외부 서비스 없이 작동합니다.
  • ONNX 및 PyTorch 가중치 가져오기 – 기존 모델을 다시 작성하지 않고 Burn으로 가져올 수 있습니다.
  • WebAssembly 추론 – Flex (CPU) 및 WGPU 백엔드를 통해 브라우저에서 직접 모델을 실행할 수 있습니다.

일반적인 워크플로우

  1. 모델 정의 – PyTorch와 마찬가지로 Burn의 Module 트레이트를 사용합니다.
  2. Device 생성 (예: Device::cuda(0).autodiff() 또는 Device::wgpu(Default::default()).autodiff()).
  3. 학습 실행 – 텐서가 자동으로 그래디언트를 기록합니다. backward()를 호출하여 계산합니다.
  4. 가중치 저장 – burn-store를 사용하거나 상호 운용성을 위해 ONNX로 내보냅니다.
  5. 배포 – 모델 코드를 변경하지 않고 Device를 CPU, WebGPU 또는 원격 백엔드로 전환합니다.

사용 권장 대상

  • 연구자 – Rust의 안전성과 속도를 원하면서도 빠른 편집-실행 루프가 필요한 분.
  • 엔지니어 – 단일 코드베이스에서 이기종 하드웨어(클라우드 GPU, 엣지 CPU, 브라우저)로 실행되어야 하는 프로덕션 파이프라인을 구축하는 분.
  • 기여자 – Rust AI 생태계(새로운 백엔드, 도메인 크레이트, 모델 주) 확장에 관심이 있는 분.

시작하기 – 크레이트는 crates.io (burn = "<latest>")에 게시되어 있습니다. 문서는 https://burn.dev/docs/burn 에 있으며, “Burn Book”은 텐서, 자동 미분, 학습 루프 및 배포에 대한 단계별 튜토리얼을 제공합니다.


위의 모든 정보는 저장소의 README에서 직접 가져온 것이며, 추가 기능은 추론되지 않았습니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트