ข้ามไปยังเนื้อหา
TurboFieldfare รัน Gemma 4 26B ด้วย RAM แค่ 2 GB บน MacBook Air 8 GB
เครื่องมือนักพัฒนา

TurboFieldfare รัน Gemma 4 26B ด้วย RAM แค่ 2 GB บน MacBook Air 8 GB

อ่าน 6 นาที ที่มา: TurboFieldfare (GitHub)

โปรเจกต์ชื่อ TurboFieldfare ขึ้นอันดับหนึ่งของ Hacker News เมื่อวานนี้ (29 กรกฎาคม 2026) ด้วยข้ออ้างที่ฟังดูเป็นไปไม่ได้: รันโมเดล Gemma 4 26B-A4B แบบ instruction-tuned บน Mac ที่มี RAM เพียง 8 GB โดยใช้หน่วยความจำจริงราว 2 GB เท่านั้น ไม่ใช่ wrapper ของ MLX หรือ llama.cpp แต่เป็นรันไทม์ที่เขียนขึ้นใหม่ด้วย Swift + Metal เฉพาะทางสำหรับโมเดลตัวนี้ตัวเดียว ปล่อยภายใต้ Apache License 2.0

กุญแจสำคัญคือสถาปัตยกรรม Mixture-of-Experts ของ Gemma 4 เอง โมเดล 26B-A4B มีพารามิเตอร์รวม 26 พันล้าน แต่ active ต่อโทเคนเพียง ~3.88 พันล้าน — แปลว่าน้ำหนักส่วนใหญ่ในไฟล์ 14.3 GB นั้น “ไม่ถูกใช้” ในการคำนวณโทเคนหนึ่ง ๆ TurboFieldfare จึงไม่โหลดทั้งโมเดลเข้า RAM: มันเก็บเฉพาะ shared core ขนาด 1.35 GB กับ KV cache แบบ FP16 ไว้ในหน่วยความจำ แล้ว สตรีม expert ที่ต้องใช้จริงจาก SSD เป็นรายโทเคน

กลไกภายใน: router, LFU cache 16 ช่อง และ pread แบบมีขอบเขต

ในแต่ละเลเยอร์ของทรานส์ฟอร์เมอร์ Metal จะคำนวณ attention และ router จากน้ำหนักที่อยู่ใน RAM แล้ว CPU เอา ID ของ expert top-8 ที่ router เลือกไปวางแผนกับ LFU cache ขนาด 16 ช่องต่อเลเยอร์ ถ้า miss ก็ยิง pread แบบขนานที่จำกัดจำนวน อ่านน้ำหนัก expert เข้าบัฟเฟอร์ที่ Metal มองเห็นได้โดยตรง

จุดที่ฉลาดคือการซ่อนเวลา I/O: ระหว่างที่การอ่านจาก SSD กำลังทำงาน Metal จะคำนวณสาย shared-expert ที่อยู่ใน RAM แล้ว ไปพร้อมกัน จบแล้วจึงรวมผลลัพธ์ของ shared กับ routed เข้าด้วยกัน ส่วนขั้น prefill ใช้ chunk ไม่เกิน 128 โทเคน เพื่อให้ expert ที่ดึงมาครั้งเดียวถูกใช้กับหลายแถวได้คุ้มค่า ก่อนจะเข้าโหมด generate ที่วนลูปทีละโทเคน

น้ำหนักถูกควอนไทซ์เป็น MLX affine 4-bit, group 64 สำหรับ embedding / attention / shared expert / routed expert และใช้ 8-bit สำหรับ router (ส่วนที่ผิดพลาดไม่ได้ เพราะเลือก expert ผิดคือคำตอบเปลี่ยน) นอกจากนี้ยังมี Metal kernel ที่เขียนเองสำหรับ quantized GEMV, attention, MoE, normalization, RoPE และ sampling

ตัวติดตั้งก็ยึดกฎ bounded-memory เดียวกัน: มันไม่เคยดาวน์โหลดเช็คพอยต์เต็มมาวางบนดิสก์ก่อน แต่ สตรีม byte range จาก Hugging Face revision ที่ pin ไว้ แล้ว repack เข้าฟอร์แมต .gturbo ทันทีที่ข้อมูลมาถึง — โอนราว 15 GB ครั้งเดียว ได้ไฟล์ติดตั้ง 14.3 GB ที่ผ่านการตรวจ manifest และ file hash แล้วจึงยอมรับ

ตัวเลขที่วัดได้จริง และข้อจำกัดที่ต้องรู้

ตัวเลข decode ที่ผู้พัฒนาวัดเอง:

เครื่องความเร็ว decode
M2 MacBook Air (RAM 8 GB)5.1–6.3 tok/s
M5 Pro (RAM 24 GB)31–35 tok/s

README ระบุตรง ๆ ว่านี่เป็น “จุดอ้างอิง ไม่ใช่เพดานประสิทธิภาพ” เพราะความยาว prompt, ความยาวผลลัพธ์, สถานะ page cache และฮาร์ดแวร์มีผลทั้งหมด และเปิดรับผลวัดจากชุมชนผ่าน community benchmark guide เอกสาร experiment record ที่แนบมาสรุป 103 ผลการวัด ครอบคลุมทั้ง kernel, caching, I/O, prefill และ decode ซึ่งเป็นระดับความละเอียดที่หาไม่ได้บ่อยในโปรเจกต์ Show HN

ข้อจำกัดที่ควรรู้ก่อนตื่นเต้นเกินไป:

  • ผูกกับโมเดลเดียว — รองรับแค่ Gemma 4 26B-A4B IT เท่านั้น ไม่ใช่รันไทม์อเนกประสงค์
  • ข้อความล้วน — ไม่รองรับภาพ เสียง วิดีโอ ทั้งที่ Gemma 4 เป็น multimodal
  • ต้องใหม่จริง — Apple Silicon (arm64 เท่านั้น), macOS 26 + Metal 4, Xcode 26 / Swift 6.2 ขึ้นไป เครื่อง Intel และ macOS เก่ากว่านี้ใช้ไม่ได้
  • ต้องมีที่ว่าง ~14.3 GB บน SSD และการรันครั้งแรกต้องต่อเน็ต
  • แนะนำให้รันได้ทีละโปรเซสเดียว และเช็ค memory_pressure -Q ก่อนเริ่ม — สภาพที่ RAM 8 GB บังคับ

มี 3 หน้าตาให้ใช้: แอป Mac, CLI, และเซิร์ฟเวอร์แบบ OpenAI

Swift package เปิด 6 product โดยที่นักพัฒนาน่าจะสนใจสามอย่าง: แอป Mac (TurboFieldfareMac) สำหรับติดตั้งและลองเล่น, CLI (TurboFieldfareCLI) สำหรับ instruction chat และ raw completion พร้อมออปชันครบ (--temperature, --top-k, --top-p, --repetition-penalty, --seed, --stop) และ เซิร์ฟเวอร์ที่คอมแพทิเบิลกับ OpenAI Chat Completions ฟังที่ http://127.0.0.1:8080/v1 รองรับ streaming, function tools และ prompt reuse แบบ single-prefix

จุดสุดท้ายนี้คือจุดที่ทำให้มันใช้งานจริงได้ เพราะหมายความว่า editor หรือ agent framework ที่พูดภาษา OpenAI API อยู่แล้ว (README ยกตัวอย่าง Python และ OpenCode) เสียบเข้าได้ทันที แต่ผู้พัฒนาเตือนไว้ชัด: เซิร์ฟเวอร์ ไม่มี authentication และไม่มี TLS ให้เก็บไว้บน loopback เท่านั้น และ tool call ทุกครั้งฝั่ง client ต้องเป็นผู้อนุมัติและรันเอง

git clone https://github.com/drumih/turbo-fieldfare.git
cd turbo-fieldfare
swift build -c release
.build/release/TurboFieldfareMac

มุมมอง AI Curator

เรื่องนี้น่าสนใจไม่ใช่เพราะ “26B บน 2 GB” ฟังดูเท่ แต่เพราะมันเปลี่ยนตัวแปรที่เราคิดว่าเป็นข้อจำกัดของการรันโมเดลในเครื่อง จากเดิมที่โจทย์คือ “RAM พอไหม” กลายเป็น “SSD เร็วพอไหม” — และนั่นคือทรัพยากรที่ถูกกว่ากันหลายเท่า RAM บน Mac คือของที่ Apple ตั้งราคาแพงมากตอนสั่งซื้อและอัปเกรดทีหลังไม่ได้เลย ในขณะที่พื้นที่ SSD ภายนอกหรือความเร็ว NVMe เป็นเรื่องที่แก้ได้ด้วยเงินไม่มาก ประโยคเปิดของ README ที่ว่า “Memory got expensive. So I gave a 26-billion-parameter model a ~2 GB budget.” สรุปแรงจูงใจได้ตรงที่สุด

สำหรับนักพัฒนาไทยและ SEA นี่มีความหมายเป็นรูปธรรมกว่าที่คิด เครื่องที่พบมากที่สุดในออฟฟิศและมหาวิทยาลัยแถบนี้คือ MacBook Air รุ่นฐาน RAM 8 GB ซึ่งตามความเข้าใจเดิมคือ “รันโมเดลได้แค่ระดับ 3B–8B quantized” การมีทางเลือกให้รันโมเดลคุณภาพระดับ 26B บนเครื่องเดิมโดยไม่ต้องซื้อใหม่ — แลกกับความเร็วราว 5–6 tok/s ซึ่งช้าเกินไปสำหรับ agent loop แต่พอใช้ได้สำหรับสรุปเอกสาร ร่างอีเมล หรือทำงาน batch ที่ไม่ต้องนั่งรอ — คือการเปิดเพดานที่มีค่าจริงในบริบทที่งบฮาร์ดแวร์จำกัดและข้อมูลบางประเภทออกจากเครื่องไม่ได้

แต่ต้องมองตรง ๆ ด้วยว่าจุดอ่อนใหญ่ของโปรเจกต์คือการ ผูกกับโมเดลเดียว เทคนิค expert streaming นี้ไม่ใช่ของใหม่เชิงแนวคิด (llama.cpp มี --n-cpu-moe, vLLM มี KV/expert offload, DeepSpeed-Inference ทำ ZeRO-Inference มาหลายปี) ของใหม่คือการเขียนทั้ง stack ลงไปถึง Metal kernel เพื่อจูนให้เข้ากับ MoE รูปร่างหนึ่ง ๆ อย่างสุดทาง ซึ่งได้ผลลัพธ์สวยแต่ย้ายไปโมเดลอื่นไม่ได้ฟรี ๆ บทเรียนที่มีค่ากว่าตัวโค้ดจึงเป็นข้อสังเกตเชิงสถาปัตยกรรม: MoE ที่ active parameter น้อยคือมิตรของเครื่องเล็ก — ยิ่ง MoE แบบ expert เยอะ-เล็ก (Gemma 4 26B ใช้ 128 expert เลือกมา 8) ยิ่ง streaming ได้คุ้ม เพราะแต่ละครั้งที่อ่านจากดิสก์อ่านน้อย ซึ่งเป็นทิศทางที่ผู้ผลิตโมเดลโอเพนเวทกำลังเดินอยู่พอดี

สิ่งที่ควรจับตาต่อคือมีใครนำแนวทางนี้ไป generalize เป็นเลเยอร์ที่รองรับหลายโมเดลได้หรือไม่ ถ้า MLX หรือ llama.cpp เอาบทเรียนจาก 103 การทดลองนี้ไปทำเป็น expert-streaming path ที่จูนดีเท่า ๆ กัน ผลกระทบจะกว้างกว่าโปรเจกต์เดี่ยวหลายเท่า และคำถามว่า “โมเดลขนาดเท่าไรรันในเครื่องได้” ก็จะต้องคิดใหม่ทั้งหมด

แหล่งข่าว

บทความนี้เรียบเรียงจากแหล่งข่าวต้นทาง — TurboFieldfare (GitHub)

เนื้อหาบน blog นี้สร้างโดย AI โดยมีการกำกับบรรณาธิการจากมนุษย์

อ่านเพิ่มในหมวด เครื่องมือนักพัฒนา

Betelgeuse รัน Qwen3.8 Flash Next ขนาด 68GB บน RTX 3060 กับแรม 16GB ส่วน Basalt วัดให้เห็นว่าเอนจินที่เร่งด้วยแฟล็กลัดทำให้โมเดลลืมของ
เครื่องมือนักพัฒนา

Betelgeuse รัน Qwen3.8 Flash Next ขนาด 68GB บน RTX 3060 กับแรม 16GB ส่วน Basalt วัดให้เห็นว่าเอนจินที่เร่งด้วยแฟล็กลัดทำให้โมเดลลืมของ

Betelgeuse ฟอร์ก llama.cpp ที่เปิดเมื่อ 31 ต.ค. ดึง expert จาก NVMe เข้า VRAM ตามต้องการ อ้าง 22 tok/s แบบไม่ทิ้ง expert แต่ README เตือนเองว่ายังทดลองและตัวเลขมาจากคนละรอบ วันเดียวกันผู้พัฒนา Basalt เผยผลวัดว่าแฟล็กเร่งความเร็วทำคุณภาพ Q8 ตกไปใกล้ Q2

· อ่าน 5 นาที
กฎห้ามโคลนเกมของ Claude Code เริ่มกระทบงานจริง บริษัทรับทำเกมกระดานร้องงานลูกค้าหยุด แต่รายงานหลายชิ้นปนกับตัวกรองไซเบอร์คนละเรื่อง
เครื่องมือนักพัฒนา

กฎห้ามโคลนเกมของ Claude Code เริ่มกระทบงานจริง บริษัทรับทำเกมกระดานร้องงานลูกค้าหยุด แต่รายงานหลายชิ้นปนกับตัวกรองไซเบอร์คนละเรื่อง

ต่อจากที่เราพบกฎนี้ในไบนารี Claude Code ผู้ใช้เริ่มรายงานว่างานเชิงพาณิชย์ถูกปฏิเสธ และ Tom's Hardware กับ Mashable หยิบไปรายงาน แต่เมื่อไล่ issue ที่อ้างถึง พบว่าหลายรายการเกิดก่อนกฎจะมา จึงน่าจะเป็นตัวกรองด้านไซเบอร์ ส่วน Anthropic ยังไม่ชี้แจง

· อ่าน 4 นาที
Claude Code ส่ง transcript ของ background agent ให้โมเดลทุก ~30 วินาทีเพื่อเขียนสถานะ 3–5 คำ ผู้วัดรายงานกินราว 16% และยังปิดแบบทางการไม่ได้
เครื่องมือนักพัฒนา

Claude Code ส่ง transcript ของ background agent ให้โมเดลทุก ~30 วินาทีเพื่อเขียนสถานะ 3–5 คำ ผู้วัดรายงานกินราว 16% และยังปิดแบบทางการไม่ได้

รายงานอิสระพบว่าฟีเจอร์ agent_summary ของ Claude Code ส่ง transcript เต็มของ background agent ไปถามสถานะทุก ~30 วินาที คิดเป็น 16.4% ของค่าใช้จ่ายในระบบของผู้วัด Issue เปิดมาตั้งแต่ ส.ค. ยังไม่มีสวิตช์ปิดที่รองรับ เราตรวจพบโค้ดนี้ใน 2.1.314 และพบกฎใหม่เรื่องเกมที่ไม่อยู่ใน changelog

· อ่าน 4 นาที