Эффективная настройка параметров больших языковых моделей с использованием LoRA и QLoRA

Эффективная настройка параметров больших языковых моделей

Обзор

Погружаясь все глубже в мир эффективной настройки параметров (PEFT), становится необходимо понять движущие силы и методологии этого преобразовательного подхода. В этой статье мы рассмотрим, как методы PEFT оптимизируют адаптацию больших языковых моделей (LLM) под конкретные задачи. Мы раскроем преимущества и недостатки PEFT, погрузимся в сложные категории методов PEFT и разберем внутреннее устройство двух замечательных методов: Low-Rank Adaptation (LoRA) и Quantized Low-Rank Adaptation (QLoRA). Это путешествие направлено на то, чтобы оснастить вас всесторонним пониманием этих методов, позволяя использовать их мощь для обработки языка.

Цели обучения:

  • Понять концепцию предварительно обученных языковых моделей и настройки параметров в NLP.
  • Исследовать вызовы, возникающие из-за вычислительных и памятных требований при настройке больших моделей.
  • Узнать о методах эффективной настройки параметров (PEFT), таких как LORA и QLORA.
  • Открыть преимущества и недостатки методов PEFT.
  • Исследовать различные методы PEFT, включая T-Few, AdaMix и MEFT.
  • Понять принципы работы LORA и QLORA.
  • Узнать, как QLORA внедряет квантование для улучшения эффективности параметров.
  • Исследовать практические примеры настройки параметров с использованием LORA и QLORA.
  • Получить представление о применимости и преимуществах методов PEFT.
  • Понять перспективы эффективной настройки параметров в NLP.

Введение

В захватывающем мире обработки естественного языка большие предварительно обученные языковые модели (LLM) перевернули сферу. Однако настройка таких огромных моделей на конкретные задачи оказалась сложной из-за высоких вычислительных затрат и требований к памяти. Исследователи занялись методами эффективной настройки параметров (PEFT), чтобы достичь высокой производительности задач с меньшим количеством обучаемых параметров.

Предварительно обученные LLM и настройка параметров

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

Эффективная настройка параметров (PEFT)

Методы PEFT появились как эффективный подход к настройке предварительно обученных LLM с существенным сокращением количества обучаемых параметров. Эти методы сбалансированы по вычислительной эффективности и производительности задачи, что позволяет настраивать даже самые большие LLM без ущерба для качества.

Преимущества и недостатки PEFT

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

Типы PEFT

Были разработаны различные методы PEFT, чтобы удовлетворить различные требования и компромиссы. Некоторые заметные методы PEFT включают T-Few, который достигает более высокой точности при более низкой вычислительной стоимости, и AdaMix. Этот общий метод настраивает смесь модулей адаптации, таких как Houlsby или LoRA, для улучшения производительности задач на полностью наблюдаемых и малообученных данных.

Исследование различных методов PEFT

Давайте подробнее рассмотрим некоторые известные методы PEFT-

  • T-Few: Этот метод использует (IA)3, новый подход PEFT, который масштабирует внутренние активации с помощью изученных векторов. Он достигает сверхчеловеческой производительности и использует значительно меньше FLOPs во время вывода, чем традиционная настройка параметров.
  • AdaMix: Общий метод PEFT, который настраивает смесь модулей адаптации, таких как Houlsby или LoRA, для улучшения производительности задач на полностью наблюдаемых и малообученных данных.
  • MEFT: Подход к эффективной настройке параметров, который делает LLM обратимыми, избегая кэширования промежуточных активаций во время обучения и значительно сокращая объем используемой памяти.
  • QLORA: Эффективная техника настройки параметров, которая использует адаптеры низкого ранга, внедренные в каждый слой LLM, что существенно сокращает количество обучаемых параметров и требования к памяти GPU.

Низкоранговая адаптация (LoRA)

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

Как работает LoRA?

  1. Сохранение начальной точки: В LoRA гипотеза о сохранении начальной точки является важной. Она предполагает, что веса предварительно обученной модели уже близки к оптимальному решению для последующих задач. Таким образом, в LoRA замораживаются веса предварительно обученной модели, а основное внимание уделяется оптимизации обучаемых низкоранговых матриц.
  2. Низкоранговые матрицы: LoRA вводит низкоранговые матрицы, представленные в виде матриц A и B, в модуль само-внимания каждого слоя. Эти низкоранговые матрицы действуют как адаптеры, позволяя модели адаптироваться и специализироваться для конкретных задач при минимизации количества дополнительных параметров, необходимых для этого.
  3. Дефицит ранга: Основная идея, лежащая в основе LoRA, – дефицит ранга изменений весов (∆W), наблюдаемый во время адаптации. Это говорит о том, что адаптация модели включает изменения, которые могут быть эффективно представлены гораздо более низким рангом, чем исходные матрицы весов. LoRA использует это наблюдение для достижения эффективности использования параметров.

Преимущества LoRA

  1. Снижение накладных расходов на параметры: Используя низкоранговые матрицы вместо настройки всех параметров, LoRA значительно снижает количество обучаемых параметров, что делает его более эффективным по памяти и вычислительно более дешевым.
  2. Эффективное переключение задач: LoRA позволяет предварительно обученной модели использоваться для нескольких задач, уменьшая необходимость в поддержке отдельных настроенных экземпляров для каждой задачи. Это облегчает быстрое и плавное переключение задач во время развертывания, снижая затраты на хранение и переключение.
  3. Отсутствие задержки вывода: Линейная конструкция LoRA обеспечивает отсутствие дополнительной задержки вывода по сравнению с полностью настроенными моделями, что делает его подходящим для приложений в реальном времени.

Квантованная низкоранговая адаптация (QLoRA)

QLoRA – это расширение LoRA, которое дополнительно вводит квантование для повышения эффективности использования параметров во время настройки. Оно основано на принципах LoRA и включает квантование 4-битного нормализованного числа (NF4) и методы двойного квантования.

  • Квантование NF4: Квантование NF4 использует внутреннее распределение весов предварительно обученной нейронной сети, обычно нормальных распределений с нулевым средним и определенными стандартными отклонениями. Путем преобразования всех весов в фиксированное распределение, которое соответствует диапазону NF4 (-1 до 1), квантование NF4 эффективно квантифицирует веса без необходимости использования дорогостоящих алгоритмов оценки квантилей.
  • Двойное квантование: Двойное квантование решает проблему памяти квантовых констант. Оно значительно снижает объем памяти без ущерба для производительности путем квантования самих квантовых констант. Этот процесс включает использование 8-битных чисел с плавающей запятой с размером блока 256 для второго шага квантования, что приводит к существенной экономии памяти.

Преимущества QLoRA

  1. Дополнительное снижение использования памяти: QLoRA достигает еще большей эффективности использования памяти за счет введения квантования, что особенно ценно для развертывания больших моделей на ресурсоограниченных устройствах.
  2. Сохранение производительности: Несмотря на свою эффективность использования параметров, QLoRA сохраняет высокое качество модели, показывая результаты на уровне или даже лучше, чем полностью настроенные модели на различных последующих задачах.
  3. Применимость к различным LLM: QLoRA – это универсальная техника, применимая к различным языковым моделям, включая RoBERTa, DeBERTa, GPT-2 и GPT-3, что позволяет исследователям исследовать эффективность использования параметров при настройке для различных архитектур LLM.

Настройка больших языковых моделей с использованием PEFT

Давайте применим эти концепции на практике с примером кода настройки большой языковой модели с использованием QLORA.

# Шаг 1: Загрузка предварительно обученной модели и токенизатора
from transformers import BertTokenizer, BertForMaskedLM, QLORAdapter

model_name = "bert-base-uncased"
pretrained_model = BertForMaskedLM.from_pretrained(model_name)
tokenizer = BertTokenizer.from_pretrained(model_name)

# Шаг 2: Подготовка набора данных
texts = ["[CLS] Привет, как дела? [SEP]", "[CLS] У меня все хорошо. [SEP]"]
train_encodings = tokenizer(texts, truncation=True, padding="max_length", return_tensors="pt")
labels = torch.tensor([tokenizer.encode(text, add_special_tokens=True) for text in texts])

# Шаг 3: Определение класса QLORAdapter
adapter = QLORAdapter(input_dim=768, output_dim=768, rank=64)
pretrained_model.bert.encoder.layer[0].attention.output = adapter

# Шаг 4: Настройка модели
optimizer = torch.optim.AdamW(adapter.parameters(), lr=1e-5)
loss_fn = nn.CrossEntropyLoss()

for epoch in range(10):
    optimizer.zero_grad()
    outputs = pretrained_model(**train_encodings.to(device))
    logits = outputs.logits
    loss = loss_fn(logits.view(-1, logits.shape[-1]), labels.view(-1))
    loss.backward()
    optimizer.step()

# Шаг 5: Вывод с настроенной моделью
test_text = "[CLS] Как у вас дела сегодня? [SEP]"
test_input = tokenizer(test_text, return_tensors="pt")
output = pretrained_model(**test_input)
predicted_ids = torch.argmax(output.logits, dim=-1)
predicted_text = tokenizer.decode(predicted_ids[0])
print("Предсказанный текст:", predicted_text)

Заключение

Параметрическая оптимизация LLM является быстро развивающейся областью, которая решает проблемы, связанные с вычислительными и памятными требованиями. Техники, такие как LORA и QLORA, демонстрируют инновационные стратегии для оптимизации эффективности оптимизации без потери производительности задачи. Эти методы предлагают многообещающие возможности для применения больших языковых моделей в реальных приложениях, делая NLP более доступной и практичной, чем когда-либо раньше.

Часто задаваемые вопросы