Практика · руководство · 10 мин на чтение

# Файнтюнинг модели 70B на одной карте.

QLoRA превращает задачу обучения, для которой нужна целая стойка, в задачу, для которой достаточно одного GPU на 48 GB. Вот что помещается, сколько это стоит в месяц и где эта техника перестаёт работать.

Коротко

- **QLoRA на 70B:** ~61 GB — помещается на одной карте 48 GB при коротких последовательностях, и свободно — на карте 80 GB
- **Полный файнтюнинг 70B:** ~1,232 GB — кластер из нескольких узлов, который мы не сдаём в аренду
- **Соотношение:** Примерно в **20×** раз меньше памяти — за технику, которая на большинстве задач даёт бо́льшую часть качества
- **Сколько это стоит у нас:** От $286 в месяц — карта ваша на весь месяц, а не только на время прогона

## Что реально помещается

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

Замороженные веса 4 бита на параметр 35 GB для модели 70B. Считываются на каждом шаге, но никогда не обновляются, поэтому градиент им не нужен.

Адаптеры Около 1–2% параметров Гигабайт-другой в BF16. Это единственные веса, которые меняются, и единственное, что остаётся у вас в итоге.

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

Активации Переменная часть Масштабируется вместе с размером батча и длиной последовательности. Gradient checkpointing даёт примерно 30% прироста вычислений в обмен на значительное снижение памяти — обычный рычаг, когда прогон не помещается.

## Почему с полным файнтюнингом всё иначе

Полный файнтюнинг в BF16 требует около 16 байт на параметр: 2 на сам вес, 2 на его градиент и 8 на два момента Adam в FP32, плюс мастер-копия. Это фиксированный множитель, и он безжалостен.

**Память для обучения: QLoRA против полного файнтюнинга**

| Модель | QLoRA | Полный файнтюнинг | Соотношение | Что это значит |
|---|---|---|---|---|
| Llama 3.1 8B 8B параметров | 13 GB | 141 GB | 11× | Одна карта на 24 GB Полный: узел на 8 GPU |
| Gemma 3 27B 27B параметров | 27 GB | 475 GB | 17× | Одна карта на 48 GB Полный: узел на 8 GPU |
| Qwen 3 32B 32B параметров | 31 GB | 563 GB | 18× | Одна карта на 48 GB Полный: узел на 8 GPU |
| Llama 3.3 70B 70B параметров | 61 GB | 1,232 GB | 20× | Одна карта на 80 GB Полный: больше одного узла |

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

## По моделям

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

**Самый дешёвый узел для обучения QLoRA и для инференса результата**

| Модель | Память для обучения | Самый дешёвый узел для обучения | Самый дешёвый узел для инференса |
|---|---|---|---|
| Llama 3.1 8B | 13 GB | [NVIDIA L4](https://gpuserver.io/ru/gpu/nvidia-l4) 24 GB на карту · $125/мес. | [NVIDIA L4](https://gpuserver.io/ru/gpu/nvidia-l4) $125/мес. |
| Mistral Small 24B | 25 GB | [NVIDIA RTX A6000](https://gpuserver.io/ru/gpu/rtx-a6000) 48 GB на карту · $286/мес. | [NVIDIA L4](https://gpuserver.io/ru/gpu/nvidia-l4) $125/мес. |
| Gemma 3 27B | 27 GB | [NVIDIA RTX A6000](https://gpuserver.io/ru/gpu/rtx-a6000) 48 GB на карту · $286/мес. | [NVIDIA L4](https://gpuserver.io/ru/gpu/nvidia-l4) $125/мес. |
| Qwen 3 32B | 31 GB | [NVIDIA RTX A6000](https://gpuserver.io/ru/gpu/rtx-a6000) 48 GB на карту · $286/мес. | [NVIDIA L4](https://gpuserver.io/ru/gpu/nvidia-l4) $125/мес. |
| Llama 3.3 70B | 61 GB | [NVIDIA A100 PCIe](https://gpuserver.io/ru/gpu/a100-80gb) 80 GB на карту · $1,091/мес. | [2 × NVIDIA L4](https://gpuserver.io/ru/gpu/nvidia-l4) $285/мес. |

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

## Запуск

Axolotl предустановлен как один из образов в конфигураторе. Это полный прогон на одной карте, с чистой машины.

Запуск QLoRA на одной карте

```
$ mkdir -p /scratch/ft && cd /scratch/ft
$ cat > qlora.yml <<'YAML'
base_model: meta-llama/Llama-3.3-70B-Instruct
load_in_4bit: true
adapter: qlora
lora_r: 16
lora_alpha: 32
lora_dropout: 0.05
lora_target_linear: true

sequence_len: 2048
sample_packing: true
gradient_checkpointing: true
micro_batch_size: 1
gradient_accumulation_steps: 16
num_epochs: 2
learning_rate: 0.0001
optimizer: paged_adamw_8bit
bf16: true

datasets:
  - path: /scratch/ft/data.jsonl
    type: chat_template
output_dir: /scratch/ft/out
YAML

$ docker run --rm --gpus all --ipc=host --shm-size=16g \
    -v /scratch/ft:/workspace -v /scratch/models:/root/.cache/huggingface \
    -e HF_TOKEN="$HF_TOKEN" \
    axolotlai/axolotl:main-latest \
    axolotl train /workspace/qlora.yml
```

Первые две минуты следите за памятью, а не за лоссом

```
$ nvidia-smi dmon -s um

# If memory sits just under the card's total, you are one long batch
# away from an out-of-memory error four hours into the run.
# Lower sequence_len or micro_batch_size now, not then.
```

## Настройки, которые имеют значение

lora_r 16 to 64 Ранг — главный регулятор баланса между качеством и памятью. 16 — разумное значение по умолчанию; превышение 64 редко себя окупает, если только вы не обучаете модель по-настоящему новым знаниям, а не формату или стилю.

lora_target_linear true Адаптирует каждый линейный слой, а не только внимание. Стоит немного и стабильно превосходит вариант по умолчанию, затрагивающий только внимание.

sequence_len Самый мощный рычаг экономии памяти Активации масштабируются вместе с ним. Уменьшение вдвое примерно вдвое сокращает переменную часть памяти. Выставляйте значение по реальной длине ваших данных, а не по максимуму модели.

gradient_checkpointing true, почти всегда Примерно на 30% медленнее, но именно это позволяет модели 70B вообще уместиться на одной карте. Отключайте это только тогда, когда у вас есть запас памяти.

micro_batch_size & накопление Разменять одно на другое Эффективный батч — это их произведение. Держите микробатч равным 1 и увеличивайте накопление градиента, когда памяти не хватает, — тот же градиент, меньший пиковый расход памяти, чуть медленнее.

оптимизатор paged_adamw_8bit Восьмибитные состояния оптимизатора с подкачкой в CPU как предохранительный клапан. Он сглаживает всплески, которые иначе оборвали бы прогон на четвёртом часу.

## Сколько стоит месяц

Причина, по которой помесячная аренда важнее для обучения, чем для инференса: проект файнтюнинга — это не один прогон. Это первый прогон, который падает из-за бага в данных, второй, который переобучается, третий, который срабатывает, а затем ещё пять — с разными рангами.

**Стоимость проекта файнтюнинга по машинам**

| Машина | Память карты | В месяц | Подходит |
|---|---|---|---|
| [NVIDIA L4](https://gpuserver.io/ru/gpu/nvidia-l4) 300 GB/s | 24 GB | $125/мес | QLoRA до 8B |
| [NVIDIA RTX 5090](https://gpuserver.io/ru/gpu/rtx-5090) 1,792 GB/s | 32 GB | $335/мес | QLoRA до 32B |
| [NVIDIA A100 PCIe](https://gpuserver.io/ru/gpu/a100-40gb) 1,555 GB/s | 40 GB | $392/мес | QLoRA до 32B |
| [NVIDIA RTX A6000](https://gpuserver.io/ru/gpu/rtx-a6000) 768 GB/s | 48 GB | $286/мес | QLoRA до 32B |
| [NVIDIA A100 PCIe](https://gpuserver.io/ru/gpu/a100-80gb) 1,935 GB/s | 80 GB | $1,091/мес | QLoRA до 70B |

Сравните это с почасовой оплатой в рамках проекта, а не одного прогона: [руководство по точке окупаемости](https://gpuserver.io/ru/guides/monthly-vs-hourly) разбирает эту арифметику. Машина, которая существует три недели, пока вы итерируете, — это именно тот случай, когда почасовая тарификация обходится дороже, чем срок аренды.

## Где LoRA перестаёт работать

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

**Обучение по-настоящему новой предметной области.** LoRA хорошо адаптирует поведение, но плохо добавляет знания. Модель, которая никогда не видела вашу область, не выучит её по низкоранговому адаптеру.

**Изменение словаря или токенизатора.** Новым токенам нужны обученные эмбеддинги, а это выходит за пределы того, что затрагивает адаптер.

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

**Выжать последние два пункта бенчмарка.** На этой грани полный файнтюнинг всё ещё выигрывает. Если именно за эту грань вам и платят, LoRA — не тот инструмент.

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

## Выберите карту и держите её весь проект.

Каждая конфигурация — помесячная, с root-доступом и без почасовой тарификации — именно это и нужно для итеративной работы над файнтюнингом.

[Просмотреть каталог](https://gpuserver.io/ru/#catalog) [Читать руководства](https://gpuserver.io/ru/guides)

## Другие руководства

- [Оплата · 8 мин Оплата сервера криптовалютой Что на самом деле происходит между нажатием «оплатить» и получением root, какую монету выбрать и четыре ошибки, которые теряют деньги при первом платеже. Читать руководство](https://gpuserver.io/ru/guides/pay-in-crypto)
- [Расчёт · 9 мин Сколько VRAM реально нужно модели Арифметика вопроса «поместится ли модель»: веса, KV-кэш и два места, где эмпирическое правило ошибается сразу втрое. Читать руководство](https://gpuserver.io/ru/guides/vram-sizing)
- [Расчёт · 7 мин NVLink или PCIe: что нужно вашей задаче Когда связь между картами определяет пропускную способность, когда она ничего не меняет и как понять, какой у вас случай, прежде чем платить за не тот узел. Читать руководство](https://gpuserver.io/ru/guides/nvlink-vs-pcie)

---

Источник: https://gpuserver.io/ru/guides/lora-finetune/. Этот файл формируется на основе тех же данных, что и сайт; если цифра здесь отличается от страницы сайта, приоритет у страницы, а этот файл устарел — канонический источник: https://gpuserver.io/.
