Открытые модели вроде Llama, Qwen или Mistral хороши тем, что их можно не только запускать у себя, но и подстраивать под свои задачи. Хотите, чтобы модель отвечала в стиле вашей компании, правильно заполняла внутренние формы или разбиралась в узкой терминологии? Для этого существует дообучение (fine-tuning).
Ещё несколько лет назад дообучение большой модели требовало дорогих серверов. Методы LoRA и QLoRA сделали его доступным даже на одной игровой видеокарте. В этой статье объясняем, когда дообучение действительно нужно, как оно работает, как подготовить данные и с чего начать.
Сначала главный вопрос: а нужно ли дообучение?
Дообучение — не первый инструмент, за который стоит браться. Часто задачу решают проще:
| Задача | Что попробовать сначала |
|---|---|
| Модель должна знать ваши документы | RAG — поиск по базе знаний с подстановкой фрагментов в запрос |
| Нужен определённый формат ответа | подробный промпт с примерами |
| Нужен стиль и тон | системный промпт и 3–5 образцов в запросе |
| Модель должна стабильно выполнять узкую повторяющуюся задачу | дообучение |
| Нужно ускорить и удешевить работу | дообучить маленькую модель вместо большой |
Главное правило: дообучение учит модель поведению, а не фактам. Если нужно, чтобы модель знала содержимое ваших документов, RAG почти всегда надёжнее. Мы разбирали его настройку в статье о гиперпараметрах для RAG.
Дообучение оправдано, когда:
- промпт стал огромным, а модель всё равно ошибается в формате;
- нужно, чтобы маленькая быстрая модель делала одну задачу не хуже большой;
- требуется особый стиль, который сложно описать словами, но легко показать примерами;
- данные нельзя отправлять во внешние сервисы, и всё должно работать на своём сервере.
Как работает LoRA
Полное дообучение меняет все миллиарды параметров модели. Это требует огромной памяти: нужно хранить не только саму модель, но и служебные данные оптимизатора.
LoRA (Low-Rank Adaptation, метод опубликован исследователями Microsoft в 2021 году) поступает хитрее:
- Исходные веса модели «замораживаются» и не меняются.
- К некоторым слоям добавляются маленькие дополнительные матрицы — адаптеры.
- Обучаются только эти адаптеры: обычно это доли процента от общего числа параметров.
- Готовый адаптер весит от нескольких мегабайт до сотен мегабайт и подключается к базовой модели при запуске.
Плюсы: нужно намного меньше памяти, обучение идёт быстрее, а для разных задач можно держать несколько адаптеров к одной модели.
Что добавляет QLoRA
QLoRA (2023 год) соединяет LoRA с квантованием: базовая модель загружается в память в сжатом 4-битном формате, а адаптеры обучаются поверх неё. Авторы метода показали, что так можно дообучить модель на 65 млрд параметров на одной видеокарте с 48 ГБ памяти практически без потери качества по сравнению с обычным дообучением в 16 битах.
Для домашнего использования это значит: модели на 7–8 млрд параметров можно дообучать на видеокарте с 12–16 ГБ памяти, а на 24 ГБ — и заметно более крупные.
| Метод | Память | Скорость | Когда выбирать |
|---|---|---|---|
| Полное дообучение | очень много | медленно | крупные проекты с серверными GPU |
| LoRA | умеренно | быстро | есть видеокарта с запасом памяти |
| QLoRA | мало | чуть медленнее LoRA | одна потребительская видеокарта |
Подготовка данных: самая важная часть
Качество дообучения на 80% определяется данными. Модель научится ровно тому, что вы ей покажете, включая ошибки.
Формат примеров
Чаще всего используют пары «запрос — ответ» или диалоги в формате чата: системная инструкция, сообщение пользователя, ответ ассистента. Хранят их обычно в файле JSONL — по одному примеру на строку.
Сколько нужно примеров
- 50–100 хороших примеров уже могут закрепить формат ответа;
- 500–2000 — типичный объём для устойчивого стиля или узкой задачи;
- больше — если задача сложная и разнообразная.
Сто тщательно проверенных примеров полезнее, чем десять тысяч собранных кое-как.
Чек-лист датасета
- Примеры отражают реальные запросы ваших пользователей.
- Ответы именно такие, какие вы хотите получать.
- Нет противоречий между похожими примерами.
- Убраны персональные данные, пароли и всё, что не должно попасть в модель.
- Часть примеров (10–20%) отложена для проверки и не участвует в обучении.
Инструменты для дообучения
- Hugging Face PEFT и TRL — стандартные библиотеки на Python: LoRA, QLoRA и обучение на диалогах.
- Unsloth — ускоряет дообучение и снижает расход памяти, популярен для работы на одной видеокарте и в Google Colab.
- Axolotl — дообучение через конфигурационный файл, без написания кода обучения.
- LLaMA-Factory — веб-интерфейс и готовые настройки для множества открытых моделей.
Пошаговый план первого дообучения
- Выберите базовую модель. Для первого опыта подойдёт небольшая модель на 1–8 млрд параметров. Сравнить семейства поможет наш обзор Llama, Qwen, Mistral и Gemma.
- Возьмите instruct-версию. Модели, уже обученные следовать инструкциям, дообучать проще, чем «сырые» базовые.
- Соберите 200–500 примеров и отложите часть для проверки.
- Запустите QLoRA в одном из инструментов выше с настройками по умолчанию: ранг адаптера 8–16, 1–3 эпохи.
- Сравните с исходной моделью на отложенных примерах. Если ответы стали хуже на общих вопросах, уменьшите число эпох.
- Объедините адаптер с моделью или подключайте отдельно и запускайте через привычные инструменты — например, после конвертации в формат GGUF в Ollama или LM Studio. Как это делается для Qwen, мы показывали в инструкции по локальному запуску Qwen.
Частые ошибки
- Переобучение. Слишком много эпох — и модель заучивает примеры, теряя общие навыки.
- Попытка «загрузить знания». Факты лучше давать через RAG.
- Неправильный шаблон чата. Каждая модель ожидает свой формат диалога; ошибка в нём заметно портит результат.
- Нет проверки. Без отложенной выборки невозможно понять, стало ли лучше.
Не забудьте про лицензию
У разных открытых моделей разные условия. Например, модели Llama распространяются под собственной лицензией Meta с отдельными условиями для очень крупных сервисов, а часть моделей Qwen и OpenAI gpt-oss — под Apache 2.0. Перед коммерческим использованием дообученной модели прочитайте лицензию базовой. Про открытые модели OpenAI читайте в статье о gpt-oss.
Частые вопросы
Можно ли дообучить модель без видеокарты?
Технически да, но очень медленно. Удобнее арендовать облачную GPU на несколько часов или воспользоваться бесплатными ноутбуками вроде Google Colab, где есть видеокарта начального уровня.
Станет ли модель умнее после дообучения?
Не в общем смысле. Она станет лучше в той задаче, которой вы её учили, но общие способности базовой модели от этого не вырастут.
Сколько времени занимает дообучение?
Для небольшой модели и нескольких сотен примеров с QLoRA — обычно от десятков минут до нескольких часов на одной видеокарте.
Подходит ли этот способ для Llama 2?
Да, LoRA и QLoRA работают с Llama 2 и с более новыми моделями. Но для новых проектов лучше брать свежие модели — они заметно сильнее. С чего начать работу с первыми версиями Llama, мы рассказывали в статье «Начало работы с Llama 2».