mapillary/inplace_abn

In-Place Activated BatchNorm for Memory-Optimized Training of DNNs

What it solves

InPlace-ABN は、深層ニューラルネットワークの学習に必要な GPU メモリを削減します。標準的な学習では、フレームワークは、誤差逆伝播法(backward pass)の際に勾配を計算するために、Batch Normalization (BN) への入力と、その後の Convolution 層への入力の両方のための大きなバッファを保持しておく必要があります。InPlace-ABN は、BN 入力バッファの保持の必要性を排除し、潜在的に学習メモリを最大 50% 削減できます。

How it works

Batch Normalization と非線形活性化のシーケンスを、単一のインプレース操作として再定義します。入力バッファの保持を避けるため、BN の backward pass は、その出力を利用するように書き換えられます。この出力は、活性化関数の逆関数を用いて、次層の入力から再構成されます。これには、変換が可逆であることを確認するために、BN スケーリング因子のパラメータ化に特定の変更が必要です。

Who it’s for

GPU メモリに制約がある場合、またはパフォーマンスを向上させるためにバッチサイズを大きくしたい研究者や開発者(ResNet、ResNeXt、Wide ResNet などの大規模な深層学習モデルを学習する場合)。

Highlights

  • Significant Memory Savings: 現代的なアーキテクチャにおいて、学習メモリ使用量を最大 মেশিন 50% 削減します。

  • Improved Performance: より大きなバッチサイズを可能にし、ImageNet、Cityscapes、Mapillary Vistas などのベンチマークでトップクラスの結果をもたらします。

  • PyTorch Implementation: 効率性のために、ネイティブ C++/CUDA 実装を提供します。

  • Broad Architecture Support: ResNet、ResNeXt、DenseNet、WideResNet といった様々なモデルと互換性があります。

関連

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