Выбор ответа Senior Дообучение и LoRA обновлено

Почему B в LoRA инициализируют нулями

Вопрос

Зачем в LoRA матрицу B инициализируют нулями, а A случайно?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Чтобы в начале добавка B·A была нулевой и модель совпадала с исходной, а градиенты не были нулями. Нулевая B даёт B·A = 0: дообучение стартует ровно с базовой модели, без случайного шума в поведении.

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

  1. Чтобы сэкономить память: нулевая матрица хранится в разреженном виде и почти не занимает места на GPU
  2. Чтобы адаптер нельзя было влить в веса базовой модели и его можно было отключить
  3. Чтобы в начале добавка B·A была нулевой и модель совпадала с исходной, а градиенты не были нулямиправильный ответ
  4. Если обе матрицы нулевые, обучение идёт быстрее, а B обнуляют для совместимости со старым кодом

Разбор

Нулевая B даёт B·A = 0: дообучение стартует ровно с базовой модели, без случайного шума в поведении. A случайная, поэтому градиент по B ненулевой и обучение сдвигается с места. Если обнулить обе, градиенты обеих будут нулевыми и обучение не начнётся. Нули хранятся как обычные числа. Влить адаптер можно в любом случае.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.