Adafactor với Accelerator
Bạn đã chứng minh được nguyên mẫu (proof-of-concept) dùng Adafactor với Trainer để huấn luyện mô hình dịch ngôn ngữ với yêu cầu bộ nhớ thấp hơn. Giờ bạn muốn tự viết vòng lặp huấn luyện bằng Accelerator. Hãy xây dựng vòng lặp huấn luyện sử dụng Adafactor!
Hàm compute_optimizer_size() đã được định nghĩa sẵn. Một số đối tượng huấn luyện đã được nạp trước: model, train_dataloader, và accelerator. Adafactor đã được import sẵn từ torch.optim.
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
- Truyền các tham số của mô hình vào
Adafactorkhi định nghĩaoptimizer. - Truyền trạng thái của optimizer để in ra kích thước.
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.
# Pass the model parameters to Adafactor
optimizer = Adafactor(params=____.____())
model, optimizer, train_dataloader = accelerator.prepare(model, optimizer, train_dataloader)
for batch in train_dataloader:
inputs, targets = batch["input_ids"], batch["labels"]
outputs = model(inputs, labels=targets)
loss = outputs.loss
accelerator.backward(loss)
optimizer.step()
optimizer.zero_grad()
# Pass in the optimizer state
total_size_megabytes, total_num_elements = compute_optimizer_size(optimizer.state.____())
print(f"Number of optimizer parameters: {total_num_elements:,}\nOptimizer size: {total_size_megabytes:.0f} MB")