Memory-Efficient Fine-Tuning of Transformers via Token Selection
Antoine Simoulin, Namyong Park, Xiaoyi Liu, Grey Yang
TL;DR
TokenTune tackles the memory bottleneck in fine-tuning large transformers by performing backpropagation through a randomly selected subset of input tokens, thereby drastically reducing activation memory while preserving task performance. The method generalizes to dense, normalization, and attention layers and can be combined with existing memory- and parameter-efficient fine-tuning approaches such as LoRA and QLoRA. Empirical results on medium- and large-scale models show TokenTune achieves accuracy on par with full fine-tuning or other memory-efficient methods, while reducing memory footprint; for Llama2-7B, memory can be cut by up to roughly $60\%$ when used alone, and even further when combined with LoRA/QLoRA. The approach is model- and task-agnostic within the transformer family and holds practical value for domain-specific fine-tuning and system-level co-training, with available code at the provided repository.
Abstract
Fine-tuning provides an effective means to specialize pre-trained models for various downstream tasks. However, fine-tuning often incurs high memory overhead, especially for large transformer-based models, such as LLMs. While existing methods may reduce certain parts of the memory required for fine-tuning, they still require caching all intermediate activations computed in the forward pass to update weights during the backward pass. In this work, we develop TokenTune, a method to reduce memory usage, specifically the memory to store intermediate activations, in the fine-tuning of transformer-based models. During the backward pass, TokenTune approximates the gradient computation by backpropagating through just a subset of input tokens. Thus, with TokenTune, only a subset of intermediate activations are cached during the forward pass. Also, TokenTune can be easily combined with existing methods like LoRA, further reducing the memory cost. We evaluate our approach on pre-trained transformer models with up to billions of parameters, considering the performance on multiple downstream tasks such as text classification and question answering in a few-shot learning setup. Overall, TokenTune achieves performance on par with full fine-tuning or representative memory-efficient fine-tuning methods, while greatly reducing the memory footprint, especially when combined with other methods with complementary memory reduction mechanisms. We hope that our approach will facilitate the fine-tuning of large transformers, in specializing them for specific domains or co-training them with other neural components from a larger system. Our code is available at https://github.com/facebookresearch/tokentune.
