«Сколько GPU мне нужно?» — самый частый вопрос при планировании обучения языковых моделей. Ответ зависит от размера модели, типа обучения (full vs LoRA), precision (FP16 vs FP8 vs INT8), batch size и доступной памяти на GPU. В этой статье даём практические рекомендации для моделей 7B, 13B и 70B параметров.
Базовая формула оценки памяти
Для full fine-tuning модели в FP16 требуется примерно:
Память = (размер модели × 4) + (размер модели × 2 для градиентов) + (размер модели × 4 для оптимизатора AdamW) = размер модели × 10
Примеры:
- 7B в FP16: 7 × 2 = 14 ГБ (веса) × 10 = ~70 ГБ
- 13B в FP16: 13 × 2 = 26 ГБ (веса) × 10 = ~130 ГБ
- 70B в FP16: 70 × 2 = 140 ГБ (веса) × 10 = ~700 ГБ
Это без учёта batch size, активаций и KV-кэша. Реальное потребление — на 20–50% выше.
Для LoRA / QLoRA
При LoRA-адаптации замораживаются веса модели, обучаются только adapter-матрицы. Потребление памяти:
Память ≈ размер модели × 2 (веса в FP16 или INT4) + небольшой overhead для adapter'ов
- 7B QLoRA INT4: ~4 ГБ веса + ~8 ГБ overhead = ~12 ГБ → 1× H100 80GB
- 13B QLoRA INT4: ~7 ГБ веса + ~12 ГБ overhead = ~19 ГБ → 1× H100 80GB
- 70B QLoRA INT4: ~35 ГБ веса + ~40 ГБ overhead = ~75 ГБ → 1–2× H100 80GB
Сводная таблица
| Модель | Тип | GPU H100 80GB | GPU H200 141GB | NVLink |
|---|---|---|---|---|
| 7B | LoRA / QLoRA | 1 | 1 | нет |
| 7B | Full fine-tuning | 1–2 | 1 | желательно |
| 7B | Pretraining | 4 | 2–4 | обязательно |
| 13B | LoRA / QLoRA | 1 | 1 | нет |
| 13B | Full fine-tuning | 2 | 1–2 | обязательно |
| 13B | Pretraining | 4–8 | 4 | обязательно |
| 70B | QLoRA INT4 | 1–2 | 1 | желательно |
| 70B | LoRA FP16 | 2–4 | 2 | обязательно |
| 70B | Full fine-tuning | 8 | 4–8 | обязательно |
| 70B | Pretraining | 16+ | 8–16 | обязательно |
Какие конфигурации подходят
На основе наших серверов:
| Задача | Сервер | Цена от, ₽/мес |
|---|---|---|
| 7B–13B LoRA | 2× H100 80GB (XFUSION) | 585 000 |
| 13B full, 70B LoRA | 4× H100 80GB (ESC8000A) | 1 360 800 |
| 70B full | 8× H100 80GB (ESC8000A) | 2 373 300 |
| 70B full (меньше GPU) | 4× H200 141GB (ESC8000A) | 1 627 200 |
| 70B pretraining | 8× H200 141GB (ESC8000A) | 2 906 100 |
Практические советы
Используйте FSDP или DeepSpeed
Fully Sharded Data Parallel (FSDP) и DeepSpeed ZeRO разделяют веса, градиенты и состояние оптимизатора между GPU. Это позволяет обучать модели, которые не помещаются в память одной карты. FSDP встроен в PyTorch 2.x.
Gradient checkpointing
Пересчёт активаций вместо их хранения. Экономит 50–70% памяти ценой 20–30% замедления. Почти всегда стоит включать.
Mixed precision (FP8 на H100)
H100 поддерживает FP8 — формат с 8-битными числами. Обучение в FP8 ускоряет вычисления и снижает потребление памяти в 2 раза по сравнению с FP16. Поддерживается в PyTorch 2.2+ и NVIDIA Transformer Engine.
Batch size и gradient accumulation
Если не хватает памяти для большого batch size, используйте gradient accumulation: делайте несколько micro-batches и накапливайте градиенты перед шагом оптимизатора. Эффективный batch = micro-batch × accumulation steps.
Опишите вашу модель и задачу — подберём оптимальную конфигурацию. Тел: +7 499 350-51-54, email: sales@tenzor.cloud