SmolGPT: อิมพลีเมนเทชัน PyTorch แบบมินิมัลสำหรับฝึก LLM ขนาดเล็กตั้งแต่เริ่มต้น
(github.com/Om-Alve)- โปรเจ็กต์ฝึก LLM แบบเรียบง่ายบน PyTorch ที่ออกแบบมาเพื่อการเรียนรู้ โดยเน้นการฝึกอย่างมีประสิทธิภาพและใช้เทคนิคการสุ่มตัวอย่างสมัยใหม่
Features
- โค้ดเบสขนาดเล็กที่สุดเท่าที่จำเป็น: พัฒนาด้วย PyTorch โดยไม่มี abstraction ที่ซับซ้อน
- สถาปัตยกรรมสมัยใหม่: โมเดล GPT พร้อม Flash Attention, RMSNorm, SwiGLU และเทคนิคการสุ่มตัวอย่างที่มีประสิทธิภาพ
- ฟีเจอร์การฝึก:
- mixed precision (bfloat16/float16)
- gradient accumulation
- การลดอัตราการเรียนรู้พร้อม warmup
- weight decay และ gradient clipping
- รองรับชุดข้อมูล: มีการประมวลผลชุดข้อมูล TinyStories มาให้ในตัว
- โทเคไนเซอร์แบบกำหนดเอง: ผสานการฝึก SentencePiece tokenizer
การติดตั้ง
- Python 3.8+
- PyTorch 2.0+ และ CUDA
- แนะนำให้ใช้ GPU รุ่นใหม่
เริ่มต้นอย่างรวดเร็ว 🚀
ตัวเลือก 1: วงจรการฝึกครบทั้งหมด
- เตรียมชุดข้อมูล
- เริ่มการฝึก
- สร้างข้อความ
ตัวเลือก 2: ใช้โมเดลที่ฝึกไว้ล่วงหน้า
- ดาวน์โหลดไฟล์ที่จำเป็น
- รัน inference
รายละเอียดโมเดลที่ฝึกไว้ล่วงหน้า
- ฝึกด้วยชุดข้อมูล TinyStories
- vocabulary 4096 โทเค็น, transformer 8 heads, 8 layers, embedding dimension 512
- ฝึกด้วยโทเค็นประมาณ 400 ล้านโทเค็นเป็นเวลา 18.5 ชั่วโมง
- validation loss: 1.0491
สเปกเครื่องที่ใช้ฝึก
- GPU: NVIDIA L4 Tensor Core
- vCPUs: 16
- RAM: 64 GB
- VRAM: 24 GB
หมายเหตุ: อิมพลีเมนเทชันนี้สร้างขึ้นเพื่อการเรียนรู้ โดยอ้างอิงแนวทางการฝึก LLM สมัยใหม่ สำหรับการใช้งานจริงใน production แนะนำให้ขยายขนาดโมเดลและชุดข้อมูล
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ผู้ใช้คนหนึ่งกล่าวว่า ขณะทำงานกับการพัฒนา GPT ด้วย C เขาได้เรียนรู้ถึงความสำคัญของการจัดการหน่วยความจำและการจัดการข้อมูล โดยโปรเจ็กต์ดังกล่าวมีโค้ดประมาณ 1,500 บรรทัด และได้แชร์ลิงก์ GitHub ไว้
ผู้ใช้อีกคนอธิบายว่า ขั้นถัดไปคือการลงมือเขียนเองด้วย numpy โดยเน้นว่าสามารถเริ่มจากการใช้ abstraction ที่ทรงพลัง แล้วค่อย ๆ แกะ abstraction ออกเพื่อทำความเข้าใจระบบทั้งหมดอย่างสมบูรณ์
มีการแชร์โปรเจ็กต์ที่ใช้ Google Colab notebook ซึ่งใช้เวลาประมาณ 2 ชั่วโมงบน A100 GPU และระบุว่าน่าจะใช้งานได้แม้ในบัญชีฟรี
มีการอธิบายว่าใน GitHub มีหลายโปรเจ็กต์ เช่น nanoGPT ของ Andrej Karpathy และยังมีโปรเจ็กต์อื่นที่มีการพัฒนา MoE ด้วย
ผู้ใช้คนหนึ่งถามว่าสามารถฝึกโมเดลบางตัวกับชุดข้อมูลเฉพาะและทดสอบผลลัพธ์ได้หรือไม่ โดยบอกว่ากำลังมองหาโปรเจ็กต์โอเพนซอร์ส และต้องการให้แจ้งได้ว่าสามารถใช้ GPU ได้หรือไม่ พร้อมทั้งอยากได้ Docker container ที่สลับไปใช้ CPU แทนได้
ผู้ใช้อีกคนหนึ่งแชร์ประสบการณ์การพัฒนาโดยใช้ multi-channel tokenizer ของตนเอง และบอกว่าชื่อตัวละครหลักถูกทำซ้ำบ่อยมากจนสงสัยว่าอาจมีบั๊ก
Om Alve กล่าวขอบคุณ โดยบอกว่าโพสต์นี้กลายเป็นไวรัลและทำให้ความพยายามทั้งหมดคุ้มค่า
มีการกล่าวว่าน่าสนใจที่เทคโนโลยีนี้สามารถพัฒนาได้ด้วยโค้ดเพียงไม่กี่ร้อยบรรทัด และชวนให้ลองเดาจำนวนบรรทัดโค้ดของโมเดลล้ำสมัยระดับแนวหน้า
มีการแชร์ลิงก์บล็อกของ HuggingFace พร้อมระบุว่าไม่ได้เกี่ยวข้องกับ SmolLM
มีคนถามว่าสามารถแชร์ตัวอย่างของชุดข้อมูลฝึกและกรณีการใช้งานได้หรือไม่