Reducing Fine-Tuning Memory Overhead by Approximate and Memory-Sharing Backpropagation

Yuchen Yang, Yingdong Shi, Qi Cheems Wang, Xiantong Zhen, Yuxuan Shi +1 more
6/1/2024

No official code found. Best implementation: yyyyychen/LowMemoryBP (21 stars, MIT, last commit 2024-12-10).

Abstract

Fine-tuning pretrained large models to downstream tasks is an important problem, which however suffers from huge memory overhead due to large-scale parameters. This work strives to reduce memory overhead in fine-tuning from perspectives of activation function and layer normalization. To this end, we propose the Approximate Backpropagation (Approx-BP) theory, which provides the theoretical feasibility of decoupling the forward and backward passes. We apply our Approx-BP theory to backpropagation training and derive memory-efficient alternatives of GELU and SiLU activation functions, which use derivative functions of ReLUs in the backward pass while keeping their forward pass unchanged. In addition, we introduce a Memory-Sharing Backpropagation strategy, which enables the activation memory to be shared by two adjacent layers, thereby removing activation memory usage redundancy. Our method neither induces extra computation nor reduces training efficiency. We conduct extensive experiments with pretrained vision and language models, and the results demonstrate that our proposal can reduce up to $\sim$$30\%$ of the peak memory usage. Our code is released at https://github.com/yyyyychen/LowMemoryBP.

View on arXivView PDF

Code Implementations(1)

MIT

The official implementation of the paper "Reducing Fine-Tuning Memory Overhead by Approximate and Memory-Sharing Backpropagation"

211C++, CudaMay 27, 20241 years agoMIT

Cite this paper

@article{yang2024reducing,
  title  = {Reducing Fine-Tuning Memory Overhead by Approximate and Memory-Sharing Backpropagation},
  author = {Yuchen Yang and Yingdong Shi and Qi Cheems Wang and Xiantong Zhen and Yuxuan Shi and Jun Xu},
  year   = {2024},
  eprint = {2406.16282},
  archivePrefix = {arXiv},
  url    = {https://arxiv.org/abs/2406.16282},
  journal = {ICML 2024 2024}
}

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/2406.16282.svg)](https://codeofpaper.com/paper/2406.16282)

Discussion