Repo นี้เก็บการสร้าง nanoGPT ตั้งแต่เริ่มต้น การคอมมิตคอมไพล์นั้นได้รับการดูแลเป็นพิเศษทีละขั้นตอนและสะอาด เพื่อให้เราสามารถดูประวัติการคอมมิตคอมไพล์ได้อย่างง่ายดายเพื่อดูว่ามันสร้างขึ้นอย่างช้าๆ นอกจากนี้ยังมีวิดีโอบรรยายประกอบบน YouTube ที่คุณจะได้เห็นฉันแนะนำการกระทำแต่ละอย่างและอธิบายส่วนต่างๆ ไปพร้อมกัน
โดยพื้นฐานแล้ว เราจะเริ่มต้นจากไฟล์เปล่าและพยายามสร้างโมเดล GPT-2 (124M) ขึ้นมาใหม่ หากคุณมีความอดทนหรือมีเงินมากขึ้น โค้ดก็สามารถสร้างโมเดล GPT-3 ขึ้นมาใหม่ได้เช่นกัน แม้ว่ารุ่น GPT-2 (124M) อาจได้รับการฝึกฝนมาระยะหนึ่งแล้วในสมัยก่อน (ปี 2019 หรือประมาณ 5 ปีที่แล้ว) แต่ในปัจจุบัน การสร้างโมเดลใหม่ใช้เวลาประมาณ ~1 ชั่วโมงและ ~10 เหรียญสหรัฐ คุณจะต้องมีกล่อง Cloud GPU หากคุณมีไม่เพียงพอ ฉันขอแนะนำ Lambda
โปรดทราบว่า GPT-2 และ GPT-3 และโมเดลภาษาอย่างง่ายทั้งสองแบบ ฝึกฝนเกี่ยวกับเอกสารอินเทอร์เน็ต และสิ่งที่พวกเขาทำคือเอกสารอินเทอร์เน็ต "ในฝัน" ดังนั้น repo/วิดีโอนี้ไม่ครอบคลุมถึงการปรับแต่ง Chat อย่างละเอียด และคุณไม่สามารถพูดคุยได้เหมือนพูดคุยกับ ChatGPT กระบวนการปรับแต่งอย่างละเอียด (แม้ว่าจะค่อนข้างเรียบง่ายตามแนวคิด แต่ SFT เป็นเพียงการสลับชุดข้อมูลและดำเนินการฝึกอบรมต่อ) จะเกิดขึ้นหลังจากส่วนนี้ และจะกล่าวถึงในภายหลัง สำหรับตอนนี้ นี่คือสิ่งที่โมเดล 124M พูดหากคุณถามด้วย "สวัสดี ฉันคือโมเดลภาษา" หลังจากโทเค็นการฝึกอบรม 10B:
Hello, I'm a language model, and my goal is to make English as easy and fun as possible for everyone, and to find out the different grammar rules
Hello, I'm a language model, so the next time I go, I'll just say, I like this stuff.
Hello, I'm a language model, and the question is, what should I do if I want to be a teacher?
Hello, I'm a language model, and I'm an English person. In languages, "speak" is really speaking. Because for most people, there's
และหลังจากโทเค็นการฝึกฝน 40B:
Hello, I'm a language model, a model of computer science, and it's a way (in mathematics) to program computer programs to do things like write
Hello, I'm a language model, not a human. This means that I believe in my language model, as I have no experience with it yet.
Hello, I'm a language model, but I'm talking about data. You've got to create an array of data: you've got to create that.
Hello, I'm a language model, and all of this is about modeling and learning Python. I'm very good in syntax, however I struggle with Python due
ฮ่าๆ. อย่างไรก็ตาม เมื่อวิดีโอเผยแพร่ ที่นี่ก็จะเป็นสถานที่สำหรับคำถามที่พบบ่อย และสถานที่สำหรับการแก้ไขและข้อผิดพลาด ซึ่งฉันมั่นใจว่าจะต้องมีจำนวนมาก :)
สำหรับการสนทนาและคำถาม โปรดใช้แท็บการสนทนา และเพื่อการสื่อสารที่รวดเร็วยิ่งขึ้น โปรดดูที่ Zero To Hero Discord ของฉัน ช่อง #nanoGPT :
มาทำซ้ำการบรรยาย YouTube GPT-2 (124M)
การล้างข้อมูลเล็กน้อย เราลืมลบ register_buffer
ของอคติเมื่อเราเปลี่ยนมาใช้การสนใจแบบแฟลช ซึ่งแก้ไขด้วยการประชาสัมพันธ์ล่าสุด
PyTorch เวอร์ชันก่อนหน้าอาจมีปัญหาในการแปลงจาก uint16 เป็น long ภายใน load_tokens
เราได้เพิ่ม npt = npt.astype(np.int32)
เพื่อใช้ numpy เพื่อแปลง uint16 เป็น int32 ก่อนที่จะแปลงเป็น torch tensor แล้วแปลงเป็น long
ฟังก์ชั่น torch.autocast
ใช้ arg device_type
ซึ่งฉันพยายามอย่างดื้อรั้นเพียงแค่ส่งผ่าน device
โดยหวังว่าจะใช้งานได้ แต่จริงๆ แล้ว PyTorch ต้องการแค่ประเภทนั้นจริงๆ และสร้างข้อผิดพลาดใน PyTorch บางเวอร์ชัน ดังนั้นเราจึงต้องการเช่นอุปกรณ์ cuda:3
เพื่อถอด cuda
ปัจจุบันอุปกรณ์ mps
(Apple Silicon) จะกลายเป็น device_type
CPU ฉันไม่แน่ใจ 100% ว่านี่เป็นวิธี PyTorch ที่ตั้งใจไว้
น่าสับสนจริง ๆ แล้ว model.require_backward_grad_sync
ถูกใช้โดยทั้งการส่งต่อและย้อนกลับ เลื่อนเส้นขึ้นเพื่อให้นำไปใช้กับการส่งต่อด้วย
สำหรับการรันระดับการผลิตเพิ่มเติมที่คล้ายกับ nanoGPT มาก ฉันขอแนะนำให้ดูที่ repos ต่อไปนี้:
เอ็มไอที