Huấn luyện mixed precision với PyTorch cơ bản
Bạn sẽ dùng các kiểu số thực dấu chấm động độ chính xác thấp để tăng tốc huấn luyện cho mô hình dịch ngôn ngữ của mình. Ví dụ, kiểu số thực 16-bit (float16) chỉ bằng một nửa kích thước so với kiểu 32-bit (float32). Điều này giúp tăng tốc các phép nhân ma trận và tích chập. Hãy nhớ rằng điều này bao gồm việc scale gradient và ép kiểu các phép toán sang số thực 16-bit.
Một số đối tượng đã được nạp sẵn: dataset, model, dataloader, và optimizer.
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
- Trước vòng lặp, định nghĩa một scaler cho gradient bằng
torch.amp.GradScaler. - Trong vòng lặp, ép kiểu các phép toán sang số thực 16-bit bằng cách dùng
torch.autocastnhư một context manager. - Trong vòng lặp, scale loss và gọi
.backward()để tạo các gradient đã được scale.
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.
# Define a scaler for the gradients
scaler = torch.amp.____()
for batch in train_dataloader:
inputs, targets = batch["input_ids"], batch["labels"]
# Casts operations to mixed precision
with torch.____(device_type="cpu", dtype=torch.____):
outputs = model(inputs, labels=targets)
loss = outputs.loss
# Compute scaled gradients
scaler.____(loss).backward()
scaler.step(optimizer)
scaler.update()
optimizer.zero_grad()