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