Thành viên sáng lập OpenAI đã viết một mô hình lớn chỉ với 1000 dòng mã C, có thể chạy trên Mac! Người dùng mạng: Người đàn ông thực sự nên lập trình bằng C.

công nghệ số5tháng trướccập nhật AIANT
39 00

Andrej Karpathy: GPT-2 với 1000 dòng mã C

Như chúng ta đều biết, việc viết mã cho mạng nơron không còn là một thách thức lớn nữa. Hiện tại, xu hướng đang là viết mã đào tạo mô hình lớn (LLM) bằng tay. Mới đây, Andrej Karpathy, cựu giám đốc AI của Tesla và thành viên sáng lập OpenAI, đã thực hiện điều này bằng cách sử dụng 1000 dòng mã C sạch sẽ để đào tạo mô hình GPT-2.

Thành viên sáng lập OpenAI đã viết một mô hình lớn chỉ với 1000 dòng mã C, có thể chạy trên Mac! Người dùng mạng: Người đàn ông thực sự nên lập trình bằng C.

Một vài giờ trước, Andrej Karpathy đã ra mắt dự án có tên llm.c, với mục tiêu đào tạo LLM bằng ngôn ngữ thuần túy C. Phương pháp này mang lại lợi thế chính là giảm đáng kể kích thước thư viện phụ thuộc – không cần đến 245MB của PyTorch và 107MB của cPython. Dự án này có thể được biên dịch và chạy ngay lập tức, đồng thời đạt hiệu suất tương đương với bản thực hiện tham chiếu của PyTorch.

Karpathy chọn GPT-2 làm ví dụ đầu tiên vì nó được coi là người tiên phong trong lĩnh vực mô hình ngôn ngữ lớn và là sự kết hợp đầu tiên của hệ thống AI hiện đại. Việc chọn GPT-2 giúp chúng ta dễ dàng hơn trong việc hiểu và thực hành đào tạo mô hình ngôn ngữ lớn.

Thành viên sáng lập OpenAI đã viết một mô hình lớn chỉ với 1000 dòng mã C, có thể chạy trên Mac! Người dùng mạng: Người đàn ông thực sự nên lập trình bằng C.

Andrej Karpathy là một nhà khoa học AI nổi tiếng toàn cầu và là thành viên sáng lập của OpenAI. Ông tốt nghiệp cử nhân ngành Khoa học Máy tính và Vật lý từ Đại học Toronto năm 2009, sau đó hoàn thành Thạc sĩ tại Đại học British Columbia và tiếp tục theo đuổi tiến sĩ tại Stanford University AI Lab (SAIL) dưới sự hướng dẫn của giáo sư Fei-Fei Li. Ông cũng là một trong những người sớm áp dụng học sâu vào nghiên cứu thị giác máy tính.

Trong quá trình học tập, Karpathy từng thực tập tại Google và DeepMind, sau đó gia nhập OpenAI khi tổ chức mới thành lập và giữ chức nghiên cứu viên. Đến năm 2017, ông được Elon Musk mời làm trưởng bộ phận AI tại Tesla, nơi ông dẫn dắt phát triển hệ thống tự lái Autopilot quan trọng cho hệ thống tự lái hoàn toàn FSD của Tesla.

Thành viên sáng lập OpenAI đã viết một mô hình lớn chỉ với 1000 dòng mã C, có thể chạy trên Mac! Người dùng mạng: Người đàn ông thực sự nên lập trình bằng C.

Karpathy cũng chia sẻ kinh nghiệm học tập của mình, rằng bắt đầu từ việc viết mã gốc từ đầu là cách tốt nhất để hiểu và hấp thụ kiến thức. Hai năm trước, ông đã viết một thư viện đào tạo nhỏ GPT chỉ với khoảng 300 dòng mã và đặt tên là minGPT, giúp làm rõ hoạt động của GPT.

Sự lựa chọn ngôn ngữ C của Karpathy đã gây ấn tượng mạnh mẽ với cộng đồng, cho thấy một cuộc phục hưng của ngôn ngữ này trong việc phát triển AI. Ông nhấn mạnh rằng việc sử dụng C không chỉ đơn giản, sạch sẽ và dễ di chuyển mà còn tạo cảm giác như đang giao tiếp trực tiếp với máy tính.

Thành viên sáng lập OpenAI đã viết một mô hình lớn chỉ với 1000 dòng mã C, có thể chạy trên Mac! Người dùng mạng: Người đàn ông thực sự nên lập trình bằng C.

Dự án llm.c bao gồm việc phân bổ tất cả bộ nhớ cần thiết trong một khối bộ nhớ 1 chiều duy nhất và không tạo hay hủy bất kỳ bộ nhớ nào trong quá trình đào tạo. Điều này giúp duy trì mức độ sử dụng bộ nhớ không đổi và linh hoạt trong việc xử lý dữ liệu lô.

Quá trình đào tạo bao gồm việc viết mã cho tất cả các lớp riêng lẻ và kết nối chúng lại với nhau. Karpathy cũng cung cấp hướng dẫn ngắn gọn về cách thực hiện lớp layernorm trong mã C, giúp mọi người dễ dàng hiểu cách xây dựng các lớp khác trong mô hình GPT-2.

Thành viên sáng lập OpenAI đã viết một mô hình lớn chỉ với 1000 dòng mã C, có thể chạy trên Mac! Người dùng mạng: Người đàn ông thực sự nên lập trình bằng C.

Để bắt đầu, bạn cần tải dữ liệu và tiền xử lý. Kết quả đầu ra sẽ bao gồm các tệp .bin chứa luồng byte của số nguyên 32-bit, biểu thị ID token của bộ phân cụm GPT-2. Bạn cũng có thể sử dụng script prepro_tinystories.py để tiền xử lý dữ liệu TinyStories.

Tại đây, bạn đã sẵn sàng để bắt đầu đào tạo mô hình. Để tối ưu hóa hiệu suất, bạn có thể khởi tạo mô hình bằng trọng số của GPT-2 và sau đó điều chỉnh. Việc này yêu cầu tải trọng số và lưu chúng dưới dạng checkpoint có thể tải trong C.

Chạy mã sau khi đã biên dịch:

Điều chỉnh số lượng luồng dựa trên số lõi CPU của bạn. Chương trình này sẽ tải trọng số mô hình, token và chạy vòng lặp điều chỉnh micro với tốc độ học Adam là 1e-4, sau đó tạo mẫu từ mô hình.

Hiện tại, kết quả tạo mẫu chỉ cung cấp ID token, do đó bạn cần giải mã chúng trở lại thành văn bản.

Tóm tắt

5 từ khóa chính:

  • GPT-2
  • Andrej Karpathy
  • LLM
  • C/CUDA
  • tensorflow
© Thông báo bản quyền

Những bài viết liên quan:

Chưa có đánh giá nào

none
Không có đánh giá...