8-bit Adam với Accelerator
Bạn muốn tùy chỉnh vòng lặp huấn luyện với 8-bit Adam để giảm yêu cầu bộ nhớ của mô hình. Hãy chuẩn bị vòng lặp với 8-bit Adam để huấn luyện.
Giả sử một optimizer 8-bit Adam đã được định nghĩa là adam_bnb_optim. Các đối tượng huấn luyện khác đã được định nghĩa: model, train_dataloader, lr_scheduler, và accelerator.
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
- Chuẩn bị optimizer 8-bit Adam cho huấn luyện phân tán.
- Cập nhật tham số mô hình bằng optimizer.
- Đặt gradient về 0 bằng optimizer.
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.
# Prepare the 8-bit Adam optimizer for distributed training
model, adam_bnb_optim, train_dataloader, lr_scheduler = accelerator.prepare(model, ____, train_dataloader, lr_scheduler)
for batch in train_dataloader:
inputs, targets = batch["input_ids"], batch["labels"]
outputs = model(inputs, labels=targets)
loss = outputs.loss
accelerator.backward(loss)
# Update the model parameters
adam_bnb_optim.____()
lr_scheduler.step()
# Zero the gradients
adam_bnb_optim.____()
print(f"Loss = {loss}")