Обучение моделей
15 просмотров
DeepSpeed ZeRO
Zero Redundancy Optimizer
DeepSpeed ZeRO — техника распределённого обучения от Microsoft, устраняющая дублирование данных между GPU. Позволяет обучать модели в 8-10× больше, чем помещается в VRAM одной GPU.
Что такое DeepSpeed ZeRO
DeepSpeed ZeRO (Zero Redundancy Optimizer) — набор оптимизаций для распределённого обучения, которые партиционируют (разделяют) данные модели между GPU вместо их дублирования.
Стадии ZeRO
При обучении модели память расходуется на три компонента:
| Компонент | Размер (FP32, 7B) |
|---|---|
| Веса модели | 28 GB |
| Градиенты | 28 GB |
| Состояние оптимизатора (Adam) | 56 GB |
| Итого на каждой GPU | 112 GB |
ZeRO разделяет эти компоненты между N GPU:
| Стадия | Что партиционируется | VRAM на GPU (8 GPU) |
|---|---|---|
| ZeRO-1 | Состояние оптимизатора | 56/8 + 28 + 28 = 63 GB |
| ZeRO-2 | + Градиенты | 56/8 + 28/8 + 28 = 38.5 GB |
| ZeRO-3 | + Веса модели | 112/8 = 14 GB |
ZeRO-Offload
Дополнительная оптимизация: выгрузка состояния оптимизатора и/или вычислений на CPU RAM. Позволяет обучать модели, не помещающиеся даже при ZeRO-3.
Пример конфигурации
{
"zero_optimization": {
"stage": 3,
"offload_optimizer": {
"device": "cpu",
"pin_memory": true
},
"overlap_comm": true,
"contiguous_gradients": true
},
"bf16": {"enabled": true},
"train_micro_batch_size_per_gpu": 4,
"gradient_accumulation_steps": 8
}
DeepSpeed vs FSDP
| Параметр | DeepSpeed ZeRO | PyTorch FSDP |
|---|---|---|
| Экосистема | Microsoft | Meta/PyTorch |
| Гибкость | Больше опций | Проще API |
| CPU Offload | Да | Да |
| NVMe Offload | Да (ZeRO-Infinity) | Нет |
| FP8 | Да | Через Transformer Engine |
Связанные термины
Альтернатива
Использует