2 điểm bởi GN⁺ 2025-08-21 | 1 bình luận | Chia sẻ qua WhatsApp
  • Gemma 3 270M cung cấp mã ví dụ để có thể tự triển khai chỉ bằng PyTorch
  • Kho lưu trữ này phục vụ mục đích giáo dục nhằm giúp hiểu rõ cấu trúc và quy trình huấn luyện của LLM và tự mình thực hành
  • Mã có thể chạy mà không cần framework LLM bên ngoài bổ sung, đồng thời có thể thực thi ngay cả trong môi trường notebook thông thường
  • Bao gồm nhiều ví dụ bổ sung và tài liệu thực hành giúp hỗ trợ thiết thực cho việc học tập của nhà phát triển và nhà nghiên cứu
  • Chỉ cần có kiến thức cơ bản về Python, bất kỳ ai cũng có thể từng bước trải nghiệm nguyên lý và chi tiết triển khai của LLM

Ý nghĩa và điểm khác biệt của dự án mã nguồn mở

Kho lưu trữ này cung cấp toàn bộ mã cần thiết để trực tiếp triển khai, tiền huấn luyện và tinh chỉnh các mô hình ngôn ngữ lớn thuộc họ GPT. Khác với phần lớn các ví dụ về mô hình ngôn ngữ lớn, dự án này cho phép tự thử nghiệm và huấn luyện trong môi trường cục bộ chỉ bằng PyTorch mà không cần thêm thư viện chuyên dụng cho LLM từ bên ngoài. Đặc biệt, ngay cả các mô hình gọn nhẹ như Gemma 3 270M cũng được cung cấp kèm mã chi tiết, tạo ra lợi thế thực tiễn giúp các nhà nghiên cứu hoặc lập trình viên mới bắt đầu có thể lần theo cấu trúc triển khai thực tế để nắm vững nguyên lý một cách sâu sắc.

Nội dung chính và cấu trúc kho lưu trữ

  • Cung cấp kho mã chính thức của cuốn sách "Build a Large Language Model (From Scratch)"
  • Bao gồm mã ví dụ theo từng bước, bao quát toàn bộ các giai đoạn từ tự triển khai LLM kiểu GPT đến tiền huấn luyện và tinh chỉnh
  • Trình bày chi tiết logic triển khai mô hình ngôn ngữ lớn, đồng thời đưa ra cách tiếp cận dễ làm theo ngay cả với người mới thông qua giải thích rõ ràng, sơ đồ, mã mẫu ở từng bước
  • Giải thích chi tiết phương pháp huấn luyện mô hình quy mô lớn và quy trình triển khai thực tế, giúp người học cảm nhận và tiếp cận các phương pháp đã được ứng dụng trong những dịch vụ thực tế như ChatGPT
  • Bao gồm ví dụ liên quan đến nạp trọng số mô hình đã tiền huấn luyện / tinh chỉnh

Hướng dẫn cấu trúc kho lưu trữ

  • Cung cấp các liên kết tham khảo và thực hành như kho mã nguồn chính thức, thông tin sách, ISBN
  • Mỗi chương đều gồm notebook Jupyter và script Python, cho phép tham khảo cả thực hành theo từng bước, bài tập và tài liệu bổ sung
  • Ngoài ra còn có tài liệu bổ sung và ví dụ thưởng như cơ chế Attention, Tokenizer, tối ưu hiệu năng, phân tích FLOPS, tinh chỉnh siêu tham số, chuyển đổi mô hình Llama và nhiều nội dung thực hành hữu ích có thể áp dụng trực tiếp trong công việc

Kiến thức nền và yêu cầu phần cứng

  • Chỉ cần hiểu biết cơ bản về lập trình Python là có thể nắm được nguyên lý và thực hành với LLM
  • Không bắt buộc phải quen thuộc với PyTorch, chỉ cần biết cú pháp cơ bản là đủ
  • Có thể chạy ví dụ trên notebook thông thường mà không cần thiết bị cấu hình cao riêng biệt
  • Nếu có GPU, hệ thống sẽ tự động nhận diện để tăng tốc độ huấn luyện

Tài liệu bổ sung và nội dung tăng cường thực hành

  • Mỗi chương đều cung cấp mã thực hành và notebook bài tập
  • Hỗ trợ học tập tự định hướng với sách câu đố PDF miễn phí dài 170 trang (mỗi chương khoảng 30 câu hỏi)
  • Trong khóa học video (17 giờ 15 phút, trên nền tảng xuất bản Manning), tác giả trực tiếp triển khai mã và giải thích các nội dung chính của toàn bộ cuốn sách

Hướng dẫn tham gia nghiên cứu và cộng đồng

  • Câu hỏi, ý kiến và thảo luận đang được chia sẻ sôi nổi trên diễn đàn Manning và GitHub Discussions
  • Để giữ tính nhất quán giữa sách và mã, mã chính của kho lưu trữ hạn chế đóng góp từ bên ngoài; nên thảo luận riêng đối với các đề xuất bổ sung hoặc chỉnh sửa

Hướng dẫn tham khảo và trích dẫn

  • Dự án và mã này có thể được sử dụng trực tiếp cho nghiên cứu phát triển và thử nghiệm LLM
  • Nếu trích dẫn trong bài báo hoặc blog kỹ thuật, có hướng dẫn ví dụ theo chuẩn Chicago style và BibTeX

Tóm tắt

Kho lưu trữ này mang đến cơ hội tự triển khai và thực hành các mô hình ngôn ngữ lớn như Gemma 3 270M chỉ bằng PyTorch. Khác với các dự án mã nguồn mở LLM hiện có, ưu điểm lớn nhất là có thể học và thử nghiệm các nguyên lý cốt lõi cùng toàn bộ luồng xử lý trong môi trường đơn giản nhất. Tất cả đều được tối ưu cho lập trình viên và nhà nghiên cứu mới bắt đầu muốn hiểu và thực hành với LLM, với cấu trúc, ví dụ, tài liệu bổ sung và bài tập đầy đủ.

1 bình luận

 
GN⁺ 2025-08-21
Ý kiến trên Hacker News
  • Xin chào, tôi là một trong những người đã xây dựng mô hình này cùng với một đội ngũ tuyệt vời. Tuần trước, khi mô hình này được lên trang chính, tôi đã trả lời khá nhiều câu hỏi. Nếu ở đây có thêm câu hỏi nào, tôi cũng rất sẵn lòng trả lời. Cá nhân tôi rất hào hứng vì giờ đây tất cả mọi người đều có thể tiếp cận mô hình này. Mong mọi người tận dụng nó thật tốt. Tham khảo liên kết Q&A trước đó
    • Tôi tò mò mọi người nghĩ thế nào về việc dùng tới 2/3 tổng số tham số cho phần embedding trong một mô hình nhỏ như thế này. Nếu dùng vocabulary ở mức byte và dồn thêm tham số cho transformer thì có thể tốc độ xử lý token sẽ giảm, nhưng liệu độ chính xác có tăng lên không?
    • Câu hỏi rất cơ bản thôi, nhưng tôi muốn biết vì sao khi chạy mô hình tflite trên GPU trong ứng dụng AI edge gallery thì nó chỉ in ra '[multimodal][multimodal]', còn chạy trên CPU thì lại hoạt động bình thường.
    • Tôi không phải MLE (User Machine Learning Engineer), nên muốn hỏi việc OP tái hiện bằng PyTorch có những ưu và nhược điểm gì.
    • Đây là một LM cỡ nhỏ cực kỳ ấn tượng. Tôi muốn hỏi có thể chia sẻ mô hình này được huấn luyện trên phần cứng nào và mất bao lâu để huấn luyện không?
    • Cảm ơn vì đã làm ra thứ này. Trước đây tôi từng triển khai chatbot Discord bằng BERT, nên rất háo hức với bản nâng cấp 270M tham số này.
  • Tôi muốn biết liệu ai đó (hoặc OP) có thể chia sẻ một quy trình fine-tuning mô hình này để áp dụng vào các tác vụ ngôn ngữ tự nhiên như NER phức tạp hơn hay không. Tuần trước khi Gemma3 270M được công bố, tôi đã thử vài tutorial nhưng không thành công. Phần lớn tutorial đều tập trung vào chat hoặc roleplay, trong khi công việc chính của tôi là trích xuất và chuẩn hóa entity từ PDF, nên rất khó tìm được gợi ý chuyên cho trường hợp này. Tôi nghĩ mô hình này có thể khá phù hợp cho mục đích đó.
    • Nếu là bài toán NER truyền thống (trích xuất entity từ các span token không chồng lấn), thì có lẽ nên dùng mô hình encoder-only như bert-large-NER hoặc encoder-decoder như t5-base-conll03-english. Dù các mô hình dạng encoding gần đây ít được chú ý hơn, chúng vẫn có ưu thế trong các bài toán NLP đã ổn định, không cần sinh văn bản; và với cùng số tham số, có thể kỳ vọng độ chính xác NER của chúng vượt xa mô hình decoder-only.
    • Có thể dùng thư viện Python gemma-llm (dựa trên JAX). Tham khảo tutorial liên quan
    • Không biết bạn đã thử mô hình NER này chưa. Tôi cũng muốn nghe ý kiến xem nó đặc biệt phù hợp với loại use case nào.
  • Tôi tự hỏi liệu việc này có cùng mạch với kiểu dự án trước đây như '<mô hình> inference written in vanilla Go, Python, Java, etc' mà mọi người từng làm không.
  • Theo kinh nghiệm của tôi, tôi là dev chỉ mới dùng các mô hình thương mại lớn (sonnet, ChatGPT, v.v.). Tôi tò mò các mô hình local nhỏ như thế này có thể dùng vào việc gì. Có use case nào dùng ngay được không, hay rốt cuộc vẫn bắt buộc phải có hậu xử lý / huấn luyện bổ sung? Khoảng cách giữa người dùng công cụ thương mại và những người rất rành về mô hình có vẻ khá lớn, nên tôi không rõ phải lấp đầy bước trung gian này thế nào.
    • Các use case phổ biến nhất (ngoài mục đích giáo dục) là:
      • Mô hình riêng tư chạy on-device (độ trễ thấp hơn web API, có thể xử lý ở edge)
      • Nghiên cứu thuật toán (prototype nhanh và rẻ)
      • Các tác vụ phân loại / phân nhóm giá rẻ (không nhất thiết cần decoder LLM nhưng đôi khi phản hồi tự do lại có lợi), kiểm tra độ hợp lý ngữ pháp, router (ví dụ kiểu GPT-5), v.v.
    • Câu hỏi rất hay. Tôi đã viết một câu trả lời dài hơn, có thể tham khảo tại đây liên kết trả lời chi tiết
    • Tóm lại, nó đặc biệt hữu ích cho tóm tắt và các công cụ rất đơn giản. Chạy ở edge, không cần round-trip qua Internet nên chi phí bằng 0.
    • Cũng có tiềm năng cho các mục đích bảo mật và quyền riêng tư.
  • Thật ngạc nhiên là trên CPU của Mac, sau khi áp dụng KV cache + compiler thì tốc độ lại nhanh hơn cả trên GPU A100.
    • Có thể là do mô hình quá nhỏ nên không tận dụng được đầy đủ hiệu năng GPU. Ví dụ, với Qwen3 0.6B thì A100 GPU nhanh hơn, có thể xem ở liên kết tham khảo
    • Việc bản đã biên dịch trên A100 còn chậm hơn eager cho thấy rõ ràng có phần nào đó chưa được tối ưu.
    • Tôi đoán có thể vì CPU và GPU trên Mac dùng chung bộ nhớ, trong khi A100 phải chuyển dữ liệu sang RAM/CPU nếu có phép toán nào đó không được GPU hỗ trợ.
    • Tôi tự hỏi có phải GPU không lấp đầy được waveform để che giấu độ trễ bộ nhớ hay không.
  • Tôi muốn biết embedding 270M này có thể dùng cho mục đích gì, và liệu embedding ở mức token có phù hợp hay mô hình cũng cho ra embedding câu/tài liệu đủ tốt. Nếu muốn dùng embedding câu/tài liệu một cách có ý nghĩa thì có cần fine-tuning riêng không?
  • Nếu huấn luyện toàn bộ mô hình từ đầu, tôi tò mò sẽ mất bao lâu với một cấu hình GPU hợp lý.
    • Để tham khảo, với mô hình 124M khi huấn luyện trên GPU 3090, mỗi batch xử lý khoảng 500 nghìn token, forward + backward mất khoảng 10 giây. Để học hết 6 nghìn tỷ token (lượng dữ liệu huấn luyện của mô hình này) sẽ mất khoảng 4 năm. Nói ngắn gọn là "quá lâu".
    • Còn tùy bạn hiểu "hợp lý" là thế nào, nhưng nói chung nếu huấn luyện pure scratch từ đầu trong môi trường gia đình thì sẽ mất cực kỳ lâu. Đây cũng chính là một trong những lý do mô hình này được phát hành. Giờ đây có thể đạt kết quả thực dụng chỉ bằng fine-tuning trên nhiều loại phần cứng khác nhau mà không cần huấn luyện từ scratch.
  • Tôi muốn biết liệu những mô hình cực nhỏ như thế này có thật sự có chỗ dùng trong thực tế không (ngoài học tập và học thuật).
    • Có chứ! Thực ra nó không chỉ là đồ chơi hay tài liệu minh họa đơn giản, mà còn có giá trị sử dụng thực tế cho các tác vụ lặp đi lặp lại hoặc làm mô hình local nhanh cho lập trình viên / doanh nghiệp. Đây là ví dụ lấy cảm hứng từ trải nghiệm trước đây khi cần xử lý văn bản thời gian thực. Có thể xem tutorial streaming ML dùng bản Gemma trước và video demo. Về lý thuyết, giờ đã có thể tái hiện điều này với Gemma 270M.
    • Nếu fine-tuning bằng LoRa, mô hình cũng có thể cho hiệu năng rất tốt trong những miền cực kỳ cụ thể. Ví dụ:
      • Chỉ trả lời theo một JSON schema nhất định, hoặc phản hồi bằng giọng của một nhân vật cụ thể
      • Phân loại văn bản (ví dụ: email, spam, v.v.)
      • Tóm tắt khối lượng văn bản lớn (email → tiêu đề/slug)
      • Phân loại tag theo các quy tắc định sẵn, content marketing, v.v.
      • Phát hiện spam / trùng lặp / cờ cảnh báo
      • Những mô hình nhỏ "ngốc" như thế này lại có ít kiến thức thế giới hơn, nên cũng ít bịa ra điều vô lý hơn; trong các miền hẹp, đó có thể là một lợi thế.
    • Nó thường cho kết quả đúng trong các bài toán dịch đa ngôn ngữ dựa trên văn bản nguồn (ví dụ: dùng cho hội thoại du lịch). Ví dụ:
      (nguyên văn tiếng Ukraina) Rochechouart là một thành phố của Pháp, nằm ở tỉnh Haute-Vienne thuộc vùng Nouvelle-Aquitaine… dân số 3637 người (2022), cách Paris khoảng 360 km về phía nam, nằm cách Limoges 34 km về phía tây.
      (bản dịch của mô hình) Rochechouart là một thành phố của Pháp, nằm ở tỉnh Haute-Vienne thuộc vùng Nouvelle-Aquitaine. Dân số 3637 người (2022). Cách Paris khoảng 360 km, cách Lyon 34 km.
      (Chính sách hỗ trợ điện mặt trời mái nhà tự dùng của Việt Nam cũng được dịch khá chính xác)
      
      Nguồn wiki: Wikipedia tiếng Ukraina, tin tức Việt Nam
    • Nó hữu ích cho các tác vụ có tương tác với ngôn ngữ tự nhiên, nhưng không kỳ vọng mô hình phải tự mang nhiều kiến thức nội tại. Những mảng mà thông tin được kiểm chứng / truy xuất từ bên ngoài như tool use, embedding, v.v. sẽ phù hợp.
  • Tôi đã bấm vào vì tưởng đây là sản phẩm mới của giao diện 3270, nhưng hóa ra không phải thứ tôi mong đợi.
  • Thật sự là một con người rất đáng nể.