“Đây là một trong những đoạn mã điên rồ nhất mà tôi từng viết.”
Thứ Hai tuần này, ông lớn AI Andrej Karpathy đã phát hành dự án mã nguồn mở mới nhất của mình và ngay lập tức thu hút sự chú ý của toàn bộ cộng đồng.
Dự án này, có tên là nanochat, tuyên bố sẽ hướng dẫn bạn cách xây dựng ChatGPT từ đầu chỉ với 100 đô la. Nó bao gồm cả đào tạo LLM và suy luận, vì vậy, bằng cách làm theo, bạn sẽ hiểu tất cả các bước liên quan đến việc xây dựng một mô hình lớn.
Tổng cộng có 8.000 dòng mã và chỉ trong vòng 12 giờ sau khi phát hành trên GitHub, nó đã đạt hơn 4.500 sao:
Liên kết GitHub: https://github.com/karpathy/nanochat
Không giống như kho lưu trữ nanoGPT do Karpathy phát hành trước đó (chỉ bao gồm giai đoạn tiền đào tạo), nanochat là một dự án quy trình đào tạo/suy luận bản sao ChatGPT tối giản nhưng hoàn chỉnh được triển khai từ đầu, với toàn bộ nội dung tập trung trong cơ sở mã sạch với các phụ thuộc tối thiểu .
Bạn chỉ cần khởi động một máy GPU đám mây, chạy một tập lệnh và khoảng 4 giờ sau, bạn có thể trò chuyện với LLM của riêng mình trên giao diện web theo kiểu ChatGPT.
Kho lưu trữ có khoảng 8.000 dòng mã , nhưng đã triển khai tất cả các tính năng sau:
Đào tạo trình phân tích cú pháp bằng cách sử dụng triển khai Rust hoàn toàn mới.
Đào tạo trước Transformer LLM trên dữ liệu FineWeb và đánh giá điểm CORE trên nhiều chỉ báo .
Giai đoạn giữa đào tạo SmolTalk dữ liệu như các cuộc trò chuyện giữa người dùng và trợ lý, câu hỏi và câu trả lời trắc nghiệm, cũng như cách sử dụng công cụ.
Tinh chỉnh SFT và đánh giá hiệu suất của mô hình đối với các câu hỏi trắc nghiệm về kiến thức thế giới (ARC-E/C, MMLU), toán học (GSM8K) và mã (HumanEval).
Tùy chọn: Sử dụng GRPO để huấn luyện tăng cường RL trên GSM8K.
Một công cụ suy luận hiệu quả hỗ trợ KV Cache, suy luận điền trước/giải mã và gọi công cụ (trình thông dịch Python trong môi trường sandbox nhẹ) và có thể tương tác thông qua CLI hoặc WebUI theo kiểu ChatGPT.
Tự động tạo bảng báo cáo Markdown để tóm tắt và trò chơi hóa toàn bộ quá trình đào tạo.
Karpathy cho biết chỉ với khoảng 100 đô la (4 giờ đào tạo trên 8xH100), bạn có thể huấn luyện một mini-ChatGPT "biết nói" có khả năng viết truyện/thơ và trả lời các câu hỏi đơn giản. Sau khoảng 12 giờ đào tạo, nó có thể vượt trội hơn chỉ báo CORE của GPT-2.
Nếu chúng ta mở rộng này lên mức ngân sách 1.000 đô la (41,6 giờ đào tạo), tính nhất quán của mô hình sẽ được cải thiện nhanh chóng, cho phép chúng ta giải quyết nhiệm vụ toán/lập trình cơ bản và vượt qua một số bài kiểm tra trắc nghiệm. Ví dụ, một mô hình 30 độ sâu được đào tạo trong 24 giờ (tương đương với 125 triệu FLOP của GPT-3 Small, hoặc khoảng 1/1000 quy mô của GPT-3) có thể đạt điểm 40+ trên MMLU, 70+ trên ARC-Easy và 20+ trên GSM8K.
Mục tiêu của Karpathy là đóng gói một bộ đầy đủ các khả năng "cơ bản mạnh mẽ" vào một kho lưu trữ duy nhất, có cấu trúc, dễ đọc, dễ hack và có thể phân nhánh . nanochat sẽ là đỉnh cao của khóa học LLM101n (vẫn đang được phát triển).
Karpathy cho rằng nanochat có tiềm năng phát triển thành một nền tảng nghiên cứu hoặc chuẩn mực đánh giá, tương tự như nanoGPT. Nó vẫn còn xa mới hoàn hảo, chưa có bất kỳ điều chỉnh đặc biệt hay tối ưu hóa hiệu suất nào (mặc dù ông cho rằng nó đang dần hoàn thiện). Tuy nhiên, nhìn chung, khung làm việc đã được hoàn thiện tốt, phù hợp để lưu trữ trên GitHub, cho phép cộng đồng cộng tác và lặp lại mô-đun riêng lẻ.
Ví dụ về cuộc trò chuyện nanochat kéo dài 4 giờ, trị giá 100 đô la bằng WebUI.
Dưới đây là tóm tắt một số chỉ báo được đưa ra trong báo cáo về ví dụ chạy tốc độ 100 đô la lần Karpathy.
Có vẻ như việc xây dựng một mô hình lớn có khả năng trò chuyện rất đơn giản và ít tốn kém, và với sự hỗ trợ của mã mã nguồn mở hoàn thiện của Karpathy, liệu chúng ta có thể tạo ra mô hình cá nhân hóa của riêng mình để hỗ trợ công việc không?
Một số cư dân mạng đã nêu ra những câu hỏi mà mọi người đều quan tâm:
Nhưng Karpathy đã dập tắt những ứng dụng như vậy cho rằng đó không phải là mã phù hợp cho mục đích cá nhân hóa.
Karpathy cho rằng mô hình nhỏ bé này nên được coi giống như một đứa trẻ sơ sinh, không cần quá nhiều trí thông minh thô sơ. Nếu bạn tinh chỉnh/huấn luyện nó trên dữ liệu của riêng mình, bạn có thể tạo ra một số hiệu ứng thú vị như vẹt, cho cảm giác như bạn đã viết theo phong cách đó, nhưng nó sẽ rất lộn xộn.
Để đạt được hiệu quả của mô hình cá nhân hóa, thường cần thực hiện các bước sau:
Chuẩn bị dữ liệu thô
Tạo và viết lại lượng lớn dữ liệu tổng hợp dựa trên điều này (phức tạp, không rõ ràng, cần nghiên cứu)
Sử dụng dữ liệu này để tinh chỉnh một mô hình mã nguồn mở mạnh mẽ hiện tại (như Tinker)
Khi tinh chỉnh, bạn cũng có thể cần kết hợp lượng lớn dữ liệu đào tạo trước để tránh mô hình mất quá nhiều khả năng thông minh chung.
Có thể nói, để kế hoạch này thực sự có hiệu quả thì vẫn là vấn đề nghiên cứu khoa học.
Để biết thêm thông tin kỹ thuật chi tiết và ví dụ xây dựng từng bước, vui lòng tham khảo các liên kết sau:
https://github.com/karpathy/nanochat/discussions/1
Bài viết này được trích từ tài khoản công khai WeChat "Machine Heart" , tác giả là Machine Heart, người tập trung vào AI và được 36Kr cấp phép xuất bản.