В 2026 году возможностьдообучения локальных LLMстала реальной опцией для отдельных разработчиков и небольших команд. Это стало возможным благодаря снижению требований к видеопамяти (VRAM), развитию инструментов и расширению набора базовых моделей с открытыми лицензиями.
Если раньше адаптация LLM под узкоспециализированные задачи была доступна только хорошо финансируемым лабораториям, то теперь улучшения QLoRA и унифицированные фреймворки вроде Unsloth позволяют дообучать модели с 8 миллиардами параметров на одной потребительской видеокарте с 12 ГБ памяти. В этом руководстве разобран полный процесс: от выбора, нужен ли вообще этап дообучения (или fine-tuning), до подготовки данных, настройки и запуска обучения, оценки результатов и экспорта модели для локального вывода.
Как дообучать локальные LLM
- Оцените, действительно ли требуется дообучение, или задачу можно решить с помощью промпт-инжиниринга или генерации с дополнением извлечения (RAG), используя подход принятия решений с учётом стоимости, задержек и приватности данных.
- Подготовьте аппаратную и программную среду:Python, PyTorch, Unsloth и экосистему Hugging Face.
- Соберите качественный набор данныхобъёмом от 500 до 10 000 примеров в форматах ChatML, ShareGPT или Alpaca, с удалением дубликатов и фильтрацией по длине.
- Выберите базовую модельс открытой лицензией в диапазоне 7–8 млрд параметров (Llama 3.1 8B, Mistral 7B или Qwen 2.5 7B).
- Настройте обучение с использованием QLoRA:задайте ранг, скорость обучения и целевые модули через Unsloth и SFTTrainer.
- Отслеживайте значения функции потерьна обучении и валидации, чтобы вовремя выявить переобучение или расхождение; при росте валидационной ошибки останавливайте обучение раньше.
- Объедините адаптеры LoRA с базовой модельюи экспортируйте результат в формат GGUF для локального вывода через llama.cpp или Ollama.
- Оцените дообученную модельс помощью количественных метрик и качественного сравнения с базовой моделью «бок о бок».
Когда выбирать дообучение, а когда — промпт-инжиниринг или RAG
Подход к выбору: как принять правильное решение
Прежде чем переходить к процессу дообучения, имеет смысл системно сравнить три ключевых стратегии настройки поведения LLM: промпт-инжиниринг, RAG и дообучение. У каждой из них свои компромиссы по стоимости, задержкам, приватности данных, точности и сложности поддержки.
Промпт-инжиниринг
Дообучение
Начальные затраты
Почти нулевые
Средние (пайплайн эмбеддингов, векторное хранилище)
Высокие (вычисления, подготовка датасета)
Задержка при выводе
Выше (извлечение + генерация)
Низкая (без этапа извлечения)
Приватность данных
Зависит от поставщика API
Данные остаются локальными при self-hosted-развертывании
Данные полностью остаются локальными
Потолок точности
Ограничен размером контекста и знаниями базовой модели
Высокий для фактических данных; зависит от качества извлечения
Максимальный для поведенческой и стилистической адаптации
Сложность поддержки
Низкая (обновление промптов)
Средняя (актуализация индекса)
Выше (переобучение на новых данных)
Лучшие сценарии использования
Прототипирование, общие задачи, few-shot-сценарии
Вопросы и ответы с опорой на знания, поиск по документам
Доменные термины, строгие форматы вывода, офлайн-развертывание
Используйте эту таблицу как ориентир при выборе подхода. Важно понимать, что эти стратегии не исключают друг друга. RAG и дообучение хорошо сочетаются: дообученная модель, которая дополнительно извлекает информацию из базы знаний, часто показывает результаты лучше, чем любой из подходов по отдельности.
Как понять, нужно ли дообучение на самом деле
Дообучение — оправданный выбор, если:
- Требуется строгое и стабильное форматирование вывода, которого невозможно добиться только с помощью промптов.
- Модель должна усвоить специализированную терминологию предметной области (юриспруденция, медицина, проприетарные кодовые базы).
- Необходимо поведенческое выравнивание — модель должна последовательно придерживаться определённой роли и тона во всех ответах.
- Критична низкая задержка, и этап извлечения, добавляемый RAG, недопустим.
- Развёртывание происходит в изолированной среде без доступа к внешним API и векторным хранилищам.
Однако дообучение — избыточное решение в тех случаях, когда грамотно составленный системный промпт уже даёт нужное поведение, когда нехватку знаний можно компенсировать добавлением контекста на этапе вывода или когда датасет содержит меньше 200–300 качественных примеров и не способен заметно повлиять на поведение модели. В таких ситуациях вычислительные затраты и длительность итераций при дообучении дают всё меньшую отдачу.
Предварительные условия и требования к оборудованию
Минимальное оборудование для разных методов дообучения
Требования к оборудованию сильно различаются в зависимости от метода дообучения и размера модели.
Полное дообучение модели с 7 млрд параметров требует 48 ГБ VRAM или больше. Это означает, что понадобится NVIDIA A6000 или конфигурация с несколькими GPU. Для моделей свыше 13 млрд параметров уже необходимы многомашинное обучение или карты A100/H100 с 80 ГБ памяти.
LoRA (низкоранговая адаптация, англ. Low-Rank Adaptation) существенно сокращает число обучаемых параметров, снижая требования к VRAM до 16–24 ГБ. RTX 4090 (24 ГБ) или RTX 5090 без проблем справляются с 7B-моделями при использовании LoRA.
QLoRA ещё сильнее снижает требования — до 8–12 ГБ, за счёт квантизации базовой модели до 4-битной точности и обучения только низкоранговых адаптеров в более высокой точности.
RTX 4070 Ti (12 ГБ) или аналогичная потребительская карта подходит для моделей класса 7B–8B.
Для тех, у кого нет доступа к локальному GPU, облачные инстансы на RunPod, Lambda илиVast.aiс GPU A100 или H100 позволяют обойтись без покупки выделенного оборудования. Стоимость зависит от провайдера и типа GPU, поэтому перед запуском стоит проверить актуальные тарифы.
Настройка программного стека
Стек для дообучения в 2026 году в основном строится вокруг Python 3.11+, PyTorch 2.5+, CUDA 12.x и экосистемы Hugging Face (transformers, datasets, peft, trl). Unsloth предоставляет оптимизированные ядра обучения, которые уменьшают потребление памяти и повышают пропускную способность. Для воспроизводимости критически важно жёстко фиксировать версии зависимостей.
Это окружение обеспечивает стабильную основу. Пакетunslothмодифицирует внутренние компоненты Hugging Face, ускоряя обучение и снижая потребление памяти, тогда какbitsandbytesдобавляет поддержку 4-битной квантизации для сценариев QLoRA и необходим для оптимизатораpaged_adamw_8bit, используемого в процессе обучения.
Подготовка датасета для дообучения
Форматы и стандарты датасетов
В экосистеме дообучения 2026 года доминируют три формата данных.
- ChatML использует структурированные токены<|im_start|>и<|im_end|>с явными ролями (system, user, assistant). Это нативный формат для большинства диалоговых моделей и предпочтительный выбор для задач следования инструкциям и разговорного дообучения.
- ShareGPT хранит диалоги в виде списка ходов с полямиfromиvalue. Этот формат хорошо подходит для многоходовых диалогов и широко используется в общественных датасетах на Hugging Face.
- Для одношаговых задач «инструкция — ответ» и задач классификации самым простым вариантом остаётся формат Alpaca, содержащий поляinstruction,inputиoutput.
Размер датасета критически зависит от задачи. Для простых задач классификации или форматирования заметное улучшение может быть достигнуто уже на 500–1000 примерах. Для сложных задач следования инструкциям или адаптации модели к новой предметной области требуется от 3000 до 10 000 качественных примеров. При объёме свыше 10 000 примеров отдача начинает снижаться, если только предметная область не является исключительно широкой.
Очистка и валидация данных
Редко бывает так, что исходные данные сразу приходят в нужном формате. Следующий скрипт преобразует записи из CSV или JSON в формат ChatML, удаляет дубликаты, фильтрует данные по длине токенов и формирует разбиение на обучающую и валидационную выборки.
Типичные ошибки при работе с датасетом
Переобучение на небольших датасетах — самый частый сценарий неудачи. Если примеров меньше 500, модель начинает запоминать обучающие образцы вместо того, чтобы обобщать закономерности. Ещё одна распространённая проблема — утечка меток, когда информация из ожидаемого ответа просачивается во входные данные. Это искусственно завышает метрики качества, но на выходе даёт бесполезную модель. Непоследовательное форматирование примеров — например, смешение Markdown и обычного текста или различающаяся структура ответов — заставляет модель обучаться на шуме оформления, а не на целевом поведении.
Что нужно понимать про LoRA, QLoRA и полное дообучение
Полное дообучение
При полном дообучении обновляются все параметры модели. Такой подход даёт более глубокую адаптацию, чем остальные методы, но требует пропорционально большего объёма VRAM. Одно только хранение весов требует 4 байта на параметр для fp32 или 2 байта на параметр для bf16; если добавить состояния оптимизатора (8 байт на параметр для AdamW) и буферы градиентов, получится полная оценка потребления VRAM.
Для модели на 7 млрд параметров в bf16 это означает 14 ГБ только на сами веса, а с учётом состояний оптимизатора суммарные требования вырастают до 48 ГБ и выше. Полное дообучение также несёт максимальный риск катастрофического забывания, когда модель, специализируясь, теряет свои общие способности. Такой подход оправдан только в тех случаях, когда сдвиг предметной области действительно велик, а датасет достаточно объёмен — речь обычно идёт о десятках тысяч примеров, чтобы полное обновление всех параметров имело смысл.
LoRA (низкоранговая адаптация, Low-Rank Adaptation)
LoRA замораживает веса базовой модели и добавляет небольшие обучаемые матрицы в определённые слои, как правило в матрицы проекций механизма внимания (q_proj, k_proj, v_proj, o_proj). Эти матрицы используют ранговое разложение: матрица обновления весов W аппроксимируется как произведение B·A, где A имеет форму (r × d_in), а B — (d_out × r), причём ранг r значительно меньше min(d_in, d_out).
За счёт этого число обучаемых параметров уменьшается на порядки. Ключевые гиперпараметры здесь — ранг (обычно от 8 до 64; более высокий ранг позволяет уловить более сложные изменения, но увеличивает расход памяти), alpha (масштабирующий коэффициент, который обычно делают равным рангу или 2× рангу; отношение alpha/rank работает как эффективный множитель для скорости обучения) и выбор целевых модулей.
QLoRA и улучшения 2026 года
QLoRA сочетает LoRA с 4-битной квантизацией базовой модели в формате NormalFloat (NF4), страничными оптимизаторами, которые заранее резервируют страницы оперативной памяти CPU, чтобы система могла переносить состояния оптимизатора на CPU при заполнении памяти GPU, а также с двойной квантизацией, когда квантуются и сами константы квантизации. Базовая модель загружается в 4-битной точности, а адаптеры LoRA и вычисления продолжают работать в bf16 или fp16. Такая архитектура позволяет дообучать 8B-модель, укладываясь менее чем в 10 ГБ VRAM, если длина последовательности не превышает 512 токенов, размер пакета равен 1 и включён контрольный пересчёт градиентов. При увеличении длины последовательности или размера пакета потребление VRAM растёт пропорционально.
С 2024 года экосистема QLoRA заметно повзрослела. Более широкая поддержка архитектур моделей означает, что QLoRA из коробки работает с семействами Llama 3, Mistral, Qwen 2.5, Phi-3 и Gemma 2. Оптимизации ядер в Unsloth дополнительно уменьшают расход памяти за счёт слияния операций и сокращения объёма хранимых промежуточных активаций.
Дообучение с Unsloth и Hugging Face: пошагово
Выбор базовой модели
При выборе модели в 2026 году нужно находить баланс между возможностями модели, соответствием доступному объёму VRAM и условиями лицензии.
Модели класса 7B–8B — оптимальная точка для потребительского оборудования: Llama 3.1 8B, Mistral 7B v0.3 и Qwen 2.5 7B уверенно помещаются в 12 ГБ GPU при использовании QLoRA. Llama 3.1 8B распространяется по лицензии сообщества Llama (она допускает большинство коммерческих сценариев, но перед развёртыванием стоит проверить актуальные условия на ai.meta.com/llama/license). Mistral 7B и Qwen 2.5 используют лицензию Apache 2.0.
Более крупные модели — варианты на 13B, которым требуется от 16 ГБ памяти даже с QLoRA, и модели на 70B, которым нужны несколько GPU или карты с 80 ГБ памяти даже при использовании QLoRA — тоже могут быть вариантом, если у вас есть соответствующее оборудование. Но для большинства сценариев локального дообучения именно диапазон 7B–8B с QLoRA даёт наилучший баланс между качеством и доступностью.
Примечание: Llama 3.1 8B — это модель с ограниченным доступом на Hugging Face. Перед загрузкой нужно принять лицензию Meta на huggingface.co/meta-llama/Meta-Llama-3.1-8B и пройти аутентификацию через huggingface-cli login.
Настройка запуска обучения
Следующий скрипт показывает полный запуск обучения QLoRA с использованием Unsloth и SFTTrainer из библиотеки trl:
Примечание о приватности: если вы измените значениеreport_toна["wandb"], метаданные обучения и кривые функции потерь будут отправляться на внешние серверы Weights & Biases. Для изолированных или проприетарных сценариев используйте["tensorboard"].
Шаблоны конфигурации с комментариями для типовых сценариев — дообучение на инструкциях, многоходовый чат, классификация текста — обычно поставляются как сопутствующие файлы конфигурации. Основные параметры, которые нужно подбирать под конкретную задачу: rank (8 для простых задач форматирования, 32–64 для сложных сдвигов предметной области), learning rate (от 1e-4 до 3e-4 для QLoRA) и число эпох (1–3 для больших датасетов, 3–5 для небольших).
Запуск обучения и мониторинг
Ожидаемая длительность обучения зависит от оборудования. На RTX 4090 (24 ГБ) при датасете из 5000 примеров и конфигурации выше обучение в течение 3 эпох при длине последовательности 2048 обычно занимает 1–2 часа. RTX 4070 Ti (12 ГБ) будет работать дольше из-за меньшего размера пакета и большего числа шагов накопления градиента — как правило, 2–4 часа для того же датасета.
Мониторинг функции потерь на обучающей и валидационной выборках через WandB или TensorBoard критически важен для раннего выявления переобучения. Если обучающая ошибка продолжает снижаться, а валидационная растёт, это сигнал к тому, что обучение нужно остановить или уменьшить число эпох.
Если обучающая ошибка продолжает снижаться, а валидационная растёт, это сигнал к тому, что обучение нужно остановить или уменьшить число эпох.
Объединение адаптеров и экспорт модели
После завершения обучения адаптеры LoRA существуют как отдельные файлы весов. Для развёртывания их нужно объединить с базовой моделью и при необходимости преобразовать в формат GGUF для движков вывода, таких как llama.cpp или Ollama. Для экспорта в GGUF нужны либо локально установленные инструменты сборки llama.cpp, либо соответствующие дополнительные компоненты Unsloth; ориентируйтесь на документацию Unsloth для установленной у вас версии.
Выбор метода квантизации влияет и на размер модели, и на её качество. Q4_K_M даёт наилучшее соотношение размера и качества для большинства сценариев развёртывания — около 4,5 бита на один вес. Q5_K_M даёт немного более высокую точность — примерно 5,5 бита на вес. Q8_0 сохраняет почти полное качество при 8 битах на вес, но по сравнению с Q4_K_M увеличивает размер файла почти вдвое. Для модели класса 8B ожидаемый размер файлов GGUF составляет примерно 4,9 ГБ для Q4_K_M, 5,7 ГБ для Q5_K_M и 8,5 ГБ для Q8_0. Размеры масштабируются пропорционально числу параметров.
Оценка дообученной модели
Количественная оценка
Оценка должна сочетать общие метрики языкового моделирования со специализированными метриками под конкретную задачу. Перплексия (perplexity) на отложенной валидационной выборке даёт базовый ориентир: чем ниже перплексия, тем лучше модель предсказывает данные валидации, хотя напрямую качество решения задачи она не измеряет. Гораздо важнее метрики, связанные с самой задачей. Для задач классификации стоит измерять F1-меру и точность точного совпадения. Для задач генерации BLEU и ROUGE оценивают пересечение n-грамм, но их связь с человеческими предпочтениями для открытой генерации довольно слабая; поэтому по возможности лучше использовать автоматические метрики, привязанные к задаче, например LLM в роли судьи (LLM-as-judge), или ручную оценку.
Сравнивайте результаты на валидационной выборке с показателями базовой модели на том же наборе данных. Если дообученная модель показывает лишь незначительное улучшение по сравнению с базовой моделью при грамотно составленных промптах, то дообучение, возможно, не оправдано.
Качественное тестирование и редтиминг
Ручное сравнение с базовой моделью на одинаковых промптах позволяет увидеть изменения в поведении, которые не отражаются в метриках. Следующий скрипт прогоняет одни и те же запросы через обе модели и выводит результаты для сравнения бок о бок. Чтобы избежать ошибок нехватки памяти на потребительских GPU, модели загружаются и тестируются последовательно.
Помимо позитивных тестовых сценариев, критически важен редтиминг. Проверяйте, не возникла ли деградация на вопросах по общим знаниям, с которыми базовая модель раньше справлялась корректно. Ищите галлюцинации, появившиеся из-за переобучения. Проверяйте пограничные случаи в предметной области, чтобы убедиться, что модель действительно усвоила целевое поведение, а не просто воспроизводит поверхностные шаблоны.
Устранение проблем и лучшие практики
Типичные сценарии сбоев
Если функция потерь не хочет сходиться, самая частая причина — слишком высокая скорость обучения. Для QLoRA разумно начинать с 2e-4 и снижать до 1e-4, если loss ведёт себя нестабильно. Также стоит проверить форматирование датасета: некорректные шаблоны ChatML приводят к тому, что модель обучается на мусорных токенах.
Модель хорошо показывает себя в предметной области, но хуже справляется с общими задачами? Это катастрофическое забывание. Уменьшите число эпох, снизьте скорость обучения или уменьшите ранг LoRA. Сохранить общие способности помогает добавление в обучающий набор небольшой доли общих инструктивных данных — порядка 5–10%.
Если обучающая ошибка стремится к нулю, а валидационная растёт, это классический признак переобучения. Уменьшите число эпох, увеличьте dropout или расширьте датасет. Если примеров меньше 1000, обычно достаточно держать число эпох на низком уровне — от 1 до 3.
При ошибках CUDA OOM сначала уменьшайте размер пакета, а затем увеличивайте число шагов накопления градиента, чтобы сохранить эффективный размер пакета. Включите контрольный пересчёт градиентов — в конфигурации Unsloth выше он уже задан. Если памяти всё равно не хватает, уменьшайте длину последовательности или ранг LoRA.
Советы по подбору гиперпараметров
Для скорости обучения полезно быстро прогнать небольшой набор значений — 1e-4, 2e-4 и 3e-4 — на малой подвыборке данных (10% обучающего набора, 1 эпоха). Это позволяет быстро понять нужный порядок величины.
Выбор ранга зависит от сложности задачи: ранг 8 подходит для изменений формата и стиля, 16–32 — для умеренного сдвига предметной области, 64 — для существенного внедрения новых знаний.
Число эпох лучше держать небольшим: 1–3 для датасетов объёмом более 5000 примеров и 3–5 для меньших наборов.
Если результаты плохие, опубликованные абляционные исследования показывают, что увеличение объёма и качества датасета почти всегда даёт больший эффект, чем тонкая настройка гиперпараметров.
Если результаты плохие, опубликованные абляционные исследования показывают, что увеличение объёма и качества датасета почти всегда даёт больший эффект, чем тонкая настройка гиперпараметров.
Если после статьи осталось ощущение, что «вроде понятно, но руками не пробовал», это нормальная стадия. Мы как раз проводим пару открытых занятий, где можно спокойно разобрать базовые вещи, посмотреть на формат обучения и задать любые вопросы — без обязательств. Заодно это удобный способ понять, насколько вам вообще откликается тема и уровень.
- 29 апреля в 20:00.«Деревья решений для задач классификации и регрессии».Разберёте, как устроены решающие деревья и где они реально применяются. Будет практика: попробуете обучить модель и посмотреть, как она ведёт себя на данных.Записаться
- 20 мая в 18:00.«Препарируем рекомендательные системы методами ML».Пройдёте по классическим подходам к рекомендациям и соберёте простой вариант своими руками. Заодно станет понятнее, как такие системы устроены под капотом и где начинаются реальные сложности.Записаться
Если хочется выстроить системное обучение и дойти до уровня специалиста по Data Science — с понятной базой, практикой и последовательным усложнением — это как раз проспециализацию «Машинное обучение»со стартом 28 мая.