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バックエンドにより、ブラウザ内で直接モデルを実行できます。

典型的なワークフロー

  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から直接引用したものであり、追加機能は推測されていません。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト