Tích lũy gradient với Accelerator
Bạn đang huấn luyện một mô hình ngôn ngữ để đơn giản hóa bản dịch bằng cách diễn đạt lại các câu phức tạp, nhưng GPU của bạn bị thiếu bộ nhớ. Tích lũy gradient cho phép mô hình huấn luyện hiệu quả trên các lô dữ liệu lớn hơn bằng cách dùng các lô nhỏ vừa với bộ nhớ. Bạn muốn tự viết vòng lặp huấn luyện để thấy rõ cấu trúc, nên bạn đang dùng Accelerator. Lưu ý: bài tập này thực tế chạy trên CPU, nhưng mã cho GPU cũng giống hệt.
model, train_dataloader, optimizer và lr_scheduler đã được định nghĩa sẵn.
Bài tập này là một phần của khóa học
Huấn luyện Mô hình AI Hiệu quả với PyTorch
Hướng dẫn bài tập
- Cấu hình
Accelerator()để dùng tích lũy gradient với hai bước. - Thiết lập một context manager của
Acceleratorđể bật tích lũy gradient chomodel.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# 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}")