BlockSwap: Fisher-guided Block Substitution for Network Compression on a Budget

Jack Turner, Elliot J. Crowley, Michael O'Boyle, Amos Storkey, Gavin Gray
6/10/2019
cs.LGstat.ML

Official code: BayesWatch/pytorch-blockswap (33 stars, MIT, last commit 2021-03-25).

Abstract

The desire to map neural networks to varying-capacity devices has led to the development of a wealth of compression techniques, many of which involve replacing standard convolutional blocks in a large network with cheap alternative blocks. However, not all blocks are created equally; for a required compute budget there may exist a potent combination of many different cheap blocks, though exhaustively searching for such a combination is prohibitively expensive. In this work, we develop BlockSwap: a fast algorithm for choosing networks with interleaved block types by passing a single minibatch of training data through randomly initialised networks and gauging their Fisher potential. These networks can then be used as students and distilled with the original large network as a teacher. We demonstrate the effectiveness of the chosen networks across CIFAR-10 and ImageNet for classification, and COCO for detection, and provide a comprehensive ablation study of our approach. BlockSwap quickly explores possible block configurations using a simple architecture ranking system, yielding highly competitive networks in orders of magnitude less time than most architecture search techniques (e.g. under 5 minutes on a single GPU for CIFAR-10). Code is available at https://github.com/BayesWatch/pytorch-blockswap.

View on arXivView PDF

Code Implementations(1)

MIT

Code for BlockSwap (ICLR 2020).

334PythonMay 30, 20195 years agoMIT

Similar Papers

Cite this paper

@article{turner2019blockswap,
  title  = {BlockSwap: Fisher-guided Block Substitution for Network Compression on a Budget},
  author = {Jack Turner and Elliot J. Crowley and Michael O'Boyle and Amos Storkey and Gavin Gray},
  year   = {2019},
  eprint = {1906.04113},
  archivePrefix = {arXiv},
  url    = {https://arxiv.org/abs/1906.04113}
}

Add a badge to your README

Shows whether official code is linked for this paper.

Code of Paper badge
[![Code of Paper](https://codeofpaper.com/badge/1906.04113.svg)](https://codeofpaper.com/paper/1906.04113)

Discussion