Мотивация файнтюна (тонкой настройки) 👉👈⚙️
Изначально в весах LLM закодировано много информации об окружающем мире. Как правило, модель разбирается в разных вещах, но не знает, как верно реагировать на наши вопросы, промпты. Когда даем какую-то специфическую задачу, в модели изначально не заложено знание о том, как её решать, чтобы это удовлетворило пользователя. Таким образом, файнтюн помогает дообучить модель новым конкретным навыкам именно под наши запросы.
Преимущества FT по сравнению с RAG?
Плюсы | Минусы |
---|---|
Более консистентные результаты генерации (например, можно передать авторский стиль) |
Нужно собрать гораздо больше данных (самая трудоемкая и важная часть) |
Можно натренировать под специфический юзкейс | Повышенный порог входа - нужны более глубокие технические знания |
Не забывает данные (хранятся в весах модели) | Нужно больше ресурсов и времени на старте |
Можно передать больше данных, чем в RAG (т.к. нет ограничений контекстного окна) | Необходимость переучивать при выходе новых версий модели |
Приватность - данные не передаются открыто в промпте, а "зашиты" в весах (меньше возможностей для промпт-хакинга) | Не подходит для часто изменяющихся данных |
Допустим, вы взвесили все "за" и "против". И вам все-таки предстоит дообучить LLM. Одна из проблем, которую вы встретите - это забывание информации. В ходе полного файнтюна базовой модели (переобучения всех параметров модели) можно научить решать одну задачу по инструкции, но LLM может забыть почти всё, что знала раньше, и не сможет ничего ответить на другие запросы.
PEFT(Parameter-Efficient Fine-Tuning) - это частичный файнтюн, суть
метода в заморозке большой части весов, чтобы сохранить General knowledge, и дообучить
оставшуюся малую часть параметров под нашу задачу. Также PEFT позволяет проводить
файнтюн с меньшими затратами временных и вычислительных ресурсов. Делать это можно
разными способами: самый популярный вид PEFT
- это
LoRA
(Low-Rank Adaptation) , для квантизованных моделей
QLoRa
, с помощью которой можно файнтюнить модель даже на процессоре.
Подробнее почитать про PEFT, LoRA, другие методы и попытаться понять почему это работает можно в статье на Хабр.
Решения проблемы забывания 🤷
- Первый вопрос, который вы себе должны задать: устраивает ли вас то, что ваша LLM умеет решать только одну задачу. Если да, то можно не беспокоиться об этой проблеме.
- Естественно, логичным решением будет fine-tune на несколько видов задач, но это потребует больше примеров (500-1000 на каждую задачу) в сумме и больше вычислительных и временных ресурсов для дообучения.
- Прибегнуть к
PEFT
вместо полного файнтюна всех весов модели - самый часто используемый вариант для небольших сервисов и MVP. Метод с низким порогом входа по как по вычислительным, временным, финансовым ресурсам, так и по техническим знаниям ( с применением специальных файнтюн-фрэймворков).
Какая проблема может возникать в ходе fine-tuning LLM?