ПочатиПочніть безкоштовно

Акумуляція градієнтів з 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}")
Редагувати та запускати код