- Giải thích cách tái tạo mô hình GPT-2 (124M) trong 90 phút với chi phí $20 bằng
llm.c
- GPT-2 (124M) là mô hình nhỏ nhất do OpenAI công bố vào năm 2019
- Khi dùng node 8X A100 80GB SXM trên Lambda, chi phí vào khoảng $14/giờ, tổng cộng khoảng $20
- Cũng có thể huấn luyện bằng một GPU duy nhất nhưng sẽ mất nhiều thời gian hơn (4-24 giờ)
So sánh kết quả
- Trên bộ dữ liệu kiểm định FineWeb, mô hình cho hiệu năng tốt hơn checkpoint do OpenAI công bố
- Tuy nhiên, GPT-2 được huấn luyện bằng WebText nên đây không phải là một phép so sánh hoàn toàn công bằng
- Độ chính xác HellaSwag cũng được đo và đạt 29.9, gần với mức 33.7 của GPT-3 Small (124M)
- Đã vượt mức 29.4 của GPT-2 (124M)
- Tuy nhiên ở đây mô hình được huấn luyện với 10B token, trong khi GPT-3 được huấn luyện với 300B token
Thiết lập môi trường tối thiểu
- Cần GPU (khuyến nghị Lambda Labs)
- Hướng dẫn dựa trên Linux x86 64bit Ubuntu 22.04 với CUDA 12
- Cài miniconda rồi cài phiên bản PyTorch nightly (tùy chọn)
- Cài các gói cần thiết cho tokenizer
- Cài cuDNN để tăng tốc (tùy chọn)
- Cài MPI khi dùng nhiều GPU (tùy chọn)
- Tiền xử lý bộ dữ liệu FineWeb 10B token (~1 giờ)
- Biên dịch llm.c (mixed precision, dùng cuDNN FlashAttention)
Chạy huấn luyện
- Ví dụ lệnh khi dùng một GPU
- Chạy bằng
mpirun khi dùng nhiều GPU (8 chiếc)
- Giải thích các tham số chính
-i, -j : đường dẫn dữ liệu huấn luyện/kiểm định
-o : đường dẫn lưu log và checkpoint
-e : khởi tạo mô hình (GPT-2 depth 12)
-b : kích thước micro-batch (giảm nếu thiếu bộ nhớ)
-t : độ dài chuỗi tối đa
-d : tổng kích thước batch (tham khảo bài báo GPT-3)
-r : thiết lập Recompute (tiết kiệm bộ nhớ)
-z : ZeRO-1 (sharding trạng thái optimizer)
- Các thiết lập khác như weight decay, learning rate, chu kỳ checkpoint, v.v.
Quá trình huấn luyện
- Với 10B token huấn luyện và kích thước batch 0.5M, dự kiến khoảng 20K bước
- Trên GPU A100 40GB PCIe, hệ thống sẽ in ra thời gian mỗi bước, MFU và thông lượng token
- Ở giai đoạn đầu có hiện tượng gradient exploding nhưng được xử lý bằng clipping
Trực quan hóa
- Cung cấp notebook Jupyter để phân tích file log và trực quan hóa đường cong huấn luyện
Tokenizer
- Cần để chuyển token số nguyên thành chuỗi
- Có thể tạo bằng script PyTorch
Sampling
- Hiện tại chưa được tối ưu cho suy luận
- Có thể thực hiện unconditional/conditional sampling với một vài chỉnh sửa mã
Cấu trúc mã nguồn
- Phần lớn phần triển khai nằm trong file
train_gpt2.cu
- 500 dòng đầu dùng để thiết lập MPI, NCCL, cuDNN, cuBLAS, v.v.
- 1500 dòng tiếp theo là forward/backward của Transformer
- 1000 dòng tiếp theo là phần triển khai mô hình GPT-2
- 1000 dòng cuối là vòng lặp huấn luyện, phân tích tham số, v.v.
Mô hình 350M
- 10B token là chưa đủ, nên dùng 30B token
- Với 8X A100 80GB, thời gian mất 14 giờ, chi phí khoảng $200
FAQ
- Có sampling được không: Có, nhưng kém hiệu quả.
- Có thể chat không: Hiện tại chỉ hỗ trợ pretraining, chưa thể fine-tune cho chat.
- Huấn luyện phân tán đa node: Có thể, nhưng vẫn chưa được kiểm thử.
- Có tính xác định ở mức bit không: Gần như xác định, nhưng cần vá một số kernel.
- Có thể huấn luyện FP8 không: Hiện đang huấn luyện bằng BF16, FP8 sẽ sớm được hỗ trợ.
- Có hỗ trợ GPU không phải NVIDIA không: Hiện chỉ hỗ trợ C/CUDA.
Ý kiến của GN⁺
- GPT-2 là một mô hình rất quan trọng, đặt nền móng cho các LLM hiện đại. Sau này GPT-3 hay các LLM khác cũng không khác biệt quá nhiều so với GPT-2.
- Dự án này giúp bất kỳ ai cũng có thể tự huấn luyện một mô hình cấp độ GPT-2 với chi phí hợp lý. Điều này có vẻ sẽ rất hữu ích để nâng cao mức độ hiểu biết về LLM.
- Tuy nhiên, hiện tại nó vẫn chưa được tối ưu cho suy luận nên còn hạn chế nếu muốn dùng cho dịch vụ thực tế. Việc fine-tune thành mô hình hội thoại cũng chưa được hỗ trợ.
- Hiện dự án chỉ hỗ trợ GPU NVIDIA, nhưng có thể kỳ vọng trong tương lai sẽ hỗ trợ thêm nhiều nền tảng như AMD hay Apple Silicon.
- Các dự án mã nguồn mở có mục tiêu tương tự gồm Megatron-LM, DeepSpeed, FairSeq, v.v. Mỗi dự án đều có ưu và nhược điểm riêng nên có thể chọn theo nhu cầu sử dụng.
- Đây là một dự án rất đáng khích lệ xét trên khía cạnh thúc đẩy hệ sinh thái phát triển LLM. Rất đáng chờ đợi các bước tiếp theo.
Chưa có bình luận nào.