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 – 2つのオプション:
- 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から直接引用したものであり、追加機能は推測されていません。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト