Обучение моделей
45 просмотров
Distributed Training
Distributed Training
Distributed Training — обучение ML-модели на нескольких GPU или серверах одновременно. Объединяет Data Parallelism, Tensor Parallelism и Pipeline Parallelism для работы с большими моделями.
Что такое Distributed Training
Distributed Training — обучение модели с использованием нескольких GPU, возможно на разных серверах. Необходимо, когда модель не помещается в один GPU или когда обучение на одном GPU заняло бы недопустимо долго.
Стратегии параллелизма
| Стратегия | Что делит | Когда применять |
|---|---|---|
| Data Parallelism | Данные | Модель влезает в 1 GPU |
| Tensor Parallelism | Слои горизонтально | Один слой не влезает |
| Pipeline Parallelism | Слои вертикально | Много слоёв |
| ZeRO / FSDP | Optimizer + параметры | Экономия VRAM |
| Expert Parallelism | Эксперты MoE | MoE-модели |
| 3D Parallelism | DP + TP + PP | Модели >100B |
Фреймворки
| Фреймворк | Компания | Возможности |
|---|---|---|
| PyTorch FSDP | Meta | DP + шардинг, встроен в PyTorch |
| DeepSpeed | Microsoft | ZeRO Stage 1-3, offloading |
| Megatron-LM | NVIDIA | TP + PP, оптимизирован для NVIDIA |
| Accelerate | HuggingFace | Обёртка над FSDP/DeepSpeed |
Запуск
# torchrun — стандартный лаунчер PyTorch
# 1 узел, 8 GPU
torchrun --nproc_per_node=8 train.py
# 4 узла по 8 GPU = 32 GPU
torchrun --nnodes=4 --nproc_per_node=8 \
--rdzv_backend=c10d --rdzv_endpoint=master:29500 \
train.py
Сколько GPU нужно
| Модель | Pretraining | LoRA Fine-tuning |
|---|---|---|
| 7B | 8-16 GPU | 1 GPU |
| 70B | 64-256 GPU | 4-8 GPU |
| 405B | 512+ GPU | 16-32 GPU |
| 671B (MoE) | 2048+ GPU | 64+ GPU |
Связанные термины
Является частью
Используется в
Измеряет