Возможно ли проанализировать и реализовать LoRA с точки зрения оптимизатора?

С ростом популярности ChatGPT и его аналогов, методы точной настройки с эффективным использованием параметров также приобрели все большую популярность. Среди наиболее популярных — LoRA, главный герой этого дискурса, взятый из статьи «LoRA: низкоранговая адаптация больших языковых моделей». Подход LoRA прост и имеет множество существующих реализаций, что делает понимание и применение вполне доступными. Таким образом, вдаваться в подробности уже нечего.

Однако прямая реализация LoRA требует внесения изменений в структуру сети, что является несколько громоздким процессом. Более того, LoRA напоминает ранее известный оптимизатор AdaFactor. Следовательно, возникает вопрос: Можно ли проанализировать и реализовать LoRA с точки зрения оптимизатора? Этот дискурс вращается вокруг этой центральной темы.

Обзор метода

Предыдущие результаты, такие как результаты исследования «Изучение универсального внутреннего подпространства задач посредством быстрой настройки», показывают, что, несмотря на огромное количество параметров в предварительно обученных моделях, внутреннее измерение, соответствующее каждой последующей задаче, не является обширным. Другими словами, теоретически мы можем точно настроить минимальный набор параметров и при этом добиться похвальных результатов в последующих задачах.

Черпая вдохновение из результатов, приведенных выше, LoRA предлагает, чтобы для предварительно обученной матрицы параметров W₀ ∈ ℝ^{m × n} вместо непосредственной точной настройки W₀ мы предполагаем разложение низкого ранга для приращения:

Один из U или V инициализируется всеми нулями, при этом W₀ остается фиксированным. Оптимизатор уточняет только U и V. Учитывая вывод о минимальном внутреннем размере, r можно установить очень маленьким, часто даже равным 1. Таким образом, LoRA представляет собой метод точной настройки с эффективным использованием параметров, значительно уменьшающий количество измеряемых параметров. оптимизирован.

Градиентный анализ

Многие методы точной настройки с эффективным использованием параметров в первую очередьсокращают требования к памяти, не обязательно уменьшая вычислительные затраты, и LoRA не является исключением. Чтобы это понять, нужно просто наблюдать за градиентами U и V:

Здесь L представляет функцию потерь, и предполагается, что форма параметров совпадает с формой их градиентов. Во время обучения вычисление градиента модели является основным вычислительным требованием. При полном обновлении используемый градиент будет ∂ L/∂ W. Для LoRA используются градиенты ∂ L/∂ U и ∂ L/∂ V, которые построены на основе градиента полного обновления ∂ L/ ∂ Вт. Теоретически вычислительные потребности LoRA даже больше, чем полное обновление.

Итак, почему же на практике скорость обучения LoRA кажется выше? Причин — несколько:

1. Частичное обновление параметров. Например, в исходном документе LoRA было решено обновить только параметры самообслуживания. В практических приложениях мы также можем обновить параметры только выбранных слоев.

2. Сокращение времени связи. Благодаря меньшему количеству обновляемых параметров объем передаваемых данных (особенно во время обучения с использованием нескольких карт) уменьшается, что приводит к сокращению времени передачи.

3. Использование различных методов ускорения низкой точности, таких как квантование FP16, FP8 или INT8.

Хотя эти три фактора действительно ускоряют обучение, они не являются исключительными для LoRA. Фактически, почти все методы с эффективным использованием параметров обладают этими характеристиками. Сильные стороны LoRA заключаются в интуитивной низкоранговой декомпозиции, которая часто дает результаты, соответствующие полной точной настройке в различных сценариях, а также в ее способности объединять W₀, U и V в одну матрицу на этапе прогнозирования, что исключает дополнительные затраты на вывод.

Перспектива оптимизатора

Действительно, формула градиента (2) также сообщает нам, как реализовать LoRA с точки зрения оптимизатора. Оптимизатор может напрямую получить доступ ко всему градиенту ∂L/∂W. Проецируя градиент по формуле (2), мы получаем градиенты для U и V, после чего можем обновить U и >V с помощью стандартного оптимизатора.

Если предположить, что оптимизатором является SGD, обновление будет таким:

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

LoRA предусматривает, что один из U или V должен быть инициализирован всеми нулями, чтобы гарантировать, что начальное состояние модели соответствует предварительному обучению. Однако это приводит к проблеме асимметрии (один из них — все нули, другой — ненулевой). В действительности, и U, и V могут быть инициализированы как ненулевые. Просто нужно заранее вычесть предварительно обученные веса на U₀V₀ или, что то же самое, параметризовать W как:

Это поддерживает согласованность в начальном состоянии, позволяя инициализировать как U, так и V ненулевыми значениями, что повышает симметрию.

Случайная проекция

Если мы расширим количество обновлений Uₜ₊₁Vₜ₊₁ — UₜVₜ по сценарию SGD, результат будет:

Предполагая, что член η² можно игнорировать как член более высокого порядка, остается следующее:

С этой точки зрения, по сравнению с полной точной настройкой с помощью SGD, LoRA заменяет полный градиент ∂ L/∂ Wₜ результатом в круглых скобках.

Для простоты давайте сосредоточимся на случае, когда r = 1. Обратите внимание, что в приведенной выше формуле векторы проекции Uₜ и Vₜ в момент времени t зависят от t. Что произойдет, если мы заменим их случайными векторами, независимыми от t (случайно регенерируемыми на каждом этапе обучения)? Учитывая u, v ∼ N(0,1), где u ∈ R^{m × 1} и v ∈ R^{1 × n} обновление становится:

Можно доказать, что:

Где I_{m × m и I_{n × n} — единичные матрицы размера m × m и n × n соответственно. Таким образом, подобно «градиентам нулевого порядка», этот подход LoRA, который повторно инициализируется на каждом этапе, в среднем эквивалентен SGD полного ранга. Однако, если его реализовать таким образом, его скорость может быть даже медленнее, чем у SGD полного ранга. Следовательно, его цель — не ускорение, а потенциальное смягчение катастрофического забывания — используя матрицы низкого ранга (вместо полного ранга) для обновлений отдельных (пакетных) выборок, это минимизирует влияние на веса всей модели. Конечно, это умозрительно, и автору еще предстоит поэкспериментировать с его реальной производительностью.

Варианты на основе LoRA

Во-первых, рассматривая случай, когда r = 1, LoRA по существу предполагает Δ w_{i,j = uᵢ vⱼ. Можем ли мы сделать другие предположения о декомпозиции низкого ранга? Например, Δ w_{i,j} = uᵢ + vⱼ? В матричной форме это выражается так:

Где 1_{1 × n} и 1_{m × 1} — матрицы размера 1 × n и m × 1 заполнено единицами соответственно. Градиент для этого легко получить как:

По сравнению с исходным LoRA, такое аддитивное разложение имеет два преимущества:

  1. Сложение требует меньших вычислительных затрат, чем умножение, и его градиентная форма проще.
  2. Ранг UV всегда равен 1, но ранг U 1_{1 × n} + 1_{m × 1} V может быть равен 2. Если ранг представляет возможности модели , то для того же числа параметров выразительная сила аддитивной формы может быть сильнее. Что касается его реальной производительности, то автор проведет сравнительные эксперименты при использовании LoRA в будущем.

Можно ли это аддитивное разложение распространить на случай, когда r › 1? Естественно, можно, но с небольшими изменениями. Предполагая, что m и n делятся на r, мы можем изменить параметризацию следующим образом:

Здесь I_{r(1 × n / r)} и I_{r(1 × n / r)} — блочные матрицы размера 1 × n /r и m/r × 1 соответственно, где каждый блок представляет собой единичную матрицу r × r. По сути, этот подход рассматривает U и V как блочные матрицы размером m/r × 1 и 1 × n/r соответственно, а затем применяет к ним логику r = 1.

Краткое содержание

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