1 điểm bởi GN⁺ 3 giờ trước | 1 bình luận | Chia sẻ qua WhatsApp
  • Mô hình ngôn ngữ là nền tảng của các ứng dụng NLP hiện đại, mở ra một mô hình mới trong đó một hệ thống đa dụng có thể xử lý nhiều tác vụ con khác nhau
  • Khóa học này giúp người học tự tay triển khai toàn bộ quy trình phát triển mô hình ngôn ngữ, từ thu thập và làm sạch dữ liệu cho tiền huấn luyện, xây dựng Transformer, huấn luyện cho tới đánh giá trước khi triển khai
  • Bài tập bắt đầu từ việc hiện thực tokenizer, kiến trúc mô hình và optimizer, rồi mở rộng sang tối ưu GPU, hiện thực FlashAttention2 bằng Triton, và cả mã huấn luyện phân tán
  • Để theo học cần có kỹ năng Python và kỹ nghệ phần mềm vững vàng, quen với PyTorch, các khái niệm hệ thống như phân cấp bộ nhớ, cùng kiến thức giải tích, đại số tuyến tính, xác suất thống kê và machine learning
  • Đây là lớp học 5 unit thiên mạnh về triển khai, hạn chế tham khảo mã có sẵn và việc dùng LLM để giải trực tiếp, đồng thời khuyến nghị debug trên CPU trước rồi mới huấn luyện và benchmark trên GPU

Mục tiêu và phạm vi của khóa học

  • Mô hình ngôn ngữ là nền tảng cốt lõi của các ứng dụng xử lý ngôn ngữ tự nhiên (NLP) hiện đại, đồng thời mở ra một mô hình mới trong đó một hệ thống đa dụng có thể xử lý nhiều tác vụ con
  • Khi các lĩnh vực AI, ML và NLP tiếp tục phát triển, việc hiểu sâu về mô hình ngôn ngữ ngày càng trở nên quan trọng với cả nhà khoa học lẫn kỹ sư
  • Lấy cảm hứng từ các môn học hệ điều hành xây dựng toàn bộ hệ điều hành từ đầu, khóa học này cho sinh viên đi qua toàn bộ quy trình tự phát triển một mô hình ngôn ngữ
  • Phạm vi bao gồm thu thập và làm sạch dữ liệu tiền huấn luyện, xây dựng mô hình Transformer, huấn luyện mô hình, và đánh giá trước khi triển khai

Năng lực yêu cầu

  • Phần lớn bài tập được thực hiện bằng Python và cung cấp ít scaffolding hơn các môn AI khác
  • Khối lượng mã cần viết nhiều hơn ít nhất một bậc so với các môn học khác, nên kỹ năng Python và kỹ nghệ phần mềm là cực kỳ quan trọng
  • Một phần lớn công việc là chạy mô hình ngôn ngữ thần kinh nhanh và hiệu quả trên GPU của nhiều máy
  • Khóa học kỳ vọng người học rất quen thuộc với PyTorch và các khái niệm hệ thống cơ bản như phân cấp bộ nhớ
  • Cần thành thạo ký hiệu và phép toán ma trận, vector, xác suất, phân phối Gaussian, trung bình, độ lệch chuẩn, cùng nền tảng machine learning và deep learning
  • Đây là lớp học 5 unit với tỷ trọng triển khai rất cao, nên cần dành đủ thời gian

Cấu trúc bài tập

  • Assignment 1 Basics hiện thực tokenizer, kiến trúc mô hình và optimizer cần thiết để huấn luyện một mô hình ngôn ngữ Transformer tiêu chuẩn, rồi huấn luyện một mô hình ngôn ngữ tối thiểu
  • Assignment 2 Systems dùng công cụ nâng cao để profiling và benchmark mô hình cùng các layer của Assignment 1, tối ưu FlashAttention2 bằng bản hiện thực Triton riêng, và xây dựng mã huấn luyện phân tán hiệu quả về bộ nhớ
  • Assignment 3 Scaling giúp hiểu chức năng của từng thành phần trong Transformer và khớp scaling law để dự đoán khả năng mở rộng mô hình bằng cách truy vấn API huấn luyện
  • Assignment 4 Data biến các bản dump Common Crawl thô thành dữ liệu tiền huấn luyện có thể sử dụng được, đồng thời cải thiện hiệu năng mô hình bằng lọc và loại bỏ trùng lặp
  • Assignment 5 Alignment and Reasoning RL áp dụng supervised fine-tuning và reinforcement learning để huấn luyện LM biết suy luận khi giải toán
  • Optional Part 2 của Assignment 5 hiện thực và áp dụng các phương pháp căn chỉnh an toàn như DPO

GPU compute và chi phí

  • Nếu tự học tại nhà, có thể dùng GPU compute từ các nhà cung cấp cloud để hoàn thành bài tập
  • Tính đến ngày 28/3/2026, giá niêm yết công khai cho một GPU B200 là Modal 6.25 USD/giờ, Lambda Labs 6.69 USD/giờ, RunPod 4.99 USD/giờ, Nebius 5.50 USD/giờ hoặc 3.05 USD/giờ với spot, và Together 7.49 USD/giờ
  • Modal cung cấp 30 USD compute miễn phí mỗi tháng, chỉ tính phí cho phần compute thực dùng, và giúp đơn giản hóa việc chuyển từ phát triển cục bộ sang thí nghiệm GPU quy mô lớn
  • Để tiết kiệm chi phí và tăng tính tiện lợi, khóa học khuyến nghị trước tiên hãy debug tính đúng đắn của phần hiện thực trên CPU, sau đó mới dùng số lượng GPU được bài tập đề xuất cho các lần chạy huấn luyện hoặc benchmark tính toán GPU

Tổ chức lớp học và quy định nộp bài

  • Bài giảng diễn ra vào thứ Hai và thứ Tư từ 3:00–4:20pm tại Skilling Auditorium, và bản ghi hình được cung cấp trong YouTube playlist
  • Mọi câu hỏi liên quan đến lớp học phải được đặt trong kênh Slack công khai, và mọi thông báo cũng sẽ được đưa trên Slack
  • Tất cả bài tập phải nộp qua Gradescope trước hạn chót, không chấp nhận nộp qua email
  • Có thể nộp lại bao nhiêu lần tùy ý trước hạn, và chỉ bài nộp cuối cùng mới được chấm
  • Nộp một phần vẫn tốt hơn là không nộp
  • Mỗi sinh viên có thể dùng 6 late day, trong đó 1 late day kéo dài hạn chót thêm 24 giờ
  • Mỗi bài tập tối đa chỉ được dùng 3 late day
  • Nếu cho rằng có lỗi khách quan trong chấm điểm, sinh viên có thể gửi yêu cầu chấm lại trên Gradescope trong vòng 3 ngày sau khi công bố điểm

Chính sách cộng tác và công cụ AI

  • Có thể lập nhóm học tập, nhưng mỗi sinh viên phải tự hiểu và tự hoàn thành bài tập của mình, đồng thời mỗi người nộp một bài riêng
  • Nếu làm việc theo nhóm, cần ghi tên các thành viên trong nhóm học tập ở đầu bài tập
  • Có thể dùng prompt cho LLM như ChatGPT để hỏi các câu hỏi lập trình cấp thấp hoặc câu hỏi khái niệm cấp cao về mô hình ngôn ngữ
  • Cấm dùng LLM trực tiếp để giải bài
  • Khi làm bài tập, khóa học đặc biệt khuyến nghị tắt các công cụ tự động hoàn thành bằng AI như Cursor Tab hay GitHub CoPilot; các tính năng tự động hoàn thành không dùng AI như gợi ý tên hàm thì được phép
  • Tài liệu môn học đã bao gồm những gì cần thiết cho việc tự triển khai, vì vậy không được xem mã hiện thực có sẵn trên mạng trừ khi handout bài tập cho phép riêng

1 bình luận

 
Ý kiến trên Hacker News
  • Gần đây tôi đã học xong phiên bản bài giảng năm 2025, xem video và làm hầu hết bài tập, nhưng bỏ qua một số phần tốn kém. Chỉ riêng hai bài tập đầu đã đòi hỏi rất nhiều suy nghĩ và gỡ lỗi, và dù đã có chút nền tảng về deep learning, tôi vẫn phải tranh thủ thời gian sau giờ làm và cuối tuần trong vài tháng mới xong
    Rất khó tưởng tượng sinh viên Stanford có thể nộp bài tập theo chu kỳ 2 tuần một lần như thế nào. Đội ngũ giảng viên và trợ giảng đã đầu tư rất nhiều công sức vào thiết kế môn học, các slide phản ánh xu hướng mới nhất và những bài tập xuất sắc; cảm giác thành tựu rất lớn khi được tự tay xây dựng từ các thành phần nhỏ đến một mô hình ngôn ngữ thực sự, đồng thời kiểm chứng các phần chính của pipeline LLM và nhìn thấy toàn bộ khớp nối với nhau như thế nào
    Tuy vậy, tôi ước gì yêu cầu về môi trường chạy được hướng dẫn rõ ràng hơn. Bộ harness hoạt động tốt nhất trên Linux + NVIDIA GPU và dường như kỳ vọng các phiên bản CUDA hay kiến trúc nhất định; điều này có thể là hiển nhiên với giới nghiên cứu nhưng lại hiếm trong môi trường cá nhân. Nếu muốn học theo ở nhà thì phương án thứ hai là Windows + WSL2 + NVIDIA GPU hoặc thuê GPU trên nhiều nền tảng, nhưng cả hai đều không dễ hay rẻ. Sẽ rất tốt nếu có hướng dẫn cho những người không có GPU tương thích để vẫn tận dụng khóa học tối đa, và tôi cũng đã học được rằng trên Mac OS, nếu không cẩn thận với phân tích bộ nhớ thì mã Python có thể treo máy và buộc phải khởi động lại

    • Tôi xác nhận điều này từ góc nhìn trợ giảng. Giờ chúng tôi đã có thêm nguồn lực để thử nghiệm trên nhiều môi trường hơn và sẽ cố gắng hết sức. Việc bị treo do dùng quá nhiều bộ nhớ trong mã tự viết có thể xảy ra ở bất kỳ đâu, nhưng tôi nghĩ chúng tôi có thể hướng dẫn chặt chẽ hơn để đạt được mức sử dụng bộ nhớ giới hạn trong bài tập tokenizer
      Ngoài ra, chi phí thuê GPU trong các bình luận này cũng có phần bị thổi phồng. Phần lớn quá trình phát triển có thể làm cục bộ, rồi chỉ chạy GPU on-demand trong thời gian ngắn khi cần. Bài tập 1 có thể chạy hoàn toàn trên máy cục bộ mà không cần GPU, và bài tập 1–2 phần lớn cũng giải quyết được chỉ với vài giờ thuê. Ngay cả khi không quá cẩn thận mà cứ tiếp tục dùng GPU thuê, tổng chi phí cũng chỉ khoảng 200 USD; nếu sẵn sàng giảm quy mô bài toán thì hoàn toàn có thể hạ xuống dưới 50 USD. Có lẽ chúng tôi có thể trình bày rõ hơn các điểm này và cách điều chỉnh bằng biểu đồ
      Nếu có thêm phản hồi hoặc gặp vấn đề, sẽ rất tốt nếu bạn mở issue trên kho mã, vì rất khó sửa những vấn đề mà chúng tôi không biết đến
  • Vài ngày trước tôi đã thử dùng Claude để triển khai một bản cải tiến của gpt-1. Tôi không phải kỹ sư machine learning mà chỉ là một backend engineer bình thường, và kết quả cuối cùng là thứ gì đó pha trộn giữa gpt-1 và modded-nanogpt của KellerJordan
    Tôi có thể tái hiện kết quả của bài báo gpt-1 gốc bằng PC gaming của mình, và VRAM cũng không cần nhiều. Tôi đã tái hiện được phần lớn kết quả chỉ sau 1 giờ huấn luyện trên NVIDIA GeForce RTX 2060 SUPER, nên nếu bạn quan tâm đến tiền huấn luyện LLM thì tôi khuyên nên thử theo cách tương tự
    Mã nguồn ở đây: https://github.com/epoyraz/modded-gpt-1
    Hoặc bạn cũng có thể cứ hỏi Claude 4.8 hay Codex 5.5

  • Tôi có nhiều ký ức đẹp về cs224d do richardsocher từng giảng. Môn này được tạo ra từ thời trước Transformer nên giờ hơi cũ, nhưng vào thời đó đây là một khóa nhập môn rất tuyệt về cách áp dụng deep learning vào xử lý ngôn ngữ tự nhiên
    https://cs224d.stanford.edu

    • Tôi cũng có cảm giác tương tự. Khi đó tôi nhận ra tiềm năng của internet và thấy rằng ngay cả khi không phải nghiên cứu sinh tại một đại học nghiên cứu hàng đầu, bạn vẫn có thể học được những nội dung ở tuyến đầu
  • Họ gọi đây là “GPU compute cho tự học”, nhưng B200 được khuyến nghị lại có giá từ 4,99 USD mỗi giờ. Tôi không chắc liệu lúc mới bắt đầu có thực sự cần như vậy không
    Tôi cũng đang tự xây dựng LLM từ đầu, và ở các giai đoạn đầu tôi chưa cần gì vượt quá 4090 trên Vast.ai

    • Từ góc nhìn trợ giảng thì hoàn toàn không phải vậy. Với bài tập đầu tiên, chúng tôi đã ghi rõ các phần thu gọn để có thể chạy bằng tính toán cục bộ, thậm chí cả GPU dòng M. Trong bài tập 2 có một vài phần cần hỗ trợ Triton từ GPU, nhưng tất cả đều có thể điều chỉnh để phù hợp với các GPU rẻ hơn nhiều
      Năm nay chúng tôi may mắn có thể cung cấp Blackwell GPU cho sinh viên Stanford, nên phần mô tả bài tập chủ yếu được viết theo chuẩn đó
    • Tôi thấy khá giống FPGA. Phần cứng cần cho môi trường vận hành có thể tương đối nhỏ, vì mô hình hay bitstream đưa vào vận hành thường đã được tối ưu kích thước rất mạnh để chỉ giữ lại những gì cần cho trường hợp sử dụng mục tiêu
      Ngược lại, khi học cách thiết kế và thử nghiệm compute kernel hay IP block, phần cứng cần thiết phải mạnh hơn hoặc có dung lượng lớn hơn nhiều. Các sản phẩm thử nghiệm cố ý đi ngược với tối ưu hóa, và ở mọi giai đoạn đều được làm cho dễ đọc, dễ quan sát và dễ debug, nên mô hình hay bitstream kết quả sẽ phình to đáng kể và không được tối ưu
      Việc chạy một mô hình do người khác hoàn thiện và tối ưu để dùng trên thiết bị như 4090 với prompt của riêng mình cũng là một kiểu thử nghiệm, nhưng có thể làm với chi phí rẻ. Nó giống như nạp bitstream do người khác thiết kế và tổng hợp cho một FPGA giá 20 USD lên chính FPGA đó rồi đưa tín hiệu đầu vào của riêng bạn vào. Nhưng kiểu thử nghiệm bạn sẽ làm trong khóa học này khi học tự thiết kế mô hình của mình thì không phải loại đó
    • Việc các tài nguyên cần thiết lại không được cơ sở giáo dục cung cấp nghe có vẻ kỳ lạ
    • Không nhất thiết phải có GPU để huấn luyện LLM của riêng bạn
    • Hoài nghi như vậy là đúng. Tôi đã huấn luyện một mô hình ngôn ngữ nhỏ khá ổn trên TinyStories bằng 4060Ti 16GB mà không gặp vấn đề gì. Chỉ khi bạn muốn thử xem ý tưởng có mở rộng lên các mô hình lớn hơn mức “vẫn có thể coi là nhỏ” hay không thì vấn đề mới bắt đầu xuất hiện
  • Bài giảng này khá thú vị, nhưng mình cũng tò mò về điều kiện tiên quyết. Có nói là cần quen với các kiến thức cơ bản về machine learning và deep learning, nên mình muốn biết có tài liệu nào phù hợp để tự học theo hướng triển khai, hoặc ai đã từng học qua bản ghi bài giảng Stanford về chủ đề này không

  • Thật sự rất tuyệt. Trong một tháng qua mình đã làm điều gì đó tương tự, và tự đặt thử thách là không dùng bất kỳ thư viện nào ngoài Python standard library, thậm chí cũng không dùng numpy
    Mình bắt đầu từ Word2Vec, rồi tạo RNN, LSTM, và hiện giờ đã triển khai được khoảng một nửa kiến trúc transformer

  • Mình đã lập một nhóm để cùng học lớp này bằng các video YouTube và tài liệu bài giảng được công khai online. Khó nhưng rất xứng đáng, và bọn mình học với nhịp độ 1 video bài giảng mỗi tuần
    Bắt đầu với hơn 30 người, nhưng đến buổi cuối chỉ còn lại 8 người

  • Mình muốn thử, nhưng lo là hiện tại vẫn còn thiếu năng lực cần thiết. Có lẽ một ngày nào đó sẽ làm được

    • Vậy thì cứ bắt đầu từ một trong các môn tiên quyết thôi
  • Mình tò mò không biết GPU tối thiểu để theo khóa học này ở nhà là gì. Mình có 5080 16GB, liệu thật sự có cần hơn mức đó không?

    • Phần đầu có vẻ ngay cả chip M1 cũng làm được, còn phần hai thì có vẻ cần hỗ trợ Triton, nên 5080 chắc là ổn
  • Mình đã tự làm riêng hai bài tập đầu trong suốt một năm và học được rất nhiều. Mình tò mò sau đó bạn đã học những khóa nào