TL;DR

Rohit Tiwari vừa đẩy lên GitHub một notebook PyTorch cực kỳ thực chiến cho người mới: 876 stars, một file .ipynb duy nhất đi từ tensor initialization đến matrix multiplication, indexing, và reshaping. Đây là điểm khởi đầu tốt nhất nếu bạn muốn hiểu nền tảng của mọi model deep learning hiện đại.

PyTorch Fundamentals - notebook table of contents

Tại sao bạn cần hiểu tensor

Mọi thứ trong deep learning - ảnh, văn bản, âm thanh, chuỗi protein - đều được biểu diễn dưới dạng tensor. Model học bằng cách thực hiện hàng triệu phép toán trên các tensor đó. Nếu bạn không hiểu tensor, bạn sẽ không hiểu tại sao code của mình bị lỗi.

PyTorch tensor về bản chất giống NumPy ndarray, nhưng có thêm hai điểm then chốt:

  • GPU acceleration: tensor chạy được trên CUDA (NVIDIA), MPS (Apple Silicon), MTIA, XPU - thay vì chỉ CPU như NumPy
  • Autograd: PyTorch tự tính gradient qua torch.autograd - không cần viết backprop thủ công

Thêm vào đó, PyTorch và NumPy chia sẻ cùng một vùng nhớ khi tensor ở CPU - chuyển đổi qua lại giữa torch.from_numpy().numpy() không tốn chi phí copy.

Trước khi bắt đầu

Bạn cần nắm vững những thứ sau trước khi đọc notebook:

  • Python cơ bản - đặc biệt list indexing và slicing (cú pháp trong PyTorch rất tương đồng)
  • NumPy cơ bản - nếu đã quen ndarray, bạn sẽ cảm thấy quen ngay với Tensor API
  • Phép nhân ma trận: quy tắc quan trọng nhất - inner dimensions phải khớp. (3,2) @ (2,3) hoạt động, kết quả shape là (3,3); (3,2) @ (3,2) lỗi ngay

Những gì bạn sẽ học trong notebook

Notebook chia thành các phần logic, mỗi phần có code ví dụ chạy được:

Khởi tạo tensor

Từ Python list, NumPy array, hoặc dùng built-in methods như torch.zeros(), torch.ones(), torch.rand(), torch.arange(). Bạn học cách đọc ba thuộc tính quan trọng nhất: .shape, .dtype, .device - ba thứ này giải thích 90% lỗi PyTorch bạn sẽ gặp.

Precision và dtype

PyTorch hỗ trợ float16, float32 (mặc định), float64, và int8/16/32/64. Precision thấp hơn = tốc độ nhanh hơn + ít bộ nhớ hơn nhưng kém chính xác hơn. Mobile neural networks thường dùng int8. Lưu ý: một số phép như torch.mean() yêu cầu float - dùng int tensor sẽ lỗi.

Phép toán trên tensor

Hơn 1.200 operations được hỗ trợ: cộng/trừ/nhân/chia element-wise, linear algebra, aggregation (min/max/mean/sum), positional argmax/argmin. Với matrix multiplication, dùng torch.matmul() hoặc toán tử @ - không dùng vòng lặp thủ công (chậm hơn nhiều lần).

Indexing và reshaping

Indexing trong PyTorch đi từ outer dimension vào inner dimension - giống hệt NumPy. Reshaping tools quan trọng nhất: torch.reshape(), tensor.view(), torch.squeeze(), torch.unsqueeze(), torch.permute(). Cần dùng chúng mọi lúc để align shape trước khi nhân ma trận.

Ba bẫy thường gặp nhất

Khi code PyTorch bị lỗi, hãy tự hỏi: "shape là gì, dtype là gì, đang ở device nào?"

  • Shape mismatch: lỗi phổ biến nhất. Dùng tensor.T (transpose) hoặc reshape để fix trước khi nhân
  • Dtype mismatch: PyTorch yêu cầu các tensor tham gia phép toán phải cùng dtype. Trộn float32 với float16 sẽ lỗi
  • Device mismatch: một tensor ở CPU, tensor kia ở GPU - phép toán sẽ fail. Luôn dùng .to(device) để đồng nhất

Bonus: tránh in-place operations (các method có _ suffix như x.copy_(y)) - chúng xóa lịch sử gradient, gây vấn đề khi autograd tính đạo hàm.

Ai nên dùng repo này

Repo này phù hợp cho:

  • Sinh viên bắt đầu học ML/DL và chưa biết bắt đầu từ đâu
  • Developer Python muốn chuyển sang ML - bạn đã biết NumPy, học thêm một bước là có PyTorch
  • Data scientist cần hiểu internals của framework thay vì chỉ dùng Keras high-level API
  • Researcher muốn tham khảo tensor ops trước khi build custom model

Số liệu biết rằng PyTorch đã được Meta, Tesla, Microsoft, OpenAI dùng trong production. Stanford dạy deep learning bằng PyTorch. Andrej Karpathy (Tesla AI Day) đã nhiều lần nhắc đến PyTorch là nền tảng cho computer vision của xe tự lái.

Tiếp theo sau tensor

Sau khi nắm vững tensor, roadmap tự nhiên là:

  1. Autograd - hiểu cách PyTorch tính gradient tự động (requires_grad=True, .backward())
  2. torch.nn - build neural network layers bằng nn.Module
  3. Training loop - forward pass, loss, backward, optimizer step
  4. TorchVision / TorchAudio - domain-specific libraries cho CV và audio

PyTorch hiện đang phát triển mạnh: version 2.13 đang trong dev, team tập trung vào torch.compile để tăng tốc inference đáng kể trong production.

Nguồn: analyticalrohit/pytorch_fundamentals, PyTorch Official Docs, Zero to Mastery PyTorch, Real Python.