Call Me Thanut
puzzleOpen Source

Turbo Fieldfare — รัน Gemma 4 ขนาด 26B บน Mac ด้วยแรมแค่ราว 2GB โดยสตรีม expert จาก SSD

1 ส.ค. 2026อ่าน 5 นาที
Turbo Fieldfare — รัน Gemma 4 ขนาด 26B บน Mac ด้วยแรมแค่ราว 2GB โดยสตรีม expert จาก SSD
สารบัญ

สรุปให้ไว

26B บนแรม ~2GB

รันโมเดล Gemma 4 ขนาด 26B บน Mac ตระกูล M ได้ด้วยแรมเพียงราว 2GB และยังใช้งานได้จริง

เคล็ดลับคือ MoE + สตรีมจาก SSD

เก็บเฉพาะส่วนที่ทุก token ต้องใช้ไว้ในแรม ส่วน expert ที่เหลือปล่อยไว้บน SSD แล้วดึงเข้ามาทีละไม่กี่ MB ตอนต้องใช้

เกิดได้เพราะ unified memory

Apple Silicon ให้ CPU กับ GPU มองแรมก้อนเดียวกัน อ่านจาก SSD เข้าบัฟเฟอร์ที่ GPU ใช้ได้เลย ไม่ต้องก๊อปข้ามไป VRAM

โอเพนซอร์ส เขียน Swift/Metal

เปิดโค้ดบน GitHub รันเป็นแอป Mac ได้ ความเร็วอยู่ราวหลักสิบ token ต่อวินาทีตามรุ่นชิป

01มันคืออะไร

Turbo Fieldfare คือรันไทม์โอเพนซอร์สที่เขียนด้วย Swift และ Metal (GPU API ระดับล่างของ Apple) เป้าหมายคือทำให้โมเดล Gemma 4 ขนาด 26B รันบน Mac ตระกูล M-series ได้แม้เครื่องมีแรมไม่เยอะ โดยกินแรมจริงแค่ราว 2GB แทนที่จะต้องโหลดทั้งโมเดลราว 14GB เข้าแรมทั้งก้อน

หัวใจที่ทำให้เป็นไปได้คือธรรมชาติของ Gemma 4 ซึ่งเป็นโมเดลแบบ Mixture-of-Experts (MoE) พูดแบบภาพจำคือ แทนที่จะมีสมองก้อนใหญ่ก้อนเดียว มันมี "ผู้เชี่ยวชาญ" ย่อย ๆ 128 คนต่อเลเยอร์ กับตัวจัดคิวเล็ก ๆ (router) สำหรับแต่ละ token router จะเลือกผู้เชี่ยวชาญมาทำงานแค่ 8 คน ผลคือแม้พารามิเตอร์รวม 26B แต่จริง ๆ มีแค่ราว 3.9B ที่ทำงานต่อ token ที่เหลือกว่า 85% นั่งเฉย

02มันทำงานยังไง

Turbo Fieldfare เลยแบ่งไฟล์เป็นสองกอง กองแรกคือ "ของที่ทุก token ต้องใช้เสมอ" — attention, router, embeddings และ shared expert หนึ่งตัวที่รันทุกครั้ง รวมราว 1.35GB ส่วนนี้ถูก map จาก disk แล้วค้างในแรมตลอดที่โหลดโมเดลอยู่ กองที่สองคือเหล่า expert (30 เลเยอร์ เลเยอร์ละ 128 ตัว รวมราว 12.9GB) ที่ไม่โหลดเข้าแรมเลย ปล่อยไว้บน SSD แล้วดึงเข้ามาไม่กี่ MB เฉพาะตอน router สั่ง

จุดที่ทำให้เป็นโปรเจกต์สาย Mac โดยเฉพาะคือ unified memory: บนพีซีที่มีการ์ดจอแยก การเอา weight ไปให้ GPU ต้องอ่านจาก SSD เข้าแรมระบบ แล้วก๊อปข้าม PCIe ไป VRAM ของการ์ด — สองต่อ ทำหลายพันครั้งต่อวินาทีคือคอขวด แต่ Apple Silicon ให้ CPU กับ GPU เห็นแรมก้อนเดียวกัน อ่านจาก SSD เข้าบัฟเฟอร์ที่ GPU กำลังจะใช้ได้เลย แถมเก็บ weight ในรูปแบบตรงกับที่ metal kernel ใช้ (ควอนไทซ์ 4-bit) เลยไม่ต้องแปลงก่อน อ่านไฟล์ = โหลด weight ในตัว

ลูกเล่นที่ทำให้เร็วพอใช้จริง

  • ซ่อนเวลาอ่าน disk

    ระหว่างที่ CPU ไปดึง expert จาก SSD ตัว GPU ก็ปั่น shared expert ที่ต้องรันอยู่แล้ว งานอ่าน disk เลยแทบไม่เสียเวลาเปล่า

  • LFU cache

    แต่ละเลเยอร์เก็บ expert ยอดฮิตไว้ในแรม 16 จาก 128 ตัว ถ้า router เลือกตัวที่มีอยู่แล้วก็ได้ทันที ตัวที่ถูกใช้น้อยสุดจะถูกเขี่ยออกก่อน

  • เก็บ weight ตรง layout

    4-bit quantized ตรงกับที่ kernel ใช้ ไม่ต้อง decode/แปลงตอนโหลด

  • ความเร็วตามชิป

    วัดได้ราว 5-6 token/วินาทีบน M2 แรม 8GB, ~23 บน M3 Max และแตะ 31-35 บน M5 Pro แรม 24GB

  • เดิมพันที่ routing

    ดีไซน์นี้ได้ผลเพราะการเลือก expert ค่อนข้างคาดเดาได้ ถ้าทุก token สุ่มคนละชุด cache จะพลาดบ่อยและช้าลง

03เกี่ยวอะไรกับเรา

นี่คือสัญญาณว่าการรันโมเดลใหญ่ในเครื่องตัวเองกำลังเข้าถึงง่ายขึ้นเรื่อย ๆ แม้เครื่องแรมไม่เยอะ ประโยชน์ตรง ๆ สำหรับคนทำงานคือความเป็นส่วนตัวและต้นทุน — ประมวลผลข้อมูลที่อ่อนไหวได้บนเครื่องโดยไม่ต้องส่งขึ้นคลาวด์ และไม่มีค่า API รายเดือน

ฟันธง: ถ้าใช้ Mac ตระกูล M และอยากลองของ อันนี้ "ลองได้" ในฐานะของเล่นสายเทคนิคที่ใช้งานได้จริงระดับหนึ่ง แต่ให้เข้าใจข้อแลก — ความเร็วยังเป็นหลักสิบ token/วินาที เหมาะกับงานส่วนตัว ดราฟต์ หรือทดลอง มากกว่างานโปรดักชันที่ต้องการ throughput สูง จุดที่ต้องระวังคือมันพึ่ง SSD หนัก และเป็นโปรเจกต์อายุยังน้อย ก่อนเอาไปพึ่งกับงานสำคัญควรทดสอบกับงานจริงของตัวเองก่อน ต่อยอดได้โดยตั้งเป็นผู้ช่วย local ที่คุมข้อมูลเองสำหรับงานที่ไม่อยากให้ออกนอกเครื่อง

โปรเจกต์ open-source

อยากลองเองไหม? โปรเจกต์นี้เป็น open-source โหลด repo ทางการมาลองได้เลย

ดูบน GitHub →