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

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

Xem khóa học

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.autocast như 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()
Chỉnh sửa và Chạy Mã