Накопление градиентов с помощью 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}")