Как дообучать локальные LLM в 2026 году: практическое руководство

Как дообучать локальные LLM в 2026 году: практическое руководство

В 2026 году дообучение локальных LLM стало реалистичным вариантом для отдельных разработчиков и небольших команд. Это стало возможным благодаря снижению требований к видеопамяти (VRAM), развитию инструментов и расширению числа базовых моделей с открытыми лицензиями.

Раньше адаптация LLM под узкоспециализированные задачи была доступна только крупным лабораториям. Сейчас же улучшения в QLoRA и унифицированные фреймворки, такие как Unsloth, позволяют дообучать модели с 8 миллиардами параметров на одной потребительской видеокарте с 12 ГБ памяти. В этом руководстве — полный цикл: от выбора необходимости дообучения до подготовки данных, настройки обучения, оценки результатов и экспорта модели для локального вывода.

Когда выбирать дообучение, а когда — промпт-инжиниринг или RAG

Прежде чем дообучать модель, стоит сравнить три основных подхода: промпт-инжиниринг, RAG (Retrieval-Augmented Generation) и дообучение. У каждого свои компромиссы по стоимости, задержкам, приватности, точности и сложности поддержки.

Критерий Промпт-инжиниринг RAG Дообучение
Начальные затраты Почти нулевые Средние (эмбеддинги, векторное хранилище) Высокие (вычисления, подготовка датасета)
Задержка при выводе Низкая Выше (извлечение + генерация) Низкая (без извлечения)
Приватность данных Зависит от поставщика API Данные остаются локальными при self-hosted-развёртывании Данные полностью остаются локальными
Потолок точности Ограничен размером контекста и знаниями модели Высокий для фактических данных; зависит от качества извлечения Максимальный для поведенческой и стилистической адаптации
Сложность поддержки Низкая (обновление промптов) Средняя (актуализация индекса) Выше (переобучение на новых данных)
Лучшие сценарии использования Прототипирование, общие задачи, few-shot Вопросы и ответы с опорой на знания, поиск по документам Доменные термины, строгие форматы вывода, офлайн-развёртывание

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

Когда действительно нужно дообучение

Дообучение оправдано, если:

  • Требуется строгое и стабильное форматирование вывода, недостижимое через промпты.
  • Модель должна усвоить специализированную терминологию (юриспруденция, медицина, проприетарные коды).
  • Нужно поведенческое выравнивание — модель должна последовательно придерживаться роли и тона.
  • Критична низкая задержка, и RAG-этап недопустим.
  • Развёртывание — в изолированной среде без доступа к внешним API.

Дообучение избыточно, если:

  • Грамотный промпт уже даёт нужный результат.
  • Недостаток знаний можно компенсировать контекстом при выводе.
  • Датасет содержит менее 200–300 качественных примеров.

В таких случаях вычислительные затраты не оправданы.

Требования к оборудованию

Требования зависят от метода дообучения и размера модели.

  • Полное дообучение модели на 7 млрд параметров требует 48 ГБ VRAM и выше — подойдут NVIDIA A6000 или многокарточные конфигурации. Модели свыше 13 млрд параметров требуют A100/H100 или многомашинного обучения.
  • LoRA снижает нагрузку до 16–24 ГБ VRAM. RTX 4090 (24 ГБ) или RTX 5090 легко справляются с моделями 7B.
  • QLoRA с 4-битной квантизацией укладывается в 8–12 ГБ VRAM. RTX 4070 Ti (12 ГБ) достаточно для моделей 7B–8B.

При отсутствии локального GPU можно использовать облачные инстансы на RunPod, Lambda или Vast.ai с A100/H100.

Настройка программного стека

Стек включает:

  • Python 3.11+
  • PyTorch 2.5+
  • CUDA 12.x
  • Экосистему Hugging Face: transformers, datasets, peft, trl
  • Unsloth — для оптимизации обучения и снижения потребления памяти
  • bitsandbytes — для 4-битной квантизации и работы с paged_adamw_8bit

Версии зависимостей должны быть зафиксированы для воспроизводимости.

Подготовка датасета

В 2026 году используют три основных формата:

  • ChatML — с явными ролями (system, user, assistant). Подходит для диалогов и следования инструкциям.
  • ShareGPT — список ходов с полями from и value. Хорош для многоходовых диалогов.
  • Alpaca — поля instruction, input, output. Простой выбор для одношаговых задач.

Размер датасета:

  • 500–1000 примеров — для простых задач форматирования.
  • 3000–10 000 — для сложных инструкций или новой предметной области.
  • Свыше 10 000 — отдача снижается, если область не очень широка.

Важно очищать данные: удалять дубликаты, фильтровать по длине, избегать утечки меток и несогласованного форматирования.

LoRA, QLoRA и полное дообучение: в чём разница

Полное дообучение обновляет все параметры модели. Даёт глубокую адаптацию, но требует много VRAM и несёт риск катастрофического забывания. Оправдано при большом сдвиге предметной области и датасете из десятков тысяч примеров.

LoRA замораживает базовую модель и добавляет небольшие обучаемые матрицы в слои внимания (q_proj, k_proj и др.). Обновляется только часть параметров, что снижает нагрузку. Ключевые гиперпараметры — rank (8–64), alpha (обычно равен рангу) и выбор модулей.

QLoRA комбинирует LoRA с 4-битной квантизацией (NF4), страничными оптимизаторами и двойной квантизацией. Базовая модель — в 4 бита, адаптеры — в bf16/fp16. Позволяет дообучать 8B-модель менее чем в 10 ГБ VRAM при небольшом размере пакета и длине последовательности 512.

К 2026 году QLoRA поддерживает Llama 3, Mistral, Qwen 2.5, Phi-3 и Gemma 2. Unsloth ускоряет обучение за счёт слияния операций и сокращения активаций.

Выбор базовой модели

Оптимальный выбор для потребительского оборудования — модели 7B–8B:

  • Llama 3.1 8B — хорошая производительность, лицензия Llama Community (проверьте условия на ai.meta.com/llama/license).
  • Mistral 7B v0.3 — Apache 2.0.
  • Qwen 2.5 7B — Apache 2.0.

Llama 3.1 8B требует аутентификации через huggingface-cli login и согласия с лицензией Meta.

Запуск обучения с Unsloth и Hugging Face

Пример конфигурации для QLoRA:

  • Используйте SFTTrainer из trl и Unsloth для оптимизации.
  • Для приватности установите report_to=["tensorboard"], а не ["wandb"].
  • Подбирайте гиперпараметры под задачу: rank (8 для форматирования, 32–64 для сложных задач), learning_rate (1e-4 – 3e-4), число эпох (1–3 для больших датасетов, 3–5 для малых).

Мониторинг и длительность обучения

На RTX 4090 (24 ГБ) обучение 5000 примеров в 3 эпохи при длине последовательности 2048 занимает 1–2 часа. На RTX 4070 Ti (12 ГБ) — 2–4 часа из-за меньшего пакета.

Ключевой показатель — функция потерь на валидации. Если она растёт, а обучающая ошибка падает — остановите обучение. Это признак переобучения.

Объединение адаптеров и экспорт модели

После обучения адаптеры LoRA нужно объединить с базовой моделью и экспортировать в GGUF для llama.cpp или Ollama. Инструменты доступны в llama.cpp или Unsloth.

Выбор метода квантизации влияет на размер и качество:

  • Q4_K_M — 4,5 бита на вес, ~4,9 ГБ для 8B-модели.
  • Q5_K_M — 5,5 бит, ~5,7 ГБ, немного точнее.
  • Q8_0 — 8 бит, ~8,5 ГБ, почти полное качество.

Оценка дообученной модели

Используйте комбинацию метрик:

  • Перплексия — базовый показатель, но не отражает качество решения задачи.
  • Для классификации — F1 и точность.
  • Для генерации — BLEU, ROUGE, но лучше — LLM-as-judge или ручная оценка.

Сравнивайте результаты с базовой моделью на тех же данных. Если улучшения незначительны — дообучение может быть не нужно.

Качественное тестирование и редтиминг

Ручное сравнение «бок о бок» помогает увидеть изменения, не отражённые в метриках. Проверяйте:

  • Деградацию в общих знаниях (катастрофическое забывание).
  • Галлюцинации, вызванные переобучением.
  • Поведение на пограничных случаях в предметной области.

Типичные проблемы и лучшие практики

Функция потерь не сходится: слишком высокая скорость обучения. Начните с 2e-4, при нестабильности снизьте до 1e-4. Проверьте форматирование данных.

Модель хуже справляется с общими задачами: катастрофическое забывание. Уменьшите число эпох, скорость обучения или ранг LoRA. Добавьте 5–10% общих данных в датасет.

Переобучение: обучающая ошибка близка к нулю, валидационная растёт. Уменьшите эпохи, увеличьте dropout или расширьте датасет.

CUDA OOM: уменьшите размер пакета, увеличьте накопление градиента, включите контрольный пересчёт. При необходимости — уменьшите длину последовательности или ранг LoRA.

Советы по гиперпараметрам

  • Скорость обучения: протестируйте 1e-4, 2e-4, 3e-4 на 10% данных (1 эпоха), чтобы найти оптимальный порядок.
  • Ранг: 8 — для стиля, 16–32 — для умеренного сдвига, 64 — для глубокой адаптации.
  • Эпохи: 1–3 для датасетов >5000 примеров, 3–5 — для меньших.
  • При плохих результатах: увеличение объёма и качества датасета почти всегда эффективнее тонкой настройки гиперпараметров.
Читать оригинал