Обучение моделей 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

Связанные термины

Альтернатива
Использует

Попробуйте на практике

Арендуйте GPU и запустите ML-модели в Intelion Cloud

Начать работу