- Đây là khóa học do Andrej Karpathy trực tiếp giảng dạy, học bằng cách tự triển khai mạng nơ-ron từ đầu bằng mã nguồn
- Bắt đầu từ nền tảng của lan truyền ngược (backpropagation) rồi từng bước xây dựng tới các mô hình deep learning hiện đại ở cấp độ GPT
- Việc học tập xoay quanh mô hình ngôn ngữ (language model), thực hành các công nghệ cốt lõi như PyTorch, torch.Tensor, BatchNorm, WaveNet, tokenizer GPT
- Mỗi bài giảng được xây dựng xoay quanh quy trình phát triển thực tế như huấn luyện mô hình, tính loss, điều chỉnh siêu tham số, chẩn đoán overfitting
- Một chương trình học thiên về thực hành giúp bạn nắm vững cơ chế vận hành bên trong của deep learning và trực giác tối ưu hóa một cách có hệ thống
Tổng quan khóa học
- Khóa học này được tổ chức như một quá trình học bằng cách trực tiếp triển khai mạng nơ-ron bằng mã nguồn
- Yêu cầu toán cơ bản (vi phân, Gaussian) và kỹ năng lập trình Python
- Có kênh Discord để người học trao đổi với nhau
- Việc học được triển khai xoay quanh mô hình ngôn ngữ, và kiến thức này cũng hữu ích để chuyển sang các lĩnh vực khác (ví dụ: thị giác máy tính)
Cấu trúc bài giảng (Syllabus)
1. Intro to Neural Networks and Backpropagation (2h25m)
- Tự tay triển khai micrograd và giải thích lan truyền ngược cùng quá trình học của mạng nơ-ron theo từng bước
- Có thể hiểu được chỉ với kiến thức Python cơ bản và giải tích ở mức trung học phổ thông
2. Intro to Language Modeling: Building makemore (1h57m)
- Triển khai mô hình ngôn ngữ bigram ở cấp độ ký tự
- Trình bày cách sử dụng torch.Tensor và phương pháp tính toán mạng nơ-ron hiệu quả
- Bao gồm quá trình huấn luyện mô hình, lấy mẫu, đánh giá loss (negative log-likelihood)
3. Building makemore Part 2: MLP (1h15m)
- Triển khai mô hình ngôn ngữ cấp độ ký tự dựa trên perceptron đa lớp (MLP)
- Bao gồm các khái niệm nền tảng của machine learning như điều chỉnh learning rate, siêu tham số, chia dữ liệu (train/dev/test), overfitting/underfitting
4. Building makemore Part 3: Activations & Gradients, BatchNorm (1h55m)
- Phân tích cơ chế hoạt động bên trong của MLP nhiều tầng và kiểm tra đặc tính thống kê của activation và gradient
- Giới thiệu Batch Normalization để cải thiện độ ổn định khi huấn luyện
- Residual connection, optimizer Adam sẽ được đề cập trong các video sau
5. Building makemore Part 4: Becoming a Backprop Ninja (1h55m)
- Thực hiện lan truyền ngược thủ công không dùng PyTorch autograd
- Tự tay backprop qua cross-entropy loss, tanh, BatchNorm, bảng embedding
- Củng cố dòng chảy gradient và trực giác tối ưu hóa ở cấp độ tensor
6. Building makemore Part 5: Building a WaveNet (56m)
- Mở rộng MLP 2 tầng trước đó để triển khai cấu trúc CNN phân cấp tương tự WaveNet (2016)
- Thực hành nguyên lý hoạt động bên trong của torch.nn và quy trình phát triển deep learning (tra cứu tài liệu, quản lý chiều tensor, tích hợp mã, v.v.)
7. Let's Build GPT: From Scratch, in Code (1h56m)
- Tự tay triển khai mô hình GPT và đi theo kiến trúc của bài báo “Attention is All You Need” cùng OpenAI GPT-2/3
- Có nhắc tới mối liên hệ với ChatGPT và GitHub Copilot
- Được xây dựng trên tiền đề là mô hình hóa ngôn ngữ tự hồi quy và kiến thức cơ bản về PyTorch nn đã đề cập trong các bài makemore trước đó
8. Let's Build the GPT Tokenizer (2h13m)
- Tự tay triển khai tokenizer dùng trong dòng GPT từ đầu
- Bao gồm quá trình huấn luyện dựa trên Byte Pair Encoding(BPE)
- Tự cài đặt chức năng chuyển đổi chuỗi↔token (encode/decode)
- Phân tích qua ví dụ rằng một phần nguyên nhân của các hành vi bất thường ở LLM nằm ở giai đoạn tokenization
- Bao gồm thảo luận về khả năng loại bỏ tokenizer
Trạng thái triển khai
- Khóa học hiện đang tiếp tục (ongoing) và sẽ còn được tải lên thêm video
1 bình luận
Ý kiến trên Hacker News
Trước đó tôi cũng đã tiếp xúc với nhiều tài liệu như sách về deep learning, khóa học Coursera, lớp ở đại học, khóa fast.ai, v.v., nhưng hầu như không dùng trong công việc thực tế.
Nhưng series này là nội dung giúp xây dựng trực giác tốt nhất trong tất cả những gì tôi từng xem cho đến nay. Hầu như không có phần thừa, và cũng không hề nhàm chán.
Giờ nếu ai hỏi tôi muốn học các nguyên lý mức thấp của DNN thì đây là thứ tôi sẽ đề xuất đầu tiên.
Nếu bạn đến từ lĩnh vực lân cận thì có thể sẽ thấy hơi chậm, nhưng dù vậy vẫn luôn thú vị.
Tôi đang nghiên cứu mô hình hóa dữ liệu không-thời gian để xây dựng mô hình dự đoán cho hệ thống giao thông đô thị. Tôi cũng tự xây dựng hạ tầng ML và đang chuẩn bị một ứng dụng triển khai nó lên các luồng sự kiện giao thông thực tế.
Tôi đã học online trên Deeplearning.ai và skills.google; bên đầu thì hơi có cảm giác lỗi thời, còn bên sau xử lý khá tốt cảm giác thực chiến như tối ưu GPU·TPU.
Nhưng thứ thực sự biến tôi thành người làm thực tế là cuốn Deep Learning with Python của Francois Chollet, người sáng lập Keras. Cuốn sách này giải thích rõ các khái niệm trên nền lịch sử 70 năm của deep learning, đồng thời còn có cả công thức để tự triển khai GPT hay mô hình Diffusion.
Bài học cốt lõi là: deep learning là nghệ thuật nhiều hơn là khoa học. Cần rất nhiều luyện tập, và bạn không thể giải thích kết quả một cách hoàn hảo.
Sách cũng có notebook ví dụ cho TensorFlow, PyTorch, Jax. Nhờ đó giờ tôi đã đủ tự tin để tái hiện abstract của các bài báo và triển khai mô hình vào production.
Nếu học hết tài liệu này thì có thể đạt đến mức nào?
Liệu có đủ để tự làm gì đó hoặc tham gia thảo luận không? Hay chỉ dừng ở mức hiểu khái niệm?
Tôi cũng tò mò giới hạn và khác biệt của những người làm nghiên cứu nằm ở đâu.
Tôi đang học Deep RL Course, và đến giờ thấy khá trực quan. Chỉ là khi đến phần toán thì chắc sẽ hơi vất vả.
Dù vậy tôi vẫn có thể hiểu được quá trình triển khai backprop và tiny GPT. Bài giảng của Karpathy rất xuất sắc trong việc giúp người học nắm được nguyên lý nền tảng.
Tuy nhiên gần như không có thực hành với thư viện, nên khóa học bạn nhắc tới có thể phù hợp hơn cho công việc thực tế.
Hệ thống chấm điểm tự động quá hình thức, đến mức tôi phải gượng ép viết câu chữ chỉ để khớp đáp án. Hiệu quả học tập giảm đi và rất tốn thời gian.
Trong khi đó, video của Karpathy thực sự là tài liệu quý như ngọc.
Vì vậy việc học này có thể sẽ không trực tiếp chuyển thành năng lực thực chiến trong công việc.
Thay vào đó, tôi đề xuất một video khác của Karpathy: Deep Dive into LLMs like ChatGPT
Neural Network from Scratch in Python (NumPy)
No local GPU? No problem – running Karpathy’s NanoGPT on Modal.com
Modal.com and NanoGPT continued – producing output using Tiktoken for bigger tokens
Nếu cơ chế cơ bản của neural network thấy khó, tôi khuyên cứ xem lướt một lần rồi quay lại sau. Đến lần xem thứ hai bạn sẽ hiểu tốt hơn nhiều.
Video giải thích nguyên lý của autograd, tức là cách PyTorch tự động tính đạo hàm ở bên trong.
Ngày trước TensorFlow hay Torch buộc bạn phải tự định nghĩa hàm đạo hàm cho từng layer, nhưng PyTorch thì ghi lại mã Python trong lúc chạy để tự tạo graph và tính đạo hàm.
Hiểu được điều này thì bạn sẽ biết PyTorch vận hành nội bộ như thế nào.
Nhưng đa số người dùng thực ra không cần biết bên trong đó vẫn có thể dùng model rất tốt.
Nếu bạn là người mới hoàn toàn, tôi khuyên học khóa Coursera Introduction to ML của Andrew Ng. Tôi không rõ bản mới nhất ra sao, nhưng ông ấy là một nhà giáo dục rất giỏi.
cs231n là một trong những khóa học hay nhất, nhưng cái này có vẻ chồng lấn khá nhiều nên tôi cứ để đó. Có lẽ phần transformer là phần được bổ sung thêm.
Nó giúp bạn hiểu một cách trực quan vì sao gradient descent và normalization lại hoạt động, đồng thời đi khá sâu vào động lực học của quá trình huấn luyện.
Nó giúp bạn phát triển cảm giác để đánh giá xem model có đang học đúng cách hay không.