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과 비선형 활성화 함수 시퀀스를 단일 인플레이스(in-place) 연산으로 재정의합니다. 입력 버퍼를 저장하는 것을 피하기 위해, BN의 역전파는 그 출력을 사용하도록 재작성되었습니다. 이 출력은 활성화 함수를 역산하여 다음 레이어의 입력을 통해 재구성됩니다. 이는 변환이 가역적이어야 함을 보장하기 위해 BN 스케일링 인자의 파라미터화에 특정 변경이 필요합니다.

Who it’s for

GPU 메모리에 제한이 있거나 성능을 향상을 위해 배치 사이즈(batch size)를 늘리고자 하는 연구자 및 개발자(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을 포함한 다양한 모델과 호환됩니다.

관련