DawnPiper: A Memory-scablable Pipeline Parallel Training Framework
Xuan Peng, Xuanhua Shi, Haolin Zhang, Yunfei Zhao, Xuehai Qian
TL;DR
DawnPiper tackles memory waste in pipeline parallel training by addressing memory imbalance across stages. It combines DL compilation-based profiling to produce a fine-grained computation graph, a partition theorem to constrain search space, a binary partitioning algorithm, and Capuchin-inspired memory optimization to swap or recompute within memory limits. The framework achieves substantial improvements in trainable batch size (up to 4× vs vPipe and 11× vs PipeDream) and up to 1.5× speedups over vPipe on various models and configurations, including CNNs and transformers, in both synchronous and asynchronous modes. These results demonstrate memory-efficient, scalable pipeline training that better utilizes GPU memory across diverse architectures.
Abstract
Pipeline parallelism is a crucial paradigm for large-scale model training. However, imbalances in memory footprint across stages can lead to significant GPU memory wastage, limiting the model sizes that pipeline parallelism can effectively support. In this paper, we introduce DawnPiper, a memory-scalable pipeline parallel training framework. Firstly, we develop a DL compilation-based profiling method that transforms the model into a fine-grained computation graph. This refinement gives us a finer granularity of model partitioning and memory optimization while facilitating automatic code generation. Based on observed memory usage characteristics, we derive a performance-optimal theorem for pipeline parallel partitioning that substantially reduces the partition search space. Secondly, we propose a binary pipeline partitioning algorithm and utilize a cost-model based memory optimization approach to efficiently identify nearly optimal pipeline parallel strategy. DawnPiper achieves up to a 4x and 11x increase in trainable maximum batch size compared to vPipe and PipeDream, respectively, and provides up to a 1.5x performance speedup compared to vPipe.
