Fine-tuning LLM: когда нужно и как сделать
Разбираемся, когда fine-tuning LLM оправдан, какие методы использовать (LoRA, QLoRA) и как подготовить данные — практическое руководство.
Вы потратили неделю на промпт-инжиниринг, модель всё ещё путает формат ответа, а RAG не помогает — потому что проблема не в знаниях, а в поведении. Знакомая ситуация? Именно здесь на сцену выходит fine-tuning — дообучение языковой модели на ваших данных. Но это мощный и дорогой инструмент, и применять его нужно точно по назначению.
В этом руководстве разберём: когда fine-tuning действительно нужен, какой метод выбрать, как подготовить данные и какие инструменты использовать в 2026 году.
Fine-tuning, RAG или промпт-инжиниринг — что выбрать
Прежде чем бросаться дообучать модель, стоит понять, решает ли fine-tuning именно вашу проблему. Существует три основных подхода к адаптации LLM, и каждый закрывает свой тип задач.
| Критерий | Промпт-инжиниринг | RAG | Fine-tuning |
|---|---|---|---|
| Что решает | Формат, стиль, простые инструкции | Доступ к актуальным данным | Глубокая специализация поведения |
| Время внедрения | Часы — дни | Дни — недели | Недели — месяцы |
| Стоимость | Минимальная | $70–1000/мес (инфраструктура) | Обучение + повышенная стоимость инференса |
| Нужны данные | Нет | Документы, базы знаний | Размеченный датасет |
| Обновляемость | Мгновенно | При обновлении индекса | Требует переобучения |
Самые производительные продакшен-системы в 2026 году комбинируют все три подхода: промпт-инжиниринг для базовых инструкций, RAG для фактов, fine-tuning для поведения.
graph TD
A[Проблема с LLM] --> B{Модель не понимает задачу?}
B -->|Да| C[Промпт-инжиниринг]
B -->|Нет| D{Не хватает знаний?}
D -->|Да| E[RAG]
D -->|Нет| F{Нужно изменить поведение?}
F -->|Да| G[Fine-tuning]
F -->|Нет| H[Комбинация подходов]
C --> I{Решено?}
I -->|Нет| D
E --> J{Решено?}
J -->|Нет| F
Когда fine-tuning действительно оправдан
Fine-tuning — не универсальное решение. Вот конкретные сценарии, где он даёт ощутимый результат:
1. Специализированный стиль и тон. Если модель должна отвечать как врач, юрист или техподдержка вашей компании — и промпт не справляется с консистентностью на масштабе.
2. Строгий формат вывода. Модель должна всегда возвращать JSON определённой схемы, заполнять шаблоны или следовать жёсткому протоколу ответа.
3. Доменная терминология. Медицина, право, финансы — области, где модель должна не просто знать термины (это RAG), а правильно их применять в контексте.
4. Снижение стоимости инференса. Дообученная маленькая модель (7–13B параметров) может заменить GPT-4 на узкой задаче, сократив расходы в десятки раз.
5. Уменьшение латентности. Fine-tuned модель выдаёт нужный результат без длинных системных промптов и few-shot примеров — быстрее и дешевле.
— Модель не следует инструкциям → улучшите промпт
— Нужна одноразовая адаптация → few-shot примеры в промпте
— У вас менее 100 качественных примеров → данных недостаточно
Методы fine-tuning: от полного обучения до QLoRA
Полное fine-tuning
Обновляет все параметры модели. Даёт максимальное качество, но требует колоссальных ресурсов: для модели на 7 миллиардов параметров нужно 100–120 ГБ VRAM. Это несколько GPU уровня A100 или H100. В 2026 году используется редко — для большинства задач PEFT-методы дают сопоставимый результат при доле затрат.
LoRA (Low-Rank Adaptation)
LoRA — основной метод дообучения в 2025–2026 годах. Вместо обновления всех весов модели, LoRA внедряет небольшие обучаемые матрицы низкого ранга в определённые слои. Остальные параметры замораживаются.
from peft import LoraConfig, get_peft_model
lora_config = LoraConfig(
r=16, # ранг адаптации
lora_alpha=32, # масштабирующий коэффициент
target_modules="all-linear", # какие слои адаптировать
lora_dropout=0.05,
task_type="CAUSAL_LM"
)
model = get_peft_model(base_model, lora_config)
model.print_trainable_parameters()
# Обучаемых параметров: ~0.5% от общего числа
QLoRA (Quantized LoRA)
QLoRA комбинирует LoRA с 4-битной квантизацией базовой модели. Результат: модель на 70B параметров помещается на одну GPU с 24 ГБ памяти (например, RTX 4090). Потеря качества — около 5–10% по сравнению с полным fine-tuning, что для большинства задач приемлемо.
DoRA (Weight-Decomposed LoRA)
Новый метод, набирающий популярность в 2026 году. DoRA разделяет веса на величину и направление, обучая их раздельно. На практике показывает результаты ближе к полному fine-tuning при затратах LoRA.
| Метод | VRAM (7B модель) | Обучаемых параметров | Качество | Стоимость оборудования |
|---|---|---|---|---|
| Полное fine-tuning | 100–120 ГБ | 100% | Эталон | ~$50 000 (H100) |
| LoRA | 16–24 ГБ | 0.5–2% | 90–95% | ~$1 500 (RTX 4090) |
| QLoRA | 6–12 ГБ | 0.5–2% | 88–93% | ~$500 (RTX 4070) |
| DoRA | 16–24 ГБ | 0.5–2% | 92–97% | ~$1 500 (RTX 4090) |
Подготовка данных — ключевой этап
Качество данных важнее их количества. 500 отлично размеченных примеров дадут лучший результат, чем 10 000 шумных.
Формат данных
Стандартный формат — пары «инструкция → ответ» (instruction-response pairs):
{
"instruction": "Напиши краткое описание товара для карточки маркетплейса",
"input": "Беспроводные наушники, ANC, 30 часов работы, Bluetooth 5.3",
"output": "Беспроводные наушники с активным шумоподавлением. До 30 часов без подзарядки. Bluetooth 5.3 для стабильного соединения. Идеальны для музыки, звонков и работы."
}
Чек-лист подготовки датасета
- Единая схема. Каждый пример следует одному формату — модель учится паттерну.
- Дедупликация. Удалите идентичные и почти идентичные примеры — дубликаты ведут к переобучению.
- Качество разметки. Если используете аннотаторов — внедрите перекрёстную проверку (минимум 2 разметчика на пример).
- Баланс классов. Если задача классификации — убедитесь, что примеры распределены равномерно.
- Валидационная выборка. Отложите 10–20% данных для оценки, причём из другого распределения, не только random split.
Синтетические данные
Современный подход — генерировать часть обучающих данных через сильную LLM (GPT-4, Claude). Это снижает стоимость разметки в разы. Но есть нюанс:
Синтетические данные работают лучше всего в связке с реальными. Человеческие примеры задают стандарт качества и тон, а LLM-генерация масштабирует датасет.
graph LR
A[Сбор реальных примеров
50-200 шт] --> B[Генерация синтетических
через сильную LLM]
B --> C[Человеческая проверка
и фильтрация]
C --> D[Дедупликация
и очистка]
D --> E[Разделение на
train / val / test]
E --> F[Готовый датасет
500-5000 примеров]
Инструменты для fine-tuning в 2026 году
Экосистема инструментов зрелая и разнообразная. Выбор зависит от вашего уровня и задачи.
Для быстрого старта
Unsloth (53.9K звёзд на GitHub) — оптимизированные ядра для ускорения обучения в 2–5 раз при снижении потребления VRAM до 80%. Идеален для работы на одной GPU. Бесплатная версия поддерживает только single-GPU режим.
LLaMA-Factory (68.4K звёзд) — поставляется с веб-интерфейсом LlamaBoard, позволяющим настроить и запустить обучение из браузера. Отлично подходит для экспериментов без написания кода.
Для продакшена
TRL (17.6K звёзд) — официальная библиотека Hugging Face для RLHF и alignment. Каноническое решение для обучения с подкреплением от обратной связи.
Axolotl (11.4K звёзд) — гибкий фреймворк с конфигурацией через YAML. Поддерживает мультимодальные модели (LLaMA-Vision, Qwen2-VL, Pixtral).
PEFT — библиотека от Hugging Face, реализующая LoRA, QLoRA, DoRA и другие PEFT-методы. Интегрируется со всеми вышеперечисленными инструментами.
| Инструмент | Лучший для | Кривая обучения | Multi-GPU |
|---|---|---|---|
| Unsloth | Максимальная скорость, 1 GPU | Низкая | Нет (бесплатная версия) |
| LLaMA-Factory | Эксперименты без кода | Минимальная | Да |
| TRL | RLHF, alignment | Средняя | Да |
| Axolotl | Продакшен, мультимодальность | Средняя | Да |
Облачные платформы
Если нет своего GPU, fine-tuning можно запустить через API провайдеров:
- OpenAI Fine-tuning API — дообучение GPT-моделей через загрузку JSONL-файла. Самый простой вход, но привязка к вендору.
- Replicate / Modal / Lambda — аренда GPU с предустановленным окружением для обучения open-source моделей.
- Google Vertex AI, AWS SageMaker — enterprise-решения с полным MLOps-циклом.
Практический пример: дообучение через QLoRA
Рассмотрим типичный пайплайн дообучения модели Llama 3 через QLoRA с использованием Unsloth:
from unsloth import FastLanguageModel
import torch
# 1. Загрузка модели с 4-bit квантизацией
model, tokenizer = FastLanguageModel.from_pretrained(
model_name="unsloth/Llama-3.3-70B-Instruct-bnb-4bit",
max_seq_length=2048,
load_in_4bit=True,
)
# 2. Добавление LoRA-адаптеров
model = FastLanguageModel.get_peft_model(
model,
r=16,
target_modules=["q_proj", "k_proj", "v_proj",
"o_proj", "gate_proj", "up_proj", "down_proj"],
lora_alpha=16,
lora_dropout=0,
use_gradient_checkpointing="unsloth", # экономия VRAM
)
# 3. Подготовка данных
from datasets import load_dataset
dataset = load_dataset("json", data_files="training_data.jsonl")
# 4. Настройка тренера
from trl import SFTTrainer
from transformers import TrainingArguments
trainer = SFTTrainer(
model=model,
train_dataset=dataset["train"],
args=TrainingArguments(
per_device_train_batch_size=2,
gradient_accumulation_steps=4,
warmup_steps=10,
num_train_epochs=3,
learning_rate=2e-4,
fp16=not torch.cuda.is_bf16_supported(),
bf16=torch.cuda.is_bf16_supported(),
output_dir="outputs",
),
)
# 5. Запуск обучения
trainer.train()
# 6. Сохранение адаптера (не всей модели!)
model.save_pretrained("my-finetuned-adapter")
Заключение
Fine-tuning — мощный инструмент, но не молоток для всех гвоздей. Вот ключевые выводы:
- Начинайте с простого. Промпт-инжиниринг → RAG → fine-tuning. Переходите к следующему этапу, только когда предыдущий не решает задачу.
- Данные важнее метода. 500 чистых примеров > 10 000 шумных. Инвестируйте в качество датасета.
- QLoRA — ваш друг. Позволяет дообучить модель на 70B параметров на потребительской GPU. В 2026 году нет причин начинать с полного fine-tuning.
- Комбинируйте подходы. Лучшие продакшен-системы используют fine-tuning для поведения и RAG для фактов одновременно.
- Оценивайте на реальных задачах. Не только held-out split — тестируйте на примерах из другого распределения, приближённого к продакшену.
Fine-tuning перестал быть привилегией компаний с серверными стойками. С QLoRA, Unsloth и открытыми моделями вроде Llama 3 любой разработчик может адаптировать LLM под свою задачу за вечер. Главное — точно определить, что именно вы хотите изменить в поведении модели, и собрать для этого правильные данные.
Источники
- RAG vs fine-tuning vs prompt engineering — IBM
- Fine-tuning LLMs Guide — Unsloth Documentation
- Fine-tuning large language models (LLMs) in 2026 — SuperAnnotate
- Fine-Tuning LLMs with LoRA: 2025 Guide
- Axolotl vs Unsloth vs TRL vs LLaMA-Factory — DEV Community
- Fine-Tuning vs RAG vs Prompt Engineering — Analytics Vidhya
- Fine-Tuning Infrastructure: LoRA, QLoRA, and PEFT at Scale — Introl