Profiling based Out-of-core Hybrid Method for Large Neural Networks
This work addresses memory limitations for deep learning practitioners using GPUs, offering an incremental improvement over existing data-swapping and recomputing methods.
The paper tackles the problem of running large neural networks that exceed GPU memory capacity by proposing PoocH, a profiling-based out-of-core hybrid method that combines swapping and recomputing, achieving performance degradation of 38% on x86 and 28% on POWER9 machines while computing a 50 GB model on a 16 GB GPU.
GPUs are widely used to accelerate deep learning with NNs (NNs). On the other hand, since GPU memory capacity is limited, it is difficult to implement efficient programs that compute large NNs on GPU. To compute NNs exceeding GPU memory capacity, data-swapping method and recomputing method have been proposed in existing work. However, in these methods, performance overhead occurs due to data movement or increase of computation. In order to reduce the overhead, it is important to consider characteristics of each layer such as sizes and cost for recomputation. Based on this direction, we proposed Profiling based out-of-core Hybrid method (PoocH). PoocH determines target layers of swapping or recomputing based on runtime profiling. We implemented PoocH by extending a deep learning framework, Chainer, and we evaluated its performance. With PoocH, we successfully computed an NN requiring 50 GB memory on a single GPU with 16 GB memory. Compared with in-core cases, performance degradation was 38 \% on x86 machine and 28 \% on POWER9 machine.