Bắt đầu ngayBắt đầu miễn phí

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, optimizerlr_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

Xem khóa học

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 cho model.

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}")
Chỉnh sửa và Chạy Mã