"Đây là một trong những điều điên rồ nhất tôi từng viết." Andrej Karpathy, cựu giám đốc AI tại Tesla và là thành viên sáng lập của OpenAI, vừa ra mắt dự án mã nguồn mở mới nhất của mình, một kho lưu trữ có tên nanochat. Tính đến thời điểm hiện tại, dự án đã đạt hơn 7,9 nghìn sao trên GitHub!
Kho lưu trữ GitHub: https://github.com/karpathy/nanochat
Theo báo cáo, không giống như kho lưu trữ tương tự trước đây của Kapathy là nanoGPT, vốn chỉ chứa các hàm tiền huấn luyện, nanochat là một Chuỗi công cụ huấn luyện/suy luận toàn diện, tối giản, được xây dựng từ đầu. Nó có thể được sử dụng để xây dựng một phiên bản đơn giản của mô hình tái tạo ChatGPT, và toàn bộ cơ sở mã chỉ có một tệp với rất ít phụ thuộc.
Một mô hình mất nửa ngày và 100 đô la để đào tạo đã đánh bại GPT-2
"ChatGPT tốt nhất bạn có thể mua với giá 100 đô la", Kapathy mô tả nanochat trong thông báo. Với nanochat, bạn chỉ cần khởi động một máy chủ GPU đám mây, chạy một tập lệnh và chỉ trong vòng bốn giờ, bạn có thể trò chuyện với Mô hình Ngôn ngữ Lớn (LLM) đã được đào tạo của mình trên giao diện web tương tự ChatGPT.
Cụ thể, dự án có thể đạt được các chức năng sau:
- Đào tạo mã thông báo dựa trên triển khai ngôn ngữ Rust mới
- Đào tạo trước mô hình ngôn ngữ lớn của kiến trúc Transformer trên dữ liệu FineWeb và đánh giá điểm CORE bằng nhiều chỉ báo
- Midtrain được thực hiện trên dữ liệu đối thoại trợ lý người dùng SmolTalk, dữ liệu câu hỏi trắc nghiệm và dữ liệu sử dụng công cụ.
- Thực hiện tinh chỉnh lệnh (SFT) trên mô hình trò chuyện và đánh giá hiệu suất của mô hình trên các câu hỏi trắc nghiệm về kiến thức thế giới (ARC-E/C, MMLU), câu hỏi toán học (GSM8K) và nhiệm vụ mã hóa (HumanEval)
- Đào tạo học tăng cường (RL) tùy chọn của mô hình trên dữ liệu GSM8K bằng thuật toán "GRPO"
- Suy luận hiệu quả trong công cụ suy luận với bộ nhớ đệm KV, hỗ trợ quy trình giải mã/điền dữ liệu trước đơn giản, công cụ (trình thông dịch Python trong hộp cát nhẹ) và khả năng tương tác với mô hình thông qua giao diện dòng lệnh (CLI) hoặc giao diện web giống ChatGPT (WebUI)
- Tự động tạo "bảng báo cáo" theo định dạng Markdown để tóm tắt toàn bộ quá trình dự án và trình bày nhiều chỉ báo khác nhau theo cách "trò chơi hóa"
Theo Kapathy, ngay cả với chi phí chỉ 100 đô la (thời gian đào tạo khoảng 4 giờ trên một nút H100 8 thẻ), một mô hình bản sao ChatGPT đơn giản, có khả năng đàm thoại vẫn có thể được đào tạo bằng nanochat. Mô hình này có thể viết truyện, làm thơ và trả lời các câu hỏi đơn giản. Sau khoảng 12 giờ đào tạo, hiệu suất của mô hình vượt trội hơn chỉ báo CORE của GPT-2.
Trên Github, Kapasi đã giải thích chi tiết về quy trình "đào tạo nhanh" mô hình ChatGPT tối ưu với 100 đô la.
Các bước kỹ thuật chi tiết: https://github.com/karpathy/nanochat/discussions/1
Nếu chi phí tiếp tục tăng lên khoảng 1.000 đô la (khoảng 41,6 giờ đào tạo), tính nhất quán của mô hình sẽ được cải thiện đáng kể, cho phép nó giải các bài toán đơn giản, nhiệm vụ mã hóa và hoàn thành các bài kiểm tra trắc nghiệm. Ví dụ, sau 24 giờ đào tạo (FLOP tính toán của nó tương đương với GPT-3 Small (1,25 tỷ tham số), chỉ bằng độ sâu GPT-3), một mô hình có độ sâu 30 có thể đạt điểm số 40 trên dữ liệu MMLU, hơn 70 trên dữ liệu ARC-Easy và hơn 20 trên dữ liệu GSM8K.
Mục tiêu của Kapathy là tích hợp Chuỗi"chuẩn mực mạnh mẽ" hoàn chỉnh này vào một kho lưu trữ mạch lạc, tối giản, dễ đọc, dễ sửa đổi và dễ phân nhánh. "nanochat sẽ trở thành một dự án cốt lõi cho khóa học LLM101n (hiện đang được phát triển). Tôi cũng cho rằng nó có tiềm năng trở thành một khuôn khổ công cụ nghiên cứu hoặc công cụ chuẩn mực, giống như nanoGPT đã làm trước đây."
Ông tiết lộ rằng dự án này chưa phải là dự án cuối cùng, và việc tinh chỉnh toàn diện hay tối ưu hóa hiệu suất vẫn chưa được hoàn tất. Tuy nhiên, toàn bộ framework đã đủ hoàn thiện để xuất bản trên GitHub, và tất cả mô-đun tiếp theo đều có thể được cộng đồng cải thiện thêm. Hơn nữa, Kapathy cho biết nanochat thực sự có nhiều điểm tối ưu hóa dễ triển khai.
8.000 dòng mã viết tay, "Đặc vụ không thể giúp được"
Toàn bộ dự án chỉ có khoảng 8.000 dòng mã, nhưng Kapasi nhấn mạnh rằng "cấu trúc mã khá rõ ràng". Hơn nữa, kho mã về cơ bản được Kapasi viết tay hoàn toàn, chỉ có tính năng tự động hoàn thành bằng phím tab.
"Tôi đã thử sử dụng Claude hoặc Codex's Agent lần trước đây, nhưng kết quả rất kém và cuối cùng không có tác dụng. Điều này có thể là do phong cách mã và chức năng của kho lưu trữ này khác biệt quá nhiều so với mã thông thường trong dữ liệu đào tạo của các công cụ này." Kapasi cho biết.
Nói về kiến trúc mô hình của nanochat, Kapasi giới thiệu rằng nó tương tự như mô hình Llama nói chung, nhưng có cấu trúc đơn giản hơn. Nó cũng vay mượn một số ý tưởng thiết kế từ modded-nanoGPT (một phiên bản cải tiến của nanoGPT).
Ông đã cố gắng xác định một kiến trúc cơ sở đáng tin cậy cho các mô hình có quy mô này như sau:
- Máy biến áp dày đặc (không có cấu trúc thưa thớt)
- Nhúng quay, không sử dụng bất kỳ mã hóa vị trí nào khác
- Chuẩn hóa QK (QK Norm, chuẩn hóa vectơ truy vấn Q và vectơ khóa K)
- Tỷ trọng lớp nhúng và lớp không nhúng không được chia sẻ
- Chuẩn hóa kết quả nhúng mã thông báo
- Sử dụng hàm kích hoạt relu bình phương (relu²) trong perceptron nhiều lớp (MLP)
- Chuẩn hóa bình phương trung bình gốc (RMSNorm) không chứa các tham số có thể học được
- Không có sự thiên vị nào được sử dụng trong các lớp tuyến tính
- Chú ý nhiều truy vấn (MQA)
- Logit softcap (giới hạn phạm vi giá trị logit để ổn định quá trình đào tạo)
Trình tối ưu hóa của nanochat sử dụng kết hợp Muon + AdamW, một thiết kế tham khảo mạnh mẽ từ modded-nanoGPT. Kapathy được cho là đang có một mục tiêu cần thực hiện: cố gắng loại bỏ sự phụ thuộc vào Muon bằng cách tối ưu hóa tốc độ học của Adam (ví dụ, bằng cách thiết lập tốc độ học riêng cho mô-đun khác nhau), nhưng anh ấy vẫn chưa đầu tư đủ năng lượng cho nỗ lực này.
Cư dân mạng: Vui mừng khi nhận được máy và học được danh hiệu kỹ sư
Ngoài Github, nanochat lần phát hành cũng rất phổ biến trên các nền tảng mạng xã hội.
"Tôi luôn thích sê-ri dự án Nano! Chuỗi đào tạo/suy luận tối giản này chắc chắn sẽ có tác động sâu sắc đến nhiều người học và nghiên cứu máy học", một cư dân mạng chia sẻ.
Một cư dân mạng khác cho biết: "Cá nhân tôi thấy kho mã này là một nguồn tài nguyên tuyệt vời cho việc học tập trong tương lai—nó rất hữu ích để hiểu các triển khai học độ sâu cấp thấp trong Rust, cũng như (cơ bản hơn) việc phát triển học độ sâu trong Python." Anh ấy cũng chỉ ra: "Nếu mọi người đều có thể sử dụng kho này để đào tạo các mô hình ngôn ngữ lớn (LLM) của riêng mình với nỗ lực tối thiểu, thì chẳng phải lợi thế công nghệ của các công ty như Anthropic và OpenAI sẽ bị suy yếu sao? Suy cho cùng, có rất nhiều kỹ sư xuất sắc trên thị trường. Với đủ nguồn lực, họ chắc chắn có thể đào tạo các mô hình ngôn ngữ lớn mạnh mẽ hơn nữa."
Một người khác chỉ ra: "Tôi cho rằng đối tượng lớn nhất của kho mã này là các nhà nghiên cứu. Nhiều người có thể có ý tưởng cải thiện Mô hình Ngôn ngữ Lớn (LLM), nhưng việc biến những ý tưởng này thành triển khai hoàn chỉnh đòi hỏi lượng lớn công sức và kết quả cuối cùng vẫn chưa chắc chắn. Giờ đây, chúng tôi đã có một bộ công cụ và quy trình sẵn sàng để mọi người có thể sử dụng để thử nghiệm. Điều từng chỉ là mơ ước 'Giá mà điều này có thể thực hiện được thì sao?' giờ đã trở thành hành động cụ thể 'Tôi sẽ cố gắng triển khai ý tưởng này vào cuối tuần tới.'"
Một cư dân mạng thậm chí còn nói đùa: "Sau khi chạy chương trình này, tôi chắc chắn sẽ thêm chức danh 'kỹ sư học máy' vào sơ yếu lý lịch của mình."
Liên kết tham khảo:
https://x.com/karpathy/status/1977755427569111362
https://github.com/karpathy/nanochat
Bài viết này được trích từ tài khoản công khai WeChat "AI Frontline" , do Hua Wei biên soạn và được 36Kr xuất bản với sự cho phép.