Deepspeed не разгружается на процессор

Deepspeed не может разгрузить операции на ЦП, как я и предполагал, когда у него заканчивается память графического процессора. Наверное, у меня какие-то настройки неправильные. Когда размер пакета увеличивается, выдается ошибка типа

(https://stackru.com/images/8832ea5b3ec0d1dbb2480a53e4e1f359957f0556.png)torch.cuda.OutOfMemoryError: CUDA не хватает памяти. Попыталось выделить 7,04 ГиБ (GPU 1; общая емкость 79,15 ГиБ; 68,07 ГиБ уже выделено; 5,90 ГиБ свободно; всего 72,14 ГиБ зарезервировано PyTorch). Если зарезервированная память >> выделена, попробуйте установить max_split_size_mb, чтобы избежать фрагментации. См. документацию по управлению памятью и PYTORCH_CUDA_ALLOC_CONF.

(не происходит для партий меньшего размера).

Использование оптимизатора Adam и 64-ядерного процессора AMD EPYC 7V13 (виртуальная машина Azure).

Конфигурация DeepSpeed ​​—

      {
    "fp16": {
        "enabled": "auto",
        "loss_scale": 0,
        "loss_scale_window": 1000,
        "initial_scale_power": 16,
        "hysteresis": 2,
        "min_loss_scale": 1
    },

    "optimizer": {
        "type": "AdamW",
        "params": {
            "lr": "auto",
            "betas": "auto",
            "eps": "auto",
            "weight_decay": "auto"
        }
    },

    "scheduler": {
        "type": "WarmupLR",
        "params": {
            "warmup_min_lr": "auto",
            "warmup_max_lr": "auto",
            "warmup_num_steps": "auto"
        }
    },

    "zero_optimization": {
        "stage": 2,
        "offload_optimizer": {
            "device": "cpu",
            "pin_memory": true
        },
        "allgather_partitions": true,
        "allgather_bucket_size": 2e8,
        "overlap_comm": true,
        "reduce_scatter": true,
        "reduce_bucket_size": 2e8,
        "contiguous_gradients": true
    },

    "gradient_accumulation_steps": "auto",
    "gradient_clipping": "auto",
    "train_batch_size": "auto",
    "train_micro_batch_size_per_gpu": "auto"
}

Обучение выполняется с помощью HuggingFace Trainer, а конфигурация DeepSpeed ​​используется путем добавления конфигурации в TrainingArguments.

      with open("./Multi_Modal_Model/zero_config/stage_2_config.json") as f:
    z_optimiser = json.load(f)
        
training_args = TrainingArguments(
    ...
    deepspeed=z_optimiser,
    ...
)

Используя PyTorch 1.13, пытаюсь обучить модель HuggingFace CLIP.

Кто-нибудь знает, что я делаю неправильно?

0 ответов

Другие вопросы по тегам