SmolGPT: triển khai PyTorch tối giản để huấn luyện một LLM nhỏ từ đầu
(github.com/Om-Alve)- Dự án huấn luyện LLM đơn giản dựa trên PyTorch, được thiết kế cho mục đích giáo dục, áp dụng huấn luyện hiệu quả và các kỹ thuật lấy mẫu hiện đại
Tính năng
- Codebase tối giản: Được triển khai bằng PyTorch, không có các tầng trừu tượng phức tạp
- Kiến trúc hiện đại: Mô hình GPT, bao gồm Flash Attention, RMSNorm, SwiGLU và các kỹ thuật lấy mẫu hiệu quả
- Tính năng huấn luyện:
- Độ chính xác hỗn hợp (bfloat16/float16)
- Tích lũy gradient
- Giảm learning rate với warmup
- Weight decay và gradient clipping
- Hỗ trợ dataset: Tích hợp xử lý dataset TinyStories
- Tokenizer tùy chỉnh: Tích hợp huấn luyện tokenizer SentencePiece
Cài đặt
- Python 3.8+
- PyTorch 2.0+ và CUDA
- Khuyến nghị GPU đời mới
Bắt đầu nhanh 🚀
Tùy chọn 1: Toàn bộ chu trình huấn luyện
- Chuẩn bị dataset
- Bắt đầu huấn luyện
- Sinh văn bản
Tùy chọn 2: Sử dụng mô hình đã huấn luyện trước
- Tải xuống tài nguyên
- Chạy suy luận
Chi tiết mô hình đã huấn luyện trước
- Được huấn luyện trên dataset TinyStories
- Từ vựng 4096 token, transformer 8 head, 8 lớp, chiều nhúng 512
- Huấn luyện trong 18,5 giờ với khoảng 400 triệu token
- Validation loss: 1.0491
Cấu hình phần cứng huấn luyện
- GPU: NVIDIA L4 Tensor Core
- vCPU: 16
- RAM: 64 GB
- VRAM: 24 GB
Lưu ý: Phần triển khai này được tạo ra cho mục đích giáo dục, tham khảo các thực hành huấn luyện LLM hiện đại. Trong môi trường production, nên mở rộng kích thước mô hình và dataset.
1 bình luận
Ý kiến trên Hacker News
Một người dùng cho biết khi triển khai GPT bằng C, họ đã học được tầm quan trọng của việc quản lý bộ nhớ và dữ liệu. Dự án đó gồm khoảng 1500 dòng mã và họ cũng chia sẻ liên kết GitHub
Một người dùng khác giải thích rằng bước tiếp theo là tự triển khai bằng
numpy. Họ nhấn mạnh rằng có thể bắt đầu với các tầng trừu tượng mạnh, rồi dần gỡ bỏ chúng để hiểu hoàn toàn hệ thốngMột người dùng chia sẻ dự án sử dụng notebook trên Google Colab, mất khoảng 2 giờ trên GPU A100. Họ cho biết dự án có thể chạy cả với tài khoản miễn phí
Có người giải thích rằng trên GitHub đã có nhiều dự án như nanoGPT của Andrej Karpathy, và cũng có những dự án khác đã triển khai MoE
Một người dùng hỏi liệu có thể huấn luyện một mô hình cụ thể trên một bộ dữ liệu cụ thể rồi kiểm thử kết quả hay không. Họ cho biết đang tìm một dự án mã nguồn mở, muốn biết có thể dùng GPU hay không, và muốn một container Docker có thể thay thế bằng CPU
Một người dùng khác chia sẻ câu chuyện tự triển khai bằng tokenizer đa kênh của riêng mình. Họ nói tên nhân vật chính lặp lại quá thường xuyên nên nghi ngờ có lỗi
Om Alve gửi lời cảm ơn, nói rằng bài đăng đã lan truyền mạnh và điều đó khiến công sức bỏ ra trở nên xứng đáng
Có ý kiến cho rằng thật thú vị khi công nghệ này có thể được triển khai chỉ với vài trăm dòng mã. Họ cũng gợi ý thử đoán xem các mô hình tiên tiến nhất có bao nhiêu dòng mã
Có người nói rằng nó không liên quan đến SmolLM và chia sẻ liên kết blog của HuggingFace
Một người dùng hỏi liệu có thể chia sẻ ví dụ về bộ dữ liệu huấn luyện và các trường hợp sử dụng hay không