07

Deep Learning (học sâu) · Bước 7/8 · 15 phút

PyTorch và GPU miễn phí

Bạn viết được một vòng lặp huấn luyện PyTorch cơ bản và chạy nó trên GPU đám mây miễn phí, biết rõ giới hạn.

Chọn một framework: PyTorch

PyTorch là lựa chọn mặc định trong nghiên cứu và phần lớn công việc ở doanh nghiệp, và hệ sinh thái Hugging Face xây quanh nó. JAX mạnh cho nghiên cứu quy mô lớn, còn Keras 3 chạy được trên nhiều backend. Hãy học PyTorch trước. Các ý tưởng sẽ dùng lại được.

Các thành phần cốt lõi không nhiều. Tensor là mảng số có thể nằm trên GPU. nn.Module chứa các layer và trọng số. Hàm loss và optimizer như AdamW lo việc học. Autograd tự tính gradient cho bạn.

Vòng lặp huấn luyện

Mọi vòng lặp PyTorch đều có năm dòng cốt lõi giống nhau. Với mỗi batch: chạy model để lấy dự đoán, tính loss, gọi loss.backward() để có gradient, gọi optimizer.step() để cập nhật trọng số, và gọi optimizer.zero_grad() để xóa gradient trước batch kế tiếp.

Xung quanh đó, bạn chuyển model và dữ liệu lên GPU bằng .to("cuda"), chuyển sang model.eval() và torch.no_grad() khi đo loss validation, và lưu checkpoint thường xuyên. Các thư viện như Hugging Face Transformers hay PyTorch Lightning bọc sẵn vòng lặp này, nhưng hãy tự viết tay ít nhất một lần.

GPU miễn phí, nói thật

Google Colab cho dùng notebook miễn phí có GPU, thường là NVIDIA T4. Không có gì bảo đảm bạn luôn được cấp GPU, phiên làm việc tự ngắt khi để không và có thời lượng tối đa, còn file sẽ mất khi phiên kết thúc nếu bạn không lưu vào Google Drive.

Kaggle Notebooks cho một hạn mức GPU hằng tuần, khoảng 30 giờ và có thể thay đổi, mỗi phiên giới hạn vài giờ. Cả hai đều dư dả để học, fine-tune model nhỏ và làm các dự án trong lộ trình này. Chúng không đủ để pretrain một model lớn. Luôn xem giới hạn hiện hành trên từng trang.

Thói quen tiết kiệm hàng giờ

Hãy cho model overfit một batch trước: nếu nó không kéo được loss về gần 0 trên 32 ví dụ, code của bạn có lỗi. Đặt random seed. In kích thước (shape) của tensor khi có lỗi, vì lệch shape là lỗi hay gặp nhất. Lưu checkpoint để một lần mất kết nối không làm bạn mất cả lượt huấn luyện.

Thử ngay

Huấn luyện model đầu tiên trên GPU miễn phí

  1. 1.Mở colab.research.google.com và tạo notebook mới. Chọn Runtime, rồi Change runtime type, rồi chọn GPU.
  2. 2.Hỏi chatbot lấy code bằng câu lệnh bên dưới, dán vào một ô (cell) và chạy.
  3. 3.Đọc từng dòng. Thay đổi learning rate và số epoch, xem độ chính xác thay đổi ra sao.
  4. 4.Lưu notebook vào Drive hoặc GitHub để giữ lại.
Viết một script PyTorch ngắn, có chú thích rõ ràng, chạy trên Google Colab, huấn luyện một CNN nhỏ trên FashionMNIST bằng torchvision. Dùng GPU nếu có, in training loss và validation loss mỗi epoch, và kết thúc bằng độ chính xác trên tập test. Giữ dưới 80 dòng và giải thích năm dòng cốt lõi của vòng lặp huấn luyện.
Trong vòng lặp huấn luyện PyTorch, loss.backward() làm gì?

Tự kiểm tra

Trong vòng lặp huấn luyện PyTorch, loss.backward() làm gì?