Тераферма Регистрация

3 октября 2026 г. · Редакция Тераферма

Дообучение LoRA и QLoRA на арендованной GPU: память, время и цена

Схема дообучения языковой модели адаптерами LoRA на облачной видеокарте

Дообучение LoRA на арендованной GPU — самый дешёвый способ адаптировать большую модель под свою задачу: QLoRA для Llama или Qwen 8B на 10 000 примеров занимает 3–5 часов на RTX 4090 и стоит 130–220 ₽. Для моделей до 13B хватает карты с 24 ГБ, для 70B в QLoRA нужна карта на 48–80 ГБ.

Разберём, как выбрать метод и видеокарту, сколько памяти и времени займёт обучение, и как запустить его на арендованном сервере.

LoRA и QLoRA простыми словами

Полное дообучение модели меняет все её параметры. Для модели на 8 миллиардов параметров это значит хранить в памяти веса, градиенты и состояние оптимизатора, а это 60–100 ГБ и больше. Такое обучение требует A100 или H100, а часто нескольких.

LoRA (Low-Rank Adaptation) замораживает исходные веса и обучает только маленькие матрицы-адаптеры, которые добавляются к слоям внимания и полносвязным слоям. Обучаемых параметров становится в сотни раз меньше — обычно доли процента от модели. Готовый адаптер весит десятки или сотни мегабайт, а не гигабайты.

QLoRA идёт дальше: базовая модель загружается в 4-битной квантизации, а адаптеры обучаются поверх неё. Потребление памяти падает ещё в 3–4 раза. По качеству QLoRA на большинстве прикладных задач близка к обычной LoRA, а разница с полным дообучением часто невелика.

На практике это значит, что модель, которая раньше требовала сервер с несколькими A100, теперь дообучается на одной RTX 3090 или 4090.

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

Прежде чем арендовать карту, стоит честно ответить, решит ли LoRA вашу задачу. Дообучение хорошо работает, когда нужно:

  • закрепить формат ответа: строгий JSON, определённую структуру отчёта, фирменный тон общения;
  • научить модель специфической терминологии и стилю — юридическому, медицинскому, внутреннему языку компании;
  • повысить качество на узкой задаче: классификация обращений, извлечение полей из документов, перевод в конкретной предметной области;
  • заменить дорогую большую модель маленькой, дообученной под одну задачу, и сократить расходы на инференс.

А вот для того, чтобы модель «знала» актуальные факты из вашей базы знаний, лучше подходит поиск по документам с подстановкой найденного в промпт (RAG). Факты меняются, а переобучать модель после каждого обновления базы неудобно. Часто лучший результат даёт сочетание: RAG для знаний и LoRA для формата и стиля.

Сколько видеопамяти нужно

Потребление памяти зависит от размера модели, метода, длины последовательности и размера батча. Ориентиры для длины 2 048 токенов и небольшого батча:

Модель QLoRA (4 бита) LoRA (16 бит) Подходящая карта Цена, ₽/час
1–3B 4–6 ГБ 8–12 ГБ RTX 3060 12 ГБ 10
7–8B 10–14 ГБ 20–24 ГБ RTX 3090 / RTX 4090 22 / 44
13–14B 14–20 ГБ 32–40 ГБ RTX 4090 / RTX A6000 44 / 60
30–34B 24–30 ГБ 70–80 ГБ RTX 5090 / A100 80GB 70 / 102
70–72B 42–48 ГБ больше 140 ГБ RTX A6000 / A100 80GB 60 / 102

Это приблизительные значения: длинные последовательности, большой ранг LoRA и крупный батч поднимают потребление. Если памяти не хватает, сначала включите gradient checkpointing и уменьшите батч, увеличив накопление градиентов.

Самый выгодный старт для моделей 7–8B — RTX 3090 за 22 ₽/час. Если нужно быстрее, RTX 4090 обычно даёт прирост около полутора-двух раз за двойную цену. Для 70B выбирайте A100 80GB: памяти хватит с запасом и под длинный контекст.

Сколько времени и денег займёт обучение

Время зависит от объёма данных, длины примеров, числа эпох и скорости карты. Ниже — порядок величин для QLoRA на типичном датасете инструкций средней длины. Это оценки, а не гарантия: точную цифру даст пробный запуск на 50–100 шагов.

Задача Карта Время Стоимость
8B, 2 000 примеров, 3 эпохи RTX 3090 ~1–1,5 часа 22–33 ₽
8B, 10 000 примеров, 3 эпохи RTX 4090 ~3–5 часов 130–220 ₽
14B, 10 000 примеров, 2 эпохи RTX 4090 ~5–8 часов 220–350 ₽
32B, 10 000 примеров, 2 эпохи A100 80GB ~8–12 часов 820–1 220 ₽
70B, 5 000 примеров, 2 эпохи A100 80GB ~12–20 часов 1 220–2 040 ₽

Даже дообучение 70B обходится в пару тысяч рублей. При этом сама модель 70B после QLoRA часто заметно сильнее дообученной 8B на сложных задачах, так что выбор размера — это компромисс между качеством ответов, стоимостью обучения и стоимостью последующего инференса. Для сравнения, полное дообучение той же модели потребовало бы кластера из 8 H100 на несколько суток. Подробнее о том, как считать стоимость обучения в целом, — в статье сколько стоит обучить нейросеть.

Запуск QLoRA на арендованном сервере

Запустите сервер с подходящей картой в каталоге аренды GPU для ИИ, подключитесь по SSH и проверьте карту командой nvidia-smi.

Поставьте библиотеки в виртуальное окружение:

python3 -m venv ~/ft && source ~/ft/bin/activate
pip install -U pip
pip install torch transformers datasets peft trl bitsandbytes accelerate
hf auth login   # для закрытых моделей вроде Llama

Датасет удобно хранить в формате JSONL, где каждая строка — диалог в формате сообщений:

{"messages": [{"role": "user", "content": "Вопрос клиента"}, {"role": "assistant", "content": "Правильный ответ"}]}

Минимальный скрипт обучения на базе библиотеки TRL:

import torch
from datasets import load_dataset
from peft import LoraConfig
from transformers import AutoModelForCausalLM, AutoTokenizer, BitsAndBytesConfig
from trl import SFTConfig, SFTTrainer

model_id = "Qwen/Qwen2.5-7B-Instruct"
bnb = BitsAndBytesConfig(load_in_4bit=True, bnb_4bit_quant_type="nf4",
                         bnb_4bit_compute_dtype=torch.bfloat16)
model = AutoModelForCausalLM.from_pretrained(model_id, quantization_config=bnb,
                                             device_map="auto")
tokenizer = AutoTokenizer.from_pretrained(model_id)

lora = LoraConfig(r=16, lora_alpha=32, lora_dropout=0.05, target_modules="all-linear",
                  task_type="CAUSAL_LM")
data = load_dataset("json", data_files="train.jsonl", split="train")

args = SFTConfig(output_dir="out", num_train_epochs=3, per_device_train_batch_size=4,
                 gradient_accumulation_steps=4, learning_rate=2e-4, bf16=True,
                 gradient_checkpointing=True, logging_steps=10, save_steps=200)

SFTTrainer(model=model, args=args, train_dataset=data, peft_config=lora,
           processing_class=tokenizer).train()

Запускайте обучение внутри tmux, чтобы обрыв SSH не остановил процесс, и сохраняйте чекпоинты: параметр save_steps в примере сохраняет адаптер каждые 200 шагов.

Проверка и использование адаптера

После обучения в папке out появятся чекпоинты с файлами адаптера. Проверить результат проще всего, подключив адаптер к vLLM без слияния с базовой моделью:

vllm serve Qwen/Qwen2.5-7B-Instruct --enable-lora \
  --lora-modules my-adapter=out/checkpoint-600 --max-model-len 4096

Теперь в запросах к API можно указывать модель my-adapter, и ответы будут идти уже через дообученный адаптер. Так удобно сравнивать базовую модель и дообученную на одних и тех же вопросах. Подробнее о запуске vLLM — в инструкции как запустить Llama на арендованной GPU.

Если адаптер устраивает, его можно слить с базовой моделью методом merge_and_unload() из библиотеки PEFT и сохранить как обычную модель. Это немного ускоряет инференс и упрощает развёртывание, но слитая модель весит столько же, сколько исходная.

Оценивайте результат не только по loss. Подготовьте 50–100 контрольных вопросов, которых не было в обучающих данных, и сравните ответы до и после дообучения. Это занимает полчаса и сразу показывает, научилась ли модель тому, что нужно, или просто запомнила примеры.

Если не хочется писать код, есть готовые инструменты с конфигурационными файлами: Axolotl, LLaMA-Factory, Unsloth. Unsloth к тому же заметно ускоряет QLoRA на одной карте и экономит память, что особенно полезно на 24 ГБ.

Как не переплатить за обучение

Сделайте пробный запуск. Запустите 50–100 шагов и посмотрите скорость в логах. Отсюда легко пересчитать полное время и стоимость. Это обходится в несколько рублей и защищает от сюрпризов.

Готовьте данные до аренды. Чистка, дедупликация и разметка датасета не требуют видеокарты. Делайте это на своём компьютере, а на арендованный сервер загружайте готовый файл.

Не гонитесь за эпохами. На LoRA переобучение наступает быстро. Часто 1–3 эпохи дают лучший результат, чем 5–10. Следите за loss на валидационной выборке.

Подбирайте ранг разумно. Ранг r=8–16 подходит для большинства задач стиля и формата. Ранг 64 и выше увеличивает память и время, а выигрыш в качестве часто незаметен.

Обрежьте длину последовательностей. Если 95% примеров короче 1 024 токенов, не ставьте максимальную длину 4 096 ради нескольких длинных. Память и время растут вместе с длиной, а редкие длинные примеры можно разбить или убрать.

Сравните две карты на коротком прогоне. Иногда RTX 4090 обучает настолько быстрее RTX 3090, что итоговая стоимость почти совпадает, а результат готов раньше. Иногда, наоборот, задача упирается в память, и дешёвая карта выигрывает. Десять минут на каждой стоят меньше 10 ₽ и снимают вопрос.

Держите базовую модель на постоянном диске. Если вы планируете несколько итераций дообучения, не скачивайте 15–40 ГБ весов каждый раз заново. Повторный запуск с готовой моделью начинается через минуту, а не через десять.

Выключайте сервер после обучения. Скачайте адаптер — он весит десятки мегабайт — и остановите машину. Проверять качество и запускать модель можно потом, хоть на более дешёвой карте.

LoRA для Stable Diffusion и Flux

Всё сказанное относится и к генерации изображений. LoRA для SDXL на 20–50 картинках обучается на RTX 4090 примерно за 30–60 минут, то есть за 22–44 ₽. Для LoRA на Flux нужно больше памяти — 24 ГБ и выше, на RTX 4090 обучение занимает порядка 1–2 часов.

Популярные инструменты — kohya_ss и ai-toolkit: они ставятся на арендованный сервер так же, как любой Python-проект. Готовый адаптер подключается в ComfyUI через узел загрузки LoRA, подробнее в инструкции ComfyUI на арендованной GPU.

Итог

LoRA и QLoRA сделали дообучение больших моделей доступным: вместо кластера из дорогих карт хватает одной RTX 3090 или RTX 4090, а обучение модели 8B стоит меньше 250 ₽. Для 30–70B понадобится A100 или RTX A6000, но и это тысячи, а не сотни тысяч рублей.

В Тераферме все эти карты доступны с поминутной оплатой картой российского банка. Подготовьте датасет, запустите пробный прогон на 100 шагов, оцените время и стоимость — и дообучите модель под свою задачу уже сегодня.

Вопросы по теме

Чем LoRA отличается от QLoRA?

LoRA обучает небольшие адаптеры поверх замороженной модели в 16-битной точности. QLoRA делает то же самое, но базовая модель загружается в 4 битах, что сокращает потребление памяти примерно в 3–4 раза при небольшой потере качества.

Какая видеокарта нужна для QLoRA модели 7–8B?

Хватит 12–16 ГБ видеопамяти, комфортно — 24 ГБ. Оптимальный выбор по цене — RTX 3090 за 22 ₽/час или RTX 4090 за 44 ₽/час, если важна скорость.

Можно ли дообучить модель 70B на одной видеокарте?

Через QLoRA — да, на карте с 48–80 ГБ памяти: RTX A6000, A100 80GB или H100. Обучение займёт больше времени, чем у малых моделей, но обойдётся без кластера из нескольких GPU.

Сколько примеров нужно для дообучения LoRA?

Для изменения стиля и формата ответов часто хватает 500–2 000 качественных примеров. Для обучения новой предметной области нужно от нескольких тысяч. Качество примеров важнее количества.

Подберите GPU

20 моделей с поминутной оплатой картой РФ.