QLoRA: Эффективная тонкая настройка квантованных больших языковых моделей
QLoRA: Efficient Finetuning of Quantized LLMs
May 23, 2023
Авторы: Tim Dettmers, Artidoro Pagnoni, Ari Holtzman, Luke Zettlemoyer
cs.AI
Аннотация
Мы представляем QLoRA — эффективный метод тонкой настройки, который снижает использование памяти до уровня, позволяющего выполнять тонкую настройку модели с 65 миллиардами параметров на одном GPU с 48 ГБ памяти, сохраняя при этом полную производительность 16-битной тонкой настройки. QLoRA распространяет градиенты через замороженную, 4-битную квантованную предобученную языковую модель в Low Rank Adapters (LoRA). Наша лучшая семейная модель, которую мы назвали Guanaco, превосходит все ранее открыто выпущенные модели на бенчмарке Vicuna, достигая 99,3% уровня производительности ChatGPT, при этом требуя всего 24 часа тонкой настройки на одном GPU. QLoRA вводит ряд инноваций для экономии памяти без ущерба для производительности: (a) 4-битный NormalFloat (NF4) — новый тип данных, теоретически оптимальный для нормально распределенных весов; (b) двойное квантование для уменьшения среднего объема памяти за счет квантования констант квантования; и (c) пейджированные оптимизаторы для управления всплесками памяти. Мы используем QLoRA для тонкой настройки более 1000 моделей, предоставляя детальный анализ выполнения инструкций и производительности чат-ботов на 8 наборах данных с инструкциями, различных типах моделей (LLaMA, T5) и масштабах моделей, которые было бы невозможно запустить с обычной тонкой настройкой (например, модели с 33 и 65 миллиардами параметров). Наши результаты показывают, что тонкая настройка QLoRA на небольшом высококачественном наборе данных приводит к передовым результатам, даже при использовании моделей меньшего размера, чем предыдущие SoTA. Мы предоставляем детальный анализ производительности чат-ботов на основе оценок как людей, так и GPT-4, показывая, что оценки GPT-4 являются дешевой и разумной альтернативой человеческой оценке. Кроме того, мы обнаруживаем, что текущие бенчмарки для чат-ботов не заслуживают доверия для точной оценки их производительности. Анализ с "выбором лимонов" демонстрирует, где Guanaco уступает ChatGPT. Мы публикуем все наши модели и код, включая CUDA-ядра для 4-битного обучения.
English
We present QLoRA, an efficient finetuning approach that reduces memory usage
enough to finetune a 65B parameter model on a single 48GB GPU while preserving
full 16-bit finetuning task performance. QLoRA backpropagates gradients through
a frozen, 4-bit quantized pretrained language model into Low Rank
Adapters~(LoRA). Our best model family, which we name Guanaco, outperforms all
previous openly released models on the Vicuna benchmark, reaching 99.3% of the
performance level of ChatGPT while only requiring 24 hours of finetuning on a
single GPU. QLoRA introduces a number of innovations to save memory without
sacrificing performance: (a) 4-bit NormalFloat (NF4), a new data type that is
information theoretically optimal for normally distributed weights (b) double
quantization to reduce the average memory footprint by quantizing the
quantization constants, and (c) paged optimziers to manage memory spikes. We
use QLoRA to finetune more than 1,000 models, providing a detailed analysis of
instruction following and chatbot performance across 8 instruction datasets,
multiple model types (LLaMA, T5), and model scales that would be infeasible to
run with regular finetuning (e.g. 33B and 65B parameter models). Our results
show that QLoRA finetuning on a small high-quality dataset leads to
state-of-the-art results, even when using smaller models than the previous
SoTA. We provide a detailed analysis of chatbot performance based on both human
and GPT-4 evaluations showing that GPT-4 evaluations are a cheap and reasonable
alternative to human evaluation. Furthermore, we find that current chatbot
benchmarks are not trustworthy to accurately evaluate the performance levels of
chatbots. A lemon-picked analysis demonstrates where Guanaco fails compared to
ChatGPT. We release all of our models and code, including CUDA kernels for
4-bit training.