ข้ามไปยังเนื้อหา
Hugging Face ให้ transformers โหลดไฟล์ GGUF ของ llama.cpp ได้ตรง ๆ แล้ว — ยืม kernel ของ ggml มารันบน Mac ได้เร็วใกล้ llama.cpp แต่ตอนนี้ใช้ได้แค่ Apple Silicon กับตระกูล Qwen3.5
เครื่องมือนักพัฒนา

Hugging Face ให้ transformers โหลดไฟล์ GGUF ของ llama.cpp ได้ตรง ๆ แล้ว — ยืม kernel ของ ggml มารันบน Mac ได้เร็วใกล้ llama.cpp แต่ตอนนี้ใช้ได้แค่ Apple Silicon กับตระกูล Qwen3.5

อ่าน 5 นาที ที่มา: Hugging Face Blog

วันที่ 22 ก.ย. 2026 Hugging Face เผยแพร่บทความ “Transformers now runs llama.cpp quants” (Marc Sun, Arthur Zucker และ Lysandre Debut) บอกว่า transformers โหลดไฟล์ GGUF แบบ quantize ได้โดยตรงแล้ว ไฟล์ GGUF คือรูปแบบที่ llama.cpp, Ollama และ LM Studio ใช้ ก่อนหน้านี้ transformers อ่าน GGUF ได้ก็จริง แต่ต้อง dequantize กลับเป็นน้ำหนักเต็มก่อน ทำให้กินหน่วยความจำจนเสียประโยชน์ของการ quantize ไป คราวนี้น้ำหนักจะคงสภาพ quantize ไว้บน GPU แล้วใช้ kernel Metal ของ ggml ที่แพ็กขึ้น Hub ผ่านไลบรารี kernels มาคำนวณ

ผลคือไฟล์ GGUF ตัวเดียวกับที่ใช้ใน llama.cpp สามารถนำมาใช้กับ API ของ transformers ได้เลย ทั้ง generate, hook, logits processor และ transformers serve ที่ให้ endpoint แบบ OpenAI-compatible สำหรับคนที่เขียน eval หรือทดลองวิจัยด้วย PyTorch นี่ช่วยได้มาก แต่ตอนนี้ยังมีข้อจำกัดชัดเจน คือ ใช้ได้เฉพาะ Mac ที่เป็น Apple Silicon และเฉพาะสถาปัตยกรรม Qwen3.5 (รวมถึง checkpoint Qwen3.8 ที่เข้ากันได้)

ใช้งานอย่างไร

ตอนนี้ต้องติดตั้ง transformers จาก branch main ไปจนกว่าจะออกรุ่นถัดไป และต้องใช้ PyTorch รุ่นที่มี kernel build รองรับ ซึ่งโดยปกติคือ PyTorch สองรุ่นล่าสุด

pip install -U "git+https://github.com/huggingface/transformers.git" kernels

จากนั้นส่งชื่อไฟล์ผ่าน gguf_file เป็นขั้นตอนเดียวที่เพิ่มขึ้นมา

from transformers import AutoModelForCausalLM, AutoTokenizer

model_id = "unsloth/Qwen3.5-4B-GGUF"
filename = "Qwen3.5-4B-Q4_K_M.gguf"
tokenizer = AutoTokenizer.from_pretrained(model_id, gguf_file=filename)
model = AutoModelForCausalLM.from_pretrained(model_id, gguf_file=filename)

ถ้าจะรันเป็นเซิร์ฟเวอร์ให้ใช้ transformers serve "unsloth/Qwen3.5-4B-GGUF:Qwen3.5-4B-Q4_K_M.gguf" แล้วชี้ client อย่าง Jan หรือ Pi ไปที่ http://localhost:8000/v1 ส่วนคนที่อยาก fine-tune ต่อจาก GGUF ก็ส่ง GgufConfig(dequantize=True) เพื่อขยายน้ำหนักกลับเป็น bf16 ได้

เบื้องหลังมี kernel ห้าตัว ได้แก่ ggml-quantization ที่อ่านน้ำหนักแบบแพ็กตรง ๆ, ggml-norm, ggml-attn (flash attention ของ ggml), ggml-gated-delta-net สำหรับเลเยอร์ linear attention ของ Qwen3.5/3.8 และ topk สำหรับเลือก expert ใน MoE ซึ่งทีมเขียนเอง ถ้าดึง kernel attention ไม่ได้ ระบบจะ fallback ไปใช้ sdpa พร้อมแสดงคำเตือน

ตัวเลขเทียบกับ llama.cpp — อ่านให้ถูก

วัดบน MacBook Pro M2 Max แรม 32 GB (ตัวเลขจากกราฟ SVG ในบทความ)

โมเดล (GGUF)transformersllama.cpp
Qwen3.5-4B Q4_K_M (2.74 GB)70.4 tok/s71.8 ± 0.4
Qwen3.8-27B UD-Q4_K_M (16.5 GB)15.9 tok/s13.4 ± 0.9
Qwen3.5-35B-A3B UD-IQ4_XS (16.3 GB)60.2 tok/s61.3 ± 0.5

ถ้าดูเฉพาะตาราง จะเห็นว่า transformers ชนะ llama.cpp บนโมเดล 27B แต่ สองคอลัมน์นี้วัดคนละแบบ ฝั่ง transformers ใช้ค่าที่ดีที่สุดจากสามรอบ และรวมเวลา prefill ของ prompt 12 token ส่วน llama.cpp ใช้ llama-bench tg128 ซึ่งเป็นค่าเฉลี่ยสามรอบของการ decode อย่างเดียว บทความเองก็เขียนไว้ว่ากราฟนี้ “does not imply identical benchmark conditions” ข้อสรุปที่ถูกต้องจึงเป็นแค่ว่า ความเร็วใกล้เคียงกัน ไม่ได้แปลว่าเร็วกว่า

บทความยังแยกให้เห็นด้วยว่าความเร็วมาจากไหน การเปิด layer kernel ครบชุดทำให้เร็วขึ้น 1.51–2.09 เท่าเทียบกับการเปิดแค่ kernel quantization (MoE 35B-A3B ได้มากที่สุด จาก 28.8 เป็น 60.2) ส่วนการแก้ generation loop สองจุดทำให้เร็วขึ้นอีก 1.16–1.79 เท่า สองจุดนั้นคือการทิ้ง attention mask ที่เป็น 1 ทั้งหมดตั้งแต่ต้น (#48814) และการเลื่อนการตรวจ stopping criteria ไปอ่านแบบ async ในสเต็ปถัดไป (#47975) ข้อดีคือการแก้ generation loop นี้ ใช้ได้กับทุกโมเดลใน transformers ไม่เฉพาะ GGUF

ข้อจำกัดที่ทีมยอมรับเอง

  • เส้นทางรันแบบแพ็กน้ำหนักใช้ได้เฉพาะ MPS เท่านั้น บน CUDA หรือ CPU ยังต้อง dequantize ก่อน
  • input ที่มี padding และการรันแบบ batch ยังช้า เป้าหมายตอนนี้คือบทสนทนาเดียวแบบ interactive
  • รองรับแค่ Qwen3.5 dense/MoE และ Qwen3.8 ที่เข้ากันได้ ตัวอื่นต้องเปิด issue ขอ
  • ทีมเขียนชัดว่า “llama.cpp remains our recommended engine when your priority is efficient local inference”

มุมมอง AI Curator

ข่าวนี้ไม่ได้บอกว่า transformers จะมาแทน llama.cpp ทีมเขียนไว้ตรง ๆ ว่ายังแนะนำ llama.cpp สิ่งที่เปลี่ยนจริงคือ GGUF ไม่ได้เป็นแค่ไฟล์สำหรับ deploy อีกแล้ว แต่นำมาใช้ในงานวิจัยได้ด้วย ก่อนหน้านี้ถ้าอยากรู้ว่า Q4_K_M ทำให้โมเดลเสียความแม่นยำเท่าไรในงานของเรา ต้องรัน eval ผ่าน llama.cpp server ซึ่งดู activation ไม่ได้ และเขียน logits processor ไม่ได้ ตอนนี้โหลดไฟล์ quantize ที่ผู้ใช้จริงดาวน์โหลดไปใช้ แล้วรันผ่าน eval pipeline เดิมของ transformers ได้เลย ทีมที่ปล่อยโมเดลภาษาไทยขนาดเล็กเป็น GGUF ควรใช้โอกาสนี้วัดว่าแต่ละระดับ quantize ทำให้ภาษาไทยเสียหายเท่าไร เพราะ tokenizer ไทยมักใช้ token มากกว่าภาษาอังกฤษ ความคลาดเคลื่อนจาก quantize อาจสะสมมากกว่าตัวเลขที่วัดบนภาษาอังกฤษ

ส่วนที่มีผลระยะยาวกว่าคือย่อหน้า “Beyond GGUF” ซึ่งบอกว่าจะนำ kernel ของ ggml ไปใช้กับสถาปัตยกรรมที่ llama.cpp ยังไม่รองรับ ถ้าทำได้จริง โมเดลใหม่ ๆ ที่เคยต้องรอหลายสัปดาห์กว่าจะมีคนเขียน implementation ใน llama.cpp อาจรันแบบ quantize บน Mac ได้ตั้งแต่วันแรกผ่าน transformers นี่คือผลของการที่ ggml เข้ามาอยู่กับ Hugging Face อย่างไรก็ตาม ตอนนี้ยังเป็นแค่ Mac กับ Qwen ตระกูลเดียว คนที่ใช้การ์ด NVIDIA ยังไม่ได้อะไรจากข่าวนี้ และควรรอดูว่า generate_batch บน MPS กับสถาปัตยกรรมอื่นจะตามมาเร็วแค่ไหน

แหล่งข่าว

บทความนี้เรียบเรียงจากแหล่งข่าวต้นทาง — Hugging Face Blog

เนื้อหาบน 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 นาที