- โค้ดฝึก LLM แบบเรียบง่ายที่ Andrej Karpathy สร้างด้วย C/CUDA ล้วน
- ตอนนี้สามารถเทรนแบบหลาย GPU พร้อม Flash Attention ด้วย bfloat16 ได้แล้ว
- พัฒนาด้วยโค้ด C/CUDA ราว ~3000 บรรทัด และโดยรวมเร็วกว่า PyTorch ได้ถึงประมาณ 7%
- สิ่งที่ทำมาจนถึงตอนนี้
- การเทรนแบบผสมความแม่นยำ (bfloat16)
- การปรับแต่งเคอร์เนลจำนวนมาก รวมถึง FusedClassifier ที่ไม่ต้องทำให้ normalized logits เป็นรูปธรรม (ต่างจาก
torch.compile ในปัจจุบัน)
- Flash Attention (ตรงจาก cuDNN)
- โครงสร้างข้อมูล Packed128 ที่บังคับให้ A100 ใช้คำสั่งโหลด 128 บิต (LDG.128) และเก็บข้อมูล (STS.128)
- ตอนนี้รองรับการเทรนหลาย GPU แล้วเช่นกัน
- เวอร์ชันแรกของการเทรนหลาย GPU ด้วย MPI+NCCL
- โปรไฟล์การรันเทรนทั้งหมดด้วย NVIDIA Nsight Compute
- รวม PR ของ ZeRO (optimizer state sharding) ระยะที่ 1
- เป้าหมายคือสร้างสแตก LLM ที่เสถียร สะอาด ผ่านการทดสอบ มีขนาดเล็ก เสริมความแข็งแรง และปรับแต่งมาดีพอในระดับขั้นต่ำ เพื่อสร้าง GPT-2 มินิซีรีส์ทุกขนาดโมเดลตั้งแต่ 124M ถึง 1.6B ขึ้นใหม่โดยตรงใน C/CUDA
1 ความคิดเห็น
llm.c - ฝึก LLM ด้วย raw C/CUDA