Дообучение (fine-tune) модели на VPS
Дообучение адаптирует готовую модель под твою задачу, стиль или домен — без обучения с нуля. Благодаря LoRA это реально даже на скромном сервере. Разбираем процесс от датасета до готового адаптера.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →LoRA и QLoRA — почему это доступно
Полное дообучение 7B-модели требует десятков гигабайт памяти и GPU. LoRA обучает не всю модель, а маленькие добавочные матрицы — это в разы меньше памяти и вычислений. QLoRA идёт дальше: базовая модель грузится в 4-битном виде, а адаптер обучается поверх.
Результат — адаптер весит десятки мегабайт вместо гигабайт, а обучение небольшого датасета укладывается в разумное время и память.
- Хочешь поменять стиль/тон ответов — LoRA на нескольких сотнях примеров.
- Нужны знания домена — RAG часто дешевле fine-tune, оцени обе опции.
- Нужен строгий формат вывода — fine-tune на структурированных примерах.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Арендовать VPS для fine-tuneГотовим окружение и данные
Ставим стек для обучения:
python3 -m venv ~/ft && source ~/ft/bin/activate
pip install -U transformers peft trl datasets accelerate bitsandbytes
Датасет — самое важное. Формат обычно JSONL: одна строка — один пример «инструкция-ответ». Качество данных важнее их количества.
{"messages": [{"role": "user", "content": "Вопрос"}, {"role": "assistant", "content": "Эталонный ответ"}]}
Нужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.
Запускаем обучение
Минимальный скрипт на TRL и PEFT (QLoRA). Сохрани как train.py:
from datasets import load_dataset
from trl import SFTTrainer, SFTConfig
from peft import LoraConfig
ds = load_dataset('json', data_files='data.jsonl', split='train')
peft_cfg = LoraConfig(r=16, lora_alpha=32, lora_dropout=0.05, task_type='CAUSAL_LM')
cfg = SFTConfig(output_dir='out', num_train_epochs=3, per_device_train_batch_size=1)
trainer = SFTTrainer(model='Qwen/Qwen2.5-7B-Instruct', args=cfg, train_dataset=ds, peft_config=peft_cfg)
trainer.train()
trainer.save_model('out/adapter')
python train.py 2>&1 | tee train.log
Где обучать: CPU, GPU и роль сервера
Честно: тяжёлое обучение любит GPU. Но небольшой QLoRA-адаптер на нескольких сотнях примеров реально прогнать и на мощном CPU-сервере — медленнее, зато без аренды дорогой карты для разовой задачи.
Что критично для CPU-обучения: много RAM под модель и оптимизатор, быстрый диск под датасет и чекпоинты. Платформа AMD EPYC + NVMe у MAATRIX здесь даёт и вычислительную плотность на ядро, и быстрый ввод-вывод под чекпоинты, которые пишутся каждые несколько шагов.
Мониторь ресурсы во время обучения в соседней сессии:
htop
watch -n 5 'free -h; ls -lh out/'
Слияние адаптера и запуск
После обучения адаптер можно оставить отдельным (грузить поверх базовой модели) или слить в единую модель для деплоя:
python -c "
from peft import AutoPeftModelForCausalLM
m = AutoPeftModelForCausalLM.from_pretrained('out/adapter')
m = m.merge_and_unload()
m.save_pretrained('merged-model')
"
Дальше конвертируешь merged-model в GGUF и деплоишь как обычную модель через llama.cpp или Ollama.
Частые ошибки
- Маленький грязный датасет — модель переобучается и начинает повторять примеры дословно.
- Слишком много эпох — переобучение, модель теряет общие способности.
- Не сохраняют промежуточные чекпоинты — обучение падает под конец, всё потеряно.
- Пытаются полный fine-tune вместо LoRA и упираются в память.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.
Арендовать VPS для fine-tuneОбсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Частые вопросы
Чем fine-tune отличается от RAG?
Fine-tune меняет поведение и стиль модели, зашивая знания в веса. RAG подаёт знания в контекст на лету. Для фактов чаще дешевле RAG, для стиля и формата — fine-tune.
Сколько примеров нужно для дообучения?
Для смены стиля хватает нескольких сотен качественных примеров. Качество данных важнее количества — грязный датасет испортит модель.
Можно ли дообучать без GPU?
Небольшой QLoRA-адаптер можно прогнать на мощном CPU-сервере с большим объёмом RAM. Это медленнее GPU, но реально для разовых задач.
Что делать с готовым адаптером?
Оставить отдельным и грузить поверх базовой модели, либо слить (merge) в единую модель и сконвертировать в GGUF для продакшн-деплоя.
Нужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.