LoRA & QLoRA

Тема дорожной карты · Большие языковые модели (LLM)

LoRA (Low-Rank Adaptation) представляет собой метод, который замораживает базовую модель и обучает небольшую пару низкоранговых матриц, вставленных в каждый вес attention и MLP. Этот подход значительно сокращает количество обучаемых параметров, уменьшая его в тысячу раз, при этом сохраняя качество полного fine-tuning на большинстве задач. QLoRA, в свою очередь, улучшает этот метод, загружая базовую модель в 4-битном формате NF4, что позволяет обучать LoRA-адаптеры поверх базовой модели и умещать fine-tuning модели размером до 65B на одной 48 ГБ GPU. Такой подход делает fine-tuning более доступным и экономичным, что особенно важно для работы с большими языковыми моделями.

Как это работает

LoRA и QLoRA представляют собой методы адаптации pre-trained моделей под конкретные задачи или домены. Они используют низкоранговые адаптеры, которые добавляются на замороженную базовую модель, что позволяет значительно сократить количество обучаемых параметров. Это делает процесс обучения более эффективным и позволяет использовать меньшие вычислительные ресурсы. В дополнение к LoRA и QLoRA, существуют другие методы адаптации, такие как full fine-tuning, instruction tuning, DPO/RLHF для preference alignment. Для закрытых исходных кодов, таких как OpenAI и Anthropic, предлагаются услуги hosted fine-tuning. Для открытых моделей, такие как Hugging Face, используются библиотеки peft, trl, axolotl и unsloth. При этом важно помнить, что качество данных, используемых для обучения, играет ключевую роль и часто превосходит количество данных.

Когда применять

LoRA и QLoRA особенно полезны, когда в домене присутствует специфичный словарный запас или стиль, которые не могут быть обобщены. Они также полезны, когда требуется структурированный и последовательный вывод, а также в случаях, когда необходимо уменьшить задержку при использовании distillation (обучение маленькой модели на основе выводов большой модели). Эти методы делают fine-tuning доступным даже на одной GPU, что значительно упрощает процесс обучения для разработчиков. Однако, важно всегда сохранять отложенный набор данных для оценки, чтобы избежать переобучения на eval-данных.

Типичные ошибки

Типичными ошибками при использовании LoRA и QLoRA являются попытки fine-tuning, когда промптинг или RAG могут решить задачу. Это может привести к ловушке затрат на обучение, когда затраты на обучение оказываются неоправданными. Другой распространенной ошибкой является загрязнение набора данных для обучения eval-данными, что приводит к переобучению модели. Также важно избегать катастрофического забывания, когда модель теряет свои общие способности в угоду узкой задаче. Наконец, отсутствие версионирования данных для обучения и рецептов обучения может привести к невозможности воспроизвести результаты.

Связанные понятия

Полезные ресурсы