НачатьНачать бесплатно

Накопление градиентов с помощью Accelerator

Вы обучаете языковую модель для упрощения переводов путём перефразирования сложных предложений, однако видеопамяти GPU не хватает. Накопление градиентов позволяет модели эффективно обучаться на больших батчах, разбивая их на небольшие части, которые умещаются в памяти. Поскольку вы предпочитаете явно прописывать цикл обучения, чтобы видеть его структуру, вы используете Accelerator. Обратите внимание: в данном упражнении код выполняется на CPU, однако для GPU он остаётся таким же.

Объекты model, train_dataloader, optimizer и lr_scheduler уже определены заранее.

Это упражнение является частью курса

Эффективное обучение моделей ИИ с PyTorch

Посмотреть курс

Инструкции к упражнению

  • Настройте Accelerator() для использования накопления градиентов с двумя шагами.
  • Создайте контекстный менеджер Accelerator для включения накопления градиентов для model.

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

# Configure Accelerator
accelerator = ____(____=____)
model, optimizer, train_dataloader, lr_scheduler = accelerator.prepare(model, optimizer, train_dataloader, lr_scheduler)
for batch in train_dataloader:
    # Set up an Accelerator context manager
    with ____.____(____):
        inputs, targets = batch["input_ids"], batch["labels"]
        outputs = model(inputs, labels=targets)
        loss = outputs.loss
        accelerator.backward(loss)
        optimizer.step()
        lr_scheduler.step()
        optimizer.zero_grad()
        print(f"Loss = {loss}")
Редактировать и запускать код