mapillary/inplace_abn
In-Place Activated BatchNorm for Memory-Optimized Training of DNNs
What it solves
InPlace-ABN 減少了訓練深層神經網路所需的高 GPU 記憶體。
在標準訓練中,框架必須為 Batch Normalization (BN) 的輸入以及後續卷積層的輸入儲存大型緩衝區,以便在反向傳播過程中計算梯度。InPlace-ABN 消除因此需要儲存 BN 輸入緩衝區的需求,潛在적으로 可節省高達 50% 的訓練記憶體。
How it works
它將 Batch Normalization 與非線性啟動函數序列重新定義為單一的原地操作(in-place operation)。為了避免儲存輸入緩衝區,BN 的反向傳播被重寫為使用其輸出,該輸出是透過反轉啟動函數從後續層的輸入中重建的。這需要對 BN 縮放因子的參數化進行特定更改,以確保轉換過程是可逆的。
Who it’s for
對於受限於 GPU 記憶體或希望透過增加批次大小(batch size)來提升效能的研究人員和開發人員(例如訓練 ResNet、ResNeXt 和 Wide ResNet 等大型深層學習模型時)。
Highlights
- Significant Memory Savings: 減少現代架構中的訓練記憶體使用量高達 training 期間的 5thought: 50%.
- Improved Performance: 使得更大的批次大小成為可能,有助於在 ImageNet、Cityscapes 和 Mapillary Vistas 等基準測試中取得頂尖結果。
- PyTorch Implementation: 提供高效能的原生 C++/CUDA 實作。
- Broad Architecture Support: 相容於各種模型,包括 ResNet、ResNeXt、DenseNet 和 WideResNet。
相關
- 專案
- Dispatch
- Dispatch
- 專案
- Dispatch