AIで開発する

Burn 0.22、バックエンドのジェネリクスを削除しRust MLビルドを高速化

Burn 0.22はユーザーAPIからバックエンド型パラメータを排除し、再ビルド時間を最大15倍短縮するとともに、LoRAサポートを追加しました。

光る回路基板と噛み合うRustギア機構
この記事用に生成されたイラスト

英語の原文から自動翻訳されました。

Rust向けの機械学習フレームワーク「Burn」がバージョン0.22をリリースしました。この重要なアップデートにより、アプリケーションコードが簡素化され、コンパイル時間が劇的に短縮されます。2026年10月に公開されたこのバージョンでは、ユーザー向けAPIからバックエンドのジェネリック型が削除され、開発者はコンパイル時ではなく実行時にデバイスを選択できるようになりました。また、LoRAおよびQLoRAによるファインチューニングのネイティブサポート、メモリ管理の改善、複雑なモデルに対するビルドプロセスの高速化も導入されています。

何が起きたか

以前のBurnバージョンでは、開発者はB: Backendなどのバックエンド型パラメータをアプリケーションスタック全体にわたって伝播させる必要がありました。このアプローチは柔軟性を提供しましたが、重い依存チェーンを生み出し、モデル構造が変更されるたびにコンパイル速度を低下させていました。バージョン0.22では、これらのバックエンドジェネリクスがユーザーコードから削除されました。代わりに、実行コンテキストはDevice::cuda(0)やDevice::wgpu()といったデバイスの初期化を通じて選択されます。この変更により、高レベルのテンソル操作と具体的なバックエンド実装が分離され、開発ワークフローが効率化されました。

ビルド時間への影響は顕著です。開発チームが提供するベンチマークによると、小さな畳み込みニューラルネットワークから隠れ層を1つ削除した場合、リリースモードでの中央値再ビルド時間は28.42秒から4.57秒に短縮されました。カスタム訓練ループを持つトランスフォーマーモデルにおいて、同等のフィードフォワード式を入れ替えた場合、再ビルド時間は14.73秒からわずか1.00秒まで低下しました。これらの改善は、以前はモデルのわずかな編集だけでコードベースの広範な部分の再コンパイルを強制していた依存チェーンを断ち切ったことによってもたらされています。

APIの変更に加え、このリリースはランタイムパフォーマンスと開発者体験にも焦点を当てています。ワークロード統計に基づいて割り当てサイズを調整する適応型メモリプールを導入し、一部のCNNベンチマークではピークVRAM使用量をほぼ半分に削減しました。さらに、既存モデルのLoRAおよびQLoRAを用いたファインチューニングをサポートし、ベースレイヤーを変更することなく大規模モデルを効率的に適応させることを可能にします。加えて、フレームワークはONNXへのモデルエクスポートに対応し、Iroh転送プロトコルを介したリモート計算機能も統合しました。

仕組み

アーキテクチャの中核となる変更点は、新しい実行パス:Tensor → Bridge → Dispatch → Backend です。ブリッジレイヤーは、具体的なバックエンド表現を高レベルのテンソルAPIから隠蔽し、以前はアプリケーションコードを特定のバックエンドに紐付けていた型を実質的に消去(type erasure)します。この型消去により、ディスパッチシステムは実行時に適切なバックエンドへ操作をルーティングできます。Backendトレイトはカスタム操作の実装において依然として中心的な役割を果たしますが、アプリケーションコード側でジェネリック制約を持たせる必要はなくなりました。自動微分コンテキストはデバイス上で設定され、テンソルによって継承されるようになり、前提条件チェックはランタイムで行われるようになりました。

メモリ管理は、CubeCLの新しい適応型メモリプールによって大幅に刷新されました。静的なプールサイズではなく、システムはドライラン中に割り当て統計を監視し、ページサイズを動的に調整します。空になった古いページを解放し、生存している割り当てをより早く空きメモリへ移動させます。小さく頻繁に変化する割り当ては、フラグメンテーションを最小限に抑えるため別個のプールに保持されます。このアプローチにより、予約済みメモリが実際の使用量に密接に一致することが保証され、手動設定なしでピークVRAM要件を大幅に低減します。

カスタム操作は、#[backend_extension]マクロを通じて統合されるようになりました。これにより、ユーザー定義のカーネルをディスパッチシステムに接続できます。これにより、開発者はバイアス付き行列積とReLUの融合など、カスタム関数を標準的なテンソルインターフェース経由で公開でき、バックエンドジェネリクスを再び持ち込むことなく実現できます。このマクロは遅延実行のための登録を生成し、融合グラフの境界を処理することで、カスタムカーネルが組み込み操作とともに最適化されることを保証します。このメカニズムは、burn-linalgやburn-signalといった新ライブラリの基盤となっています。

主要な詳細

  • ビルド速度: 中央値再ビルド時間は最大15倍短縮され、トランスフォーマーモデルでは同等のコード変更に対して14.73秒から1.00秒へと低下しました。
  • APIの簡素化: バックエンド型パラメータ(B: Backend)はユーザー向け構造体および関数から削除され、実行時のデバイス選択に置き換えられました。
  • メモリ効率: 適応型メモリプールにより、CNNのピークVRAM使用量は49%(956 MiBから486 MiB)、トランスフォーマーでは17.7%削減されました。
  • ファインチューニングサポート: LoRAおよびQLoRAのネイティブ統合により、独立したオプティマイザ設定で低ランクアダプターを訓練しながら、ベース重みを凍結することが可能です。
  • リモート計算: Burn Remoteは現在、認証・暗号化されたピアツーピア接続のためにIrohを使用しており、通信オーバーヘッドを削減するためのグラフ再生成(graph replay)をサポートしています。
  • コンパイラの更新: CubeCLはカーネル表現のためにPlironへ移行し、AMDおよびNVIDIA GPU用のLLVMターゲットを追加することで、移植性と最適化を向上させました。

なぜ重要なのか

RustでML製品を開発するソフトウェアエンジニアにとって、コンパイル速度は大きな生産性のボトルネックです。バックエンドジェネリクスの削除により、反復的な開発——モデルアーキテクチャの調整や訓練ループのデバッグ——が大幅に高速化されます。開発者は些細な変更ごとに数十秒待って再コンパイルする必要がなくなり、よりレスポンスの良いフィードバックループが可能になります。この変更は、イテレーションサイクルが容易であるため従来C++やPythonが支配的だったML分野において、Rustを使用する際の参入障壁を下げるものです。

LoRAおよびQLoRAサポートの追加は、リソースが制限された環境で大規模言語モデルやその他の基盤モデルを展開するという重要なニーズに対応しています。すべてのパラメータに対する完全な勾配状態を保存せずにモデルを効率的にファインチューニングできるようにすることで、Burn 0.22は消費者向けハードウェア上で大規模モデルを適応させることを現実的なものとしています。適応型メモリ管理はこの機能をさらに強化し、利用可能なVRAMが効果的に使用されることを保証します。これは、限られたGPUメモリでより大きなバッチサイズや複雑なモデルを実行するために不可欠です。

できること

  • Burnの依存関係をバージョン0.22に更新し、モデル構造体および関数シグネチャからバックエンドジェネリックパラメータを削除してください。
  • コンパイル時のバックエンド選択を、Device::cuda()、Device::wgpu()、またはDevice::flex()を使用した実行時のデバイス初期化に置き換えてください。
  • 新しいLoraモジュールを試して既存モデルをファインチューニングし、ParamGroupを使用してどのレイヤーにアダプターを適用するかを制御してください。
  • 更新されたデバイスAPIでメモリ使用量を監視し、適応型プールが特定のワークロードでVRAM消費をどのように削減するかを観察してください。
  • カスタムカーネルを使用している場合は、それらをリファクタリングして#[backend_extension]マクロを利用し、新しいディスパッチシステムとの統合と融合を有効にしてください。
  • Iroh転送を用いたBurn Remoteサーバーをセットアップすることで、分散トレーニングや推論タスクのためのリモート実行オプションを検討してください。

Bytechapストアのツール

$89

DocBento

すべてのスキャンを読み取り、ページ出典を提示して回答するセルフホスト型ドキュメント管理システム。

ライブデモ

続きを読む

すべての記事