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 백엔드를 통해 브라우저에서 직접 모델을 실행할 수 있습니다.
일반적인 워크플로우
- 모델 정의 – PyTorch와 마찬가지로 Burn의
Module트레이트를 사용합니다. Device생성 (예:Device::cuda(0).autodiff()또는Device::wgpu(Default::default()).autodiff()).- 학습 실행 – 텐서가 자동으로 그래디언트를 기록합니다.
backward()를 호출하여 계산합니다. - 가중치 저장 –
burn-store를 사용하거나 상호 운용성을 위해 ONNX로 내보냅니다. - 배포 – 모델 코드를 변경하지 않고
Device를 CPU, WebGPU 또는 원격 백엔드로 전환합니다.
사용 권장 대상
- 연구자 – Rust의 안전성과 속도를 원하면서도 빠른 편집-실행 루프가 필요한 분.
- 엔지니어 – 단일 코드베이스에서 이기종 하드웨어(클라우드 GPU, 엣지 CPU, 브라우저)로 실행되어야 하는 프로덕션 파이프라인을 구축하는 분.
- 기여자 – Rust AI 생태계(새로운 백엔드, 도메인 크레이트, 모델 주) 확장에 관심이 있는 분.
시작하기 – 크레이트는 crates.io (burn = "<latest>")에 게시되어 있습니다. 문서는 https://burn.dev/docs/burn 에 있으며, “Burn Book”은 텐서, 자동 미분, 학습 루프 및 배포에 대한 단계별 튜토리얼을 제공합니다.
위의 모든 정보는 저장소의 README에서 직접 가져온 것이며, 추가 기능은 추론되지 않았습니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트