Изучение LoRA, настройки префиксов и QLoRA

Введение

В этом сообщении в блоге я буду обсуждать концепцию PEFT. Во-первых, я объясню, почему возникла необходимость в эффективных методах тонкой настройки параметров. Затем я расскажу о таких методах, как LoRA, Prefix Tuning и QLoRA. Этот блог является частью моей серии блогов о больших языковых моделях. Вы можете просмотреть предыдущую публикацию о RLHF и ChatGPT здесь Обучение с подкреплением на основе отзывов людей (RLHF): расширение возможностей ChatGPT с руководством пользователя. Прежде всего, позвольте мне объяснить, что такое PEFT.

ПЕФТ

Тонкая настройка — это де-факто способ использовать большие предварительно обученные языковые модели для выполнения последующих задач. Однако он изменяет все параметры языковой модели и, следовательно, требует сохранения полной копии для каждой задачи. Так, например, если я выполняю задачи по обобщению, переводу и ответам на вопросы, мне придется хранить 3 разные версии языковой модели. Такие языковые модели, как GPT-2 и GPT-3, которые имеют параметры 774M и 175B соответственно, очень трудно настроить из-за слишком большого количества параметров. Затраты на обновление этих параметров отдельно для каждой нижестоящей задачи и последующее их сохранение нецелесообразны.

Эффективные методы тонкой настройки параметров — это набор методов, помогающих свести к минимуму количество обновляемых параметров. Эти методы вводят набор новых параметров, поэтому после тонкой настройки параметры языковой модели замораживаются, а эти новые параметры обновляются. Эти новые параметры в некоторых методах являются частью подсказки или частью архитектуры. Итак, первая техника, которую мы собираемся рассмотреть, это LORA:

НИЗКОРАНГОВАЯ АДАПТАЦИЯ LLM

Microsoft LoRA имеет возможность уменьшить количество обучаемых параметров в 10 000 раз и потребность в памяти графического процессора в 3 раза. Это не добавляет дополнительной задержки вывода. Авторы предположили, что при тонкой настройке обновляются только те веса, которые имеют низкий внутренний ранг. Итак, что делает LoRA, так это то, что они косвенно вводят некоторые плотные слои в модель. При тонкой настройке матрицы ранговой декомпозиции плотных слоев обновляются, но предварительно обученные веса замораживаются. Во время развертывания нам нужно позаботиться только о небольших модулях LoRA и одной общей модели. Это значительно снижает требования к хранилищу и накладные расходы на переключение задач.

На приведенном выше рисунке можно увидеть архитектуру модуля LoRA. Они представили две новые весовые матрицы A и B. A имеет размерность (r x d),в то время какBимеет размер (d x r). Рейтингrможет бытьлюбым числом меньше д. Рейтинг статьи равен 1.

Они использовали случайную гауссовскую инициализацию для A и нулевое значение для B, поэтому ∆W = BA равно нулю при начало обучения. Затем масштабирование ∆Wx выполняется с коэффициентом α/r, где α — константа в r. Давайте возьмем пример модели, у которой d = 512. Таким образом, общее количество параметров становится 512 x 512 = 262 144. Оптимизатор Адама сохраняет значение веса, дисперсию, и квадрат дисперсии для каждого параметра. Следовательно, мы должны хранить 262144 x 3 = 786432 значения. Это очень большое число. Теперь рассмотрим тот же пример с модулем LoRA. Нам нужно только обновить две матрицы A и B с размерами (512 x 1). Общее количество обновляемых параметров будет 2 x 512 x 1 = 1024. Оптимизатор Адама сохранит 3 x 1024 = 3072 значения. Это значительное улучшение по сравнению с предыдущим подходом. Вот почему они также наблюдали ускорение на 25% при обучении на GPT-3 175B по сравнению с полной тонкой настройкой, потому что они не рассчитывали градиент для подавляющего большинства параметров.

Квантовая LoRA

QLoRA была выпущена в мае 2023 года. Это квантованная версия метода адаптера низкого ранга. Квантование относится к процессу снижения точности весов, активаций или других числовых значений в модели нейронной сети. Он включает представление этих значений с меньшим количеством битов или дискретных уровней, тем самым уменьшая объем памяти и вычислительные требования модели. QLoRA уменьшает объем используемой памяти до такой степени, что модель параметров 65 байт может быть точно настроена только на одном графическом процессоре емкостью 48 гигабайт при сохранении полной производительности. Он распространяет обратно градиенты через замороженную 4-битную квантованную предварительно обученную языковую модель в адаптеры низкого ранга (LoRA).

QLORA обеспечивает точную 4-битную настройку с высокой точностью с помощью двух методов. Они предложили 4-битное квантование NormalFloat (NF4) и двойное квантование. Кроме того, они представили Paged Optimizers, чтобы предотвратить всплески памяти во время контрольных точек градиента, вызывающие ошибки нехватки памяти. Авторы использовали концепцию поблочного k-битного квантования. Они объясняют, что появление выброса во входном тензоре отрицательно влияет на использование бинов квантования. Таким образом, они разбивают входной тензор на блоки, которые квантуются независимо друг от друга, каждый со своей собственной константой квантования c. Они назвали тип данных, который имеет равное ожидаемое количество значений в каждом k-битовом бине квантования, NormalFloat (NFk), поскольку этот тип данных является оптимальным с точки зрения информации для нормально распределенных данных с нулевым центром. Двойное квантование (DQ) — это процесс квантования констант квантования (c)для дополнительной экономии памяти. Страничный оптимизатор — это функция, предоставляемая Nvidia для перемещения выгружаемой памяти состояний оптимизатора между ЦП и ГП. Эта функция помогает, когда у графического процессора заканчивается память.

Настройка префикса

Prefix-Tuning — это метод, вдохновленный быстрой инженерией. В этом методе они вводят несколько виртуальных токенов в префикс подсказки. Эти виртуальные токены являются обучаемыми параметрами. Количество виртуальных токенов составляет всего 0,1% от общих параметров модели. Последовательность непрерывных векторов для конкретных задач на вход дает очень небольшие накладные расходы для каждой дополнительной задачи. Вместо оптимизации по дискретным токенам авторы оптимизировали инструкции как непрерывные вложения слов, эффекты которых будут распространяться вверх на все уровни активации Transformer и вправо на последующие токены.

Настройка префикса добавляет префикс для авторегрессионного LM только к началу ввода. Следовательно, получение z = [ПРЕФИКС; Икс; у]. В случае архитектуры кодер-декодер префикс также добавляется к началу ввода и вывода. Следовательно, получение z = [ПРЕФИКС; Икс; ПРЕФИКС; у]. Предварительно обученные веса замораживаются, и только эти виртуальные токены изучаются при тонкой настройке. Производительность тонко настроенной модели увеличивается по мере увеличения длины префикса до порогового значения. После порога производительность снижается. Порог варьируется в различных последующих задачах. Они также обнаружили, что настройка инфиксов немного уступает настройке префиксов. Они считают, что это связано с тем, что настройка префикса может влиять на активацию x и y, тогда как настройка инфикса может влиять только на активацию y. Инициализация этих параметров также является очень серьезной проблемой. Случайная инициализация приводит к низкой производительности с высокой дисперсией. Они инициализировали префикс активациями реальных слов, вычисленных LM. Это помогло значительно улучшить производительность.

Заключительные замечания

В заключение, исследование эффективности параметров дало многообещающие результаты, продемонстрировав, что можно добиться значительного повышения производительности без необходимости в чрезмерно больших моделях или обширных обновлениях параметров. Эти методы не только устраняют практические ограничения, такие как ограничения памяти и вычислительных ресурсов, но также прокладывают путь для развертывания языковых моделей в средах с ограниченными ресурсами. В следующем сообщении в блоге я расскажу о подсказках и различных методах подсказок, таких как ReAct, подсказки графа, цепочка мыслей, самосогласованность, подсказка общих знаний, древо мыслей, поиск, дополненная генерация и многое другое.

Спасибо, что прочитали!

Подпишитесь на меня в LinkedIn!

Ссылки

  1. Библиотека PEFT для объятий лица
  2. LORA: НИЗКОРАНГОВАЯ АДАПТАЦИЯ БОЛЬШИХ ЯЗЫКОВЫХ МОДЕЛЕЙ
  3. Настройка префикса: оптимизация непрерывных подсказок для генерации
  4. GPT тоже понимает
  5. QLORA: Эффективная тонкая настройка квантованных LLM