Colibrì: รันโมเดลภาษา GLM-5.2 (744B MoE) ด้วย RAM เพียง 25GB บนคอมพิวเตอร์ทั่วไป
เคยฝันว่าอยากจะรันโมเดลภาษาขนาดใหญ่ที่มีพารามิเตอร์นับพันล้านบนคอมพิวเตอร์ส่วนตัวของคุณเองไหม? ปกติแล้วโมเดลเหล่านี้ต้องการทรัพยากรคอมพิวเตอร์มหาศาล ทั้ง RAM และ GPU ที่มีราคาแพง แต่โครงการ Colibrì กำลังทำให้ความฝันนั้นเป็นจริง ด้วยการพัฒนาเอนจิ้นที่เขียนด้วยภาษา C เพียว ๆ โดยไม่มีการพึ่งพาไลบรารีภายนอก (zero dependencies) ทำให้สามารถรันโมเดล GLM-5.2 ขนาด 744 พันล้านพารามิเตอร์ (744B MoE) ได้บนเครื่องที่มี RAM เพียง 25GB เท่านั้น!
Colibrì ทำงานอย่างไร?
หัวใจสำคัญของ Colibrì คือการจัดการทรัพยากรอย่างชาญฉลาด โดยเฉพาะการสตรีมส่วนประกอบของโมเดลจากดิสก์แบบ On-demand แทนที่จะโหลดทั้งหมดเข้าสู่ RAM
- MoE (Mixture-of-Experts): โมเดล GLM-5.2 เป็นแบบ Mixture-of-Experts ที่มีพารามิเตอร์รวม 744 พันล้านตัว แต่เมื่อประมวลผลแต่ละโทเค็น จะมีการเรียกใช้งานผู้เชี่ยวชาญ (experts) เพียงบางส่วนเท่านั้น คิดเป็นประมาณ 40 พันล้านพารามิเตอร์ และมีเพียง 11GB เท่านั้นที่เปลี่ยนแปลงไปตามโทเค็น
- การแบ่งส่วนทรัพยากร:
- ส่วนที่คงอยู่ใน RAM: ส่วนที่เป็นแกนหลัก (dense part) เช่น attention, shared experts, embeddings ซึ่งมีขนาดประมาณ 17 พันล้านพารามิเตอร์ จะถูกโหลดเข้า RAM ในรูปแบบ int4 (ใช้พื้นที่ประมาณ 9.9 GB)
- ส่วนที่สตรีมจากดิสก์: ผู้เชี่ยวชาญ 21,504 ตัว (จาก 75 ชั้น MoE × 256 experts) ซึ่งแต่ละตัวมีขนาดประมาณ 19MB (ในรูปแบบ int4) จะถูกเก็บไว้บนดิสก์ (ประมาณ 370 GB) และจะถูกดึงมาใช้งานเมื่อจำเป็น โดยมีระบบแคช (LRU cache) และตัวเลือกในการตรึงผู้เชี่ยวชาญที่ใช้บ่อย (hot-store) รวมถึงใช้ประโยชน์จาก OS page cache เป็น L2 cache อีกด้วย
จุดเด่นของ Colibrì
เอนจิ้น Colibrì ถูกออกแบบมาให้มีขนาดเล็กแต่ทรงพลัง ด้วยโค้ดเพียงไฟล์เดียว (~1,300 บรรทัด) ใน c/glm.c ทำให้:
- ไม่มี Python หรือ GPU Runtime: ทำงานได้บน CPU เท่านั้น ไม่ต้องพึ่งพา Python หรือ GPU ที่มีราคาแพง
- ความแม่นยำสูง: รองรับการทำงานแบบ forward pass ของ GLM-5.2 (glm\moe\dsa) ที่มีความแม่นยำเทียบเท่ากับโมเดลต้นฉบับ
- MLA Attention: ใช้เทคนิค MLA attention ที่มีการบีบอัด KV-cache ให้เล็กลงอย่างมาก (576 floats/token เทียบกับ 32,768)
- DeepSeek-V3 Router: ใช้ router แบบ sigmoid ที่มีประสิทธิภาพ
- Native MTP Speculative Decoding: รองรับการคาดเดาโทเค็นหลายตัวพร้อมกัน (Multi-Token Prediction) เพื่อเพิ่มความเร็วในการสร้างข้อความ
- True Sampling: การสุ่มสร้างข้อความที่สมจริง ด้วยการตั้งค่า temperature และ nucleus sampling ที่ปรับให้เหมาะสมกับโมเดล int4
- Integer-Dot Kernels: ใช้การคำนวณแบบ integer kernels (Q8\_0-style int8 activations, AVX2 maddubs) เพื่อเพิ่มความเร็วในการประมวลผล
- Async Expert Readahead: ขณะที่กำลังประมวลผลชุดผู้เชี่ยวชาญชุดหนึ่ง เอนจิ้นจะเริ่มอ่านชุดถัดไปล่วงหน้า
- Quantization Kernels: รองรับการควอนไทซ์เป็น int8, packed int4, packed int2 เพื่อลดขนาดโมเดลและเพิ่มประสิทธิภาพ
- Byte-level BPE Tokenizer: ใช้ tokenizer แบบ BPE ที่ทำงานด้วย byte-level และเขียนด้วยภาษา C
ตัวเลขประสิทธิภาพและการใช้งาน
Colibrì ถูกพัฒนาและทดสอบบนเครื่องที่มีข้อจำกัด เพื่อให้สามารถรันบนฮาร์ดแวร์ทั่วไปได้จริง:
- ฮาร์ดแวร์ทดสอบ: WSL2, 12 Cores, 25 GB RAM, NVMe SSD
- ความเร็ว: ไม่ใช่ความเร็วสูง แต่สามารถรันโมเดลระดับ Frontier-class 744B บนเครื่องที่ราคาถูกกว่าพัดลมของ H100 ได้ การใช้แคชที่อุ่นแล้ว (warm cache) และการตรึงผู้เชี่ยวชาญที่ใช้บ่อย (pinned hot experts) จะช่วยลด Latency ได้อย่างมาก
- การเริ่มต้น: การเริ่มต้นครั้งแรก (cold start) อาจใช้เวลาเนื่องจากการอ่านข้อมูลจากดิสก์ แต่การอ่านจาก SSD จะไม่ทำให้เกิดการสึกหรอ
- ข้อควรระวัง: การใช้งานหนักอาจทำให้เกิด Swap หาก RAM ไม่เพียงพอ และความร้อนสะสมบนไดรฟ์ SSD ที่ราคาถูก ควรตรวจสอบอุณหภูมิและความสมบูรณ์ของไดรฟ์
การใช้งาน:
- ดาวน์โหลดโมเดล: สามารถดาวน์โหลดโมเดล GLM-5.2 ที่แปลงเป็น int4 สำหรับ Colibrì ได้จาก Hugging Face: [ขอบคุณ แหล่งข้อมูล
https://huggingface.co/jlnsrk/GLM-5.2-colibri-int4](https://huggingface.co/jlnsrk/GLM-5.2-colibri-int4) - ตั้งค่า: ดาวน์โหลด Repository ของ Colibrì และตั้งค่าตัวแปร
COLI_MODELให้ชี้ไปยังไดเรกทอรีของโมเดลที่ดาวน์โหลดมา - รัน: สามารถปรับแต่งพารามิเตอร์ต่างๆ ผ่าน Environment Variables หรือ Command-line Flags เช่น
--temp(temperature),--topp(nucleus sampling),DRAFT(MTP draft depth)
การสนับสนุนโครงการ
Colibrì เป็นโครงการที่พัฒนาโดยบุคคลคนเดียว หากคุณเห็นว่าโครงการนี้มีประโยชน์และอยากสนับสนุนการพัฒนาให้ดียิ่งขึ้น (เช่น การทดสอบบนฮาร์ดแวร์ที่ดีขึ้น เพื่อให้ได้ข้อมูลการสเกลของ NVMe, การทดสอบแคชที่ใหญ่ขึ้น, หรือการตรวจสอบคุณภาพของ int2/int3) คุณสามารถ:
⭐ Star Repository: และแชร์โครงการนี้
🐛 เปิด Issue: พร้อมตัวเลข Benchmark จากฮาร์ดแวร์ของคุณ
💬 ติดต่อ: ผ่าน GitHub Issues หากต้องการสนับสนุนการพัฒนา หรือบริจาคฮาร์ดแวร์
Colibrì เปรียบเสมือนนกฮัมมิ่งเบิร์ดที่สามารถขับเคลื่อนยักษ์ใหญ่ 744 พันล้านพารามิเตอร์ ให้ทำงานได้ด้วยทรัพยากรที่จำกัด ทำให้ AI ขนาดใหญ่เข้าถึงได้ง่ายขึ้นสำหรับทุกคน
#Colibri #LLM #CProgramming #AI #OpenSource
ขอบคุณ แหล่งข้อมูล
https://github.com/JustVugg/colibri