Memory-Efficient Implementation of DenseNets
Geoff Pleiss, Danlu Chen, Gao Huang, Tongcheng Li, Laurens van der, Maaten, Kilian Q. Weinberger

TL;DR
This paper presents strategies to significantly reduce GPU memory usage in DenseNet training, enabling training of much deeper networks and achieving state-of-the-art results on ImageNet.
Contribution
It introduces memory management techniques that lower DenseNet memory requirements from quadratic to linear, allowing training of deeper networks on limited hardware.
Findings
Memory reduction from quadratic to linear in feature maps
Training of 264-layer DenseNet on a single workstation
Achieved 20.26% top-1 error on ImageNet
Abstract
The DenseNet architecture is highly computationally efficient as a result of feature reuse. However, a naive DenseNet implementation can require a significant amount of GPU memory: If not properly managed, pre-activation batch normalization and contiguous convolution operations can produce feature maps that grow quadratically with network depth. In this technical report, we introduce strategies to reduce the memory consumption of DenseNets during training. By strategically using shared memory allocations, we reduce the memory cost for storing feature maps from quadratic to linear. Without the GPU memory bottleneck, it is now possible to train extremely deep DenseNets. Networks with 14M parameters can be trained on a single GPU, up from 4M. A 264-layer DenseNet (73M parameters), which previously would have been infeasible to train, can now be trained on a single workstation with 8 NVIDIA…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Code & Models
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsAdvanced Neural Network Applications · Domain Adaptation and Few-Shot Learning · Advanced Image and Video Retrieval Techniques
Methods*Communicated@Fast*How Do I Communicate to Expedia? · Batch Normalization · Average Pooling · Concatenated Skip Connection · Global Average Pooling · Dense Block · Kaiming Initialization · 1x1 Convolution · Dropout · Dense Connections
