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 ที่ราคาถูก ควรตรวจสอบอุณหภูมิและความสมบูรณ์ของไดรฟ์

การใช้งาน:

  1. ดาวน์โหลดโมเดล: สามารถดาวน์โหลดโมเดล 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)
  2. ตั้งค่า: ดาวน์โหลด Repository ของ Colibrì และตั้งค่าตัวแปร COLI_MODEL ให้ชี้ไปยังไดเรกทอรีของโมเดลที่ดาวน์โหลดมา
  3. รัน: สามารถปรับแต่งพารามิเตอร์ต่างๆ ผ่าน 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

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 แทนที่จะโหลดทั้งหมดเข้าสู่ RAMMoE (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 ที่ปรับให้เหมาะสมกับโมเดล int4Integer-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 #OpenSourcehttps://github.com/JustVugg/colibri
Shared content
GITHUB.COM
GitHub - JustVugg/colibri: Run GLM-5.2 (744B MoE) on a 25GB-RAM consumer machine — pure C, zero deps, experts streamed from disk. Tiny engine, immense model. 🐦
Run GLM-5.2 (744B MoE) on a 25GB-RAM consumer machine — pure C, zero deps, experts streamed from disk. Tiny engine, immense model. 🐦 - JustVugg/colibri
3 Commenti 0 condivisioni 957 Views 0 Anteprima