mapillary/inplace_abn
In-Place Activated BatchNorm for Memory-Optimized Training of DNNs
What it solves
InPlace-ABN 减少了训练深层神经网络所需的 GPU 显存。
在标准训练中,框架必须为 Batch Normalization (BN) 的输入以及后续卷积层(Convolution layer)的输入存储大型缓冲区,以便在反向传播过程中计算梯度。InPlace-ABN 消除因此需要存储 BN 输入缓冲区的需求,潜在적으로 可节省高达 memory 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: 在现代架构中减少高达 50% 的训练显存使用量。
- Implied Performance: 使得更大的批次大小成为可能,有助于在 ImageNet、Cityscapes 和 Mapillary Vistas 等基准测试中取得顶尖结果。
- PyTorch Implementation: 提供高效能的原生 C++/CUDA 实现。
- Broad Architecture Support: 兼容于各种模型,包括 ResNet、ResNeXt、DenseNet 和 WideResNet。
相关
- 项目
- Dispatch
- Dispatch
- 项目
- Dispatch