Quantization คืออะไร GGUF, AWQ, GPTQ, FP8 ต่างกันอย่างไร

ทีม buzzAIอัปเดต 7 หัวข้อ · คำถามที่พบบ่อย 4 ข้อ

เปิดหน้าโมเดลบน Hugging Face ทีไรก็เจอไฟล์ชื่อแปลกๆ อย่าง Q4_K_M, Q8_0, AWQ, GPTQ-Int4 หรือ FP8 ของโมเดลเดียวกันวางเรียงกันเป็นสิบไฟล์ บทความนี้อธิบายว่าแต่ละแบบคืออะไร คิดขนาดอย่างไร และควรเลือกไฟล์ไหนให้เข้ากับเครื่องที่มี

Quantization คืออะไร ทำไมโมเดลเล็กลงได้

Quantization คือการเก็บตัวเลข weight ของโมเดลด้วยจำนวน bit ที่น้อยลง เช่น จาก 16-bit เหลือ 8-bit หรือ 4-bit โมเดลยังมีจำนวนพารามิเตอร์เท่าเดิม แต่แต่ละตัวใช้พื้นที่น้อยลง ไฟล์และหน่วยความจำที่ต้องใช้จึงเล็กลงตามสัดส่วน

นึกถึงการวาดรูปด้วยสี 65,536 เฉด เทียบกับสี 16 เฉด ภาพยังเป็นวิวเดิม แต่รายละเอียดบางจุดหยาบลง weight แบบ 16-bit แทนค่าได้ 65,536 ระดับ แบบ 4-bit เหลือ 16 ระดับ เทคนิค quantization จึงแบ่ง weight เป็นกลุ่มเล็กๆ (block) แล้วเก็บค่าสเกลของแต่ละกลุ่มไว้ เพื่อให้ 16 ระดับนั้นวางอยู่ตรงช่วงตัวเลขที่กลุ่มนั้นใช้จริง

ทำไมเรื่องนี้สำคัญกับการรันโมเดล มีสองเหตุผล

  1. ใส่ได้หรือไม่ได้ โมเดลต้องโหลดทั้งก้อนเข้า VRAM หรือ unified memory ถ้าใหญ่เกินก็รันบน GPU ไม่ได้
  2. เร็วขึ้นตอนตอบ ทุก token ที่โมเดลพิมพ์ออกมา GPU ต้องอ่าน weight ทั้งหมดจากหน่วยความจำหนึ่งรอบ ข้อมูลน้อยลงก็อ่านเสร็จเร็วขึ้น (เรื่องความเร็วอ่านต่อที่ TTFT และ Tokens per second)

โมเดล 27B ใช้หน่วยความจำเท่าไรที่ 16, 8 และ 4-bit

สูตรคร่าวๆ คือ ขนาด (GB) ≈ จำนวนพารามิเตอร์ (พันล้าน) × bit ต่อ weight ÷ 8 โมเดล 27B ที่ 16-bit จึงใช้ราว 54 GB ที่ 8-bit ราว 27 GB และที่ 4-bit ราว 13.5 GB ไฟล์จริงจะใหญ่กว่านี้เล็กน้อย เพราะต้องเก็บค่าสเกลและบางส่วนไม่ถูกลดความละเอียด

ความละเอียดbit ต่อ weightคิดเลข (27B)ขนาดตามทฤษฎี
FP16 / BF161627 × 16 ÷ 854 GB
FP8 / INT8827 × 8 ÷ 827 GB
4-bit427 × 4 ÷ 813.5 GB

เทียบกับไฟล์จริงของ Qwen3.8-27B ที่ ggml-org ทำไว้บน Hugging Face (ณ พฤศจิกายน 2569) ไฟล์ BF16 หนัก 53.81 GB หารด้วย 2 ไบต์ได้ราว 26.9 พันล้านพารามิเตอร์ ตรงกับสูตร

ไฟล์ขนาดจริงเทียบ BF16
Qwen3.8-27B-BF16.gguf53.81 GB100%
Qwen3.8-27B-Q8_0.gguf28.60 GB53%
Qwen3.8-27B-Q4_K_M.gguf19.40 GB36%

Q8_0 ใหญ่กว่า 27 GB เพราะทุก 32 weight มีค่าสเกลหนึ่งตัว เฉลี่ยจึงเป็น 8.5 bit ต่อ weight (26.9 × 8.5 ÷ 8 ≈ 28.6 GB) ส่วน Q4_K_M ไม่ได้เป็น 4-bit ทุก tensor บางส่วนถูกเก็บละเอียดกว่า ไฟล์จึงใหญ่กว่าตัวเลขทฤษฎีพอสมควร ฝั่ง safetensors ก็เป็นแบบเดียวกัน Qwen ปล่อย Qwen3.8-27B-FP8 ขนาดรวม 30.87 GB เทียบกับต้นฉบับ 55.56 GB ซึ่งรวม vision encoder ด้วย

ตัวเลขทั้งหมดนี้คือ weight อย่างเดียว ยังต้องบวก KV cache ที่โตตามความยาว context และหน่วยความจำของตัวโปรแกรม ดูสูตรเต็มได้ที่ GPU สำหรับรัน LLM ต้องใช้ VRAM เท่าไร

อธิบายด้วยภาพ

Qwen3.8-27B ไฟล์ GGUF ใหญ่เท่าไร

  1. BF16 (16 bit)53.81 GBราว 26.9 พันล้านพารามิเตอร์ × 2 ไบต์
  2. Q8_0 (8.5 bit)28.60 GB26.9 × 8.5 ÷ 8
  3. Q4_K_M19.40 GBบาง tensor เก็บละเอียดกว่า 4 bit
  4. ประหยัดเทียบ BF16ราว 64%

ขนาดไฟล์จาก ggml-org/Qwen3.8-27B-GGUF บน Hugging Face ณ พฤศจิกายน 2569 เป็นเฉพาะ weight ยังต้องบวก KV cache ตามความยาว context

GGUF คืออะไร Q4_K_M และ Q8_0 แปลว่าอะไร

GGUF คือรูปแบบไฟล์โมเดลไฟล์เดียวที่เก็บทั้ง weight และ metadata เช่น tokenizer และ chat template พัฒนาโดยผู้สร้าง llama.cpp ใช้กับ llama.cpp, Ollama, LM Studio และ GPT4All ชื่ออย่าง Q4_K_M บอกวิธี quantize ของไฟล์นั้น

ถอดชื่อได้แบบนี้: Q คือ quantized ตัวเลขคือจำนวน bit หลัก K คือ k-quant ที่จัด weight เป็น super-block พร้อมค่าสเกล และ S, M, L คือระดับการผสม (เล็ก กลาง ใหญ่) ยิ่งใหญ่ยิ่งเก็บ tensor สำคัญละเอียดขึ้น ส่วน _0 เป็นแบบเก่าที่ปัดค่าเป็นกลุ่มละ 32 ตัว และชื่อที่ขึ้นต้นด้วย IQ ใช้ importance matrix ช่วยเลือกว่าจะรักษา weight ไหนไว้

ตารางนี้มาจาก README ของ llama-quantize ที่วัดกับ Llama 3.1 8B บนเครื่องทดสอบของโปรเจกต์ ความเร็วจริงบนเครื่องคุณจะต่างไป แต่สัดส่วนบอกแนวโน้มได้

ชนิดbit ต่อ weightขนาด (GiB)สร้างข้อความ (token/วินาที)
F1616.0014.9629.17
Q8_08.507.9550.93
Q6_K6.566.1458.67
Q5_K_M5.705.3367.23
Q4_K_M4.894.5871.93
Q2_K3.162.9579.85

Q4_K_M เป็นค่าตั้งต้นที่เครื่องมือหลายตัวเลือกให้ เช่น llama-server -hf และ ollama run hf.co/... จะหยิบ Q4_K_M ก่อนถ้า repo มีไฟล์นี้ อยากได้ชนิดอื่นก็ระบุในชื่อ tag หรือท้ายชื่อ repo

bash
# Ollama: เลือก tag ตามชนิด quantization
ollama run qwen3.8:27b-q8_0

# llama.cpp: ต่อชนิดท้ายชื่อ repo บน Hugging Face
llama-server -hf ggml-org/Qwen3.8-27B-GGUF:Q4_K_M

# quantize เองจากไฟล์ BF16 ด้วย llama.cpp
llama-quantize model-bf16.gguf model-Q4_K_M.gguf Q4_K_M

AWQ, GPTQ และ FP8 ต่างกันอย่างไร ใช้กับอะไร

AWQ และ GPTQ คือวิธี quantize weight ให้เหลือ 4-bit โดยใช้ข้อมูลตัวอย่างช่วยลดความผิดพลาด ส่วน FP8 คือการเก็บตัวเลขเป็นทศนิยม 8-bit ที่ GPU รุ่นใหม่คำนวณได้โดยตรง ทั้งสามแบบเป็นไฟล์ safetensors สำหรับรันบน GPU ผ่าน inference server อย่าง vLLM ไม่ได้ออกแบบมาสำหรับ CPU หรือ Mac เหมือน GGUF

  • GPTQ (Frantar และคณะ, 2022) quantize ทีละ layer โดยใช้ข้อมูลอนุพันธ์อันดับสองแบบประมาณ งานวิจัยระบุว่า quantize โมเดล 175B เหลือ 3 หรือ 4 bit ได้ในราวสี่ชั่วโมง GPU
  • AWQ (Lin และคณะ, 2023 ได้รางวัล Best Paper ของ MLSys 2024) สังเกตว่า weight ไม่ได้สำคัญเท่ากัน การปกป้อง weight สำคัญเพียงราว 1% ที่หาได้จากค่า activation ช่วยลดความผิดพลาดได้มาก เอกสาร vLLM ระบุว่าไลบรารี AutoAWQ เลิกพัฒนาแล้ว และย้ายความสามารถนี้ไปอยู่ใน llm-compressor
  • FP8 ลดหน่วยความจำของ weight ลงครึ่งหนึ่งจาก 16-bit เอกสาร vLLM ระบุว่าการคำนวณแบบ FP8 ต้องใช้ GPU NVIDIA ที่ compute capability 8.9 ขึ้นไป (Ada Lovelace, Hopper, Blackwell) ส่วนการ์ดรุ่น Ampere จะโหลด weight แบบ FP8 แต่คำนวณที่ 16-bit
  • NVFP4 และ MXFP4 เป็นทศนิยม 4-bit รุ่นใหม่ NVFP4 ของ NVIDIA ออกแบบมาสำหรับ Blackwell ใช้ค่าสเกลหนึ่งตัวต่อ 16 ค่า ส่วน gpt-oss ของ OpenAI ใช้ MXFP4 กับ weight ของส่วน MoE จนรุ่น 120b ลงการ์ด 80GB ใบเดียวได้
รูปแบบbit ที่พบบ่อยใช้กับฮาร์ดแวร์
GGUF (Q2_K–Q8_0, IQ)2–8llama.cpp, Ollama, LM StudioCPU, Mac, การ์ด NVIDIA และ AMD
MLX4, 8LM Studio และ Ollama บน MacMac ชิป M
GPTQ4 (มี 3 และ 8)vLLM, TransformersGPU NVIDIA รุ่น Volta–Hopper ในตาราง vLLM
AWQ4vLLMGPU NVIDIA รุ่น Turing–Hopper ในตาราง vLLM
FP88vLLMคำนวณเต็มรูปบน Ada, Hopper, Blackwell
NVFP4 / MXFP44vLLMNVFP4 เน้น Blackwell

vLLM โหลด GGUF ได้เหมือนกัน แต่เอกสารเตือนว่ายังเป็นฟีเจอร์ทดลอง ถ้าจะตั้ง server จริงจึงควรใช้ไฟล์ FP8, AWQ หรือ GPTQ (ดู vLLM คืออะไร) ตัวอย่างเช่น vllm serve Qwen/Qwen3.8-27B-FP8 ซึ่ง vLLM อ่านชนิด quantization จากไฟล์ config ของโมเดลเอง

Quantization ทำให้โมเดลแย่ลงแค่ไหน

Quantization ทำให้ความแม่นลดลงเสมอ แต่ขนาดของผลต่างขึ้นกับจำนวน bit วิธีที่ใช้ และงาน ที่ 8-bit ผลต่างมักน้อยมาก ที่ 4-bit ด้วยวิธีที่ดียังใช้งานได้ดีกับงานส่วนใหญ่ ส่วนต่ำกว่า 4-bit ความผิดพลาดเริ่มเห็นชัด โดยเฉพาะกับโมเดลขนาดเล็ก

หลักฐานที่มีตอนนี้มาจากผู้พัฒนาเองเป็นส่วนใหญ่ จึงควรอ่านอย่างระวัง

  • README ของ llama.cpp บอกว่า quantization อาจทำให้ความแม่นลดลง วัดได้ด้วย perplexity หรือ KL divergence และลดผลกระทบได้ด้วย importance matrix
  • การ์ดโมเดล Qwen3.8-27B-FP8 ระบุว่าผลการวัดใกล้เคียงต้นฉบับมาก
  • Google ระบุว่า Gemma 4 รุ่น QAT ซึ่งฝึกให้ชินกับ 4-bit ตั้งแต่ตอนเทรน ได้คุณภาพใกล้ bfloat16
  • งานวิจัยของ Dettmers และ Zettlemoyer (2022) ที่ทดลองกว่า 35,000 ครั้ง สรุปว่า 4-bit แทบจะเป็นจุดที่คุ้มที่สุดเมื่อเทียบจำนวน bit รวมกับความแม่น แปลว่าโมเดลใหญ่ที่ 4-bit มักดีกว่าโมเดลเล็กที่ 16-bit ในงบหน่วยความจำเท่ากัน

ตัวเลข benchmark กลางบอกไม่ได้ว่างานของคุณจะเสียแค่ไหน งานที่ไวต่อรายละเอียด เช่น โค้ด คณิตศาสตร์ เอกสารยาว และภาษาไทย ควรทดสอบกับตัวอย่างงานจริง 20–50 ข้อ เทียบไฟล์สองระดับก่อนตัดสินใจ

เลือก quantization แบบไหนดี

ให้เลือกจากเครื่องมือที่ใช้รันก่อน แล้วเลือกจำนวน bit สูงสุดที่ยังใส่หน่วยความจำได้พร้อม context ที่ต้องการ รันบนโน้ตบุ๊กหรือ Mac ใช้ GGUF หรือ MLX ตั้ง server บน GPU NVIDIA ใช้ FP8, AWQ หรือ GPTQ

  1. รู้จักเครื่องมือ Ollama, LM Studio, llama.cpp ใช้ GGUF (Mac ใช้ MLX ได้ด้วย) ส่วน vLLM ใช้ไฟล์ safetensors แบบ FP8, AWQ, GPTQ
  2. คิดงบหน่วยความจำ ขนาดไฟล์บวก KV cache ต้องไม่เกิน VRAM หรือ unified memory ที่เหลือ
  3. เริ่มที่ Q4_K_M บนเครื่องเดียว ถ้าเหลือที่ค่อยขยับเป็น Q5_K_M, Q6_K หรือ Q8_0
  4. ใช้ไฟล์ทางการก่อน ถ้าผู้พัฒนามีรุ่น FP8 หรือ QAT ให้ใช้รุ่นนั้นก่อนไฟล์ที่คนอื่น quantize
  5. GPU ใหม่ใช้ FP8 การ์ดตระกูล Ada, Hopper, Blackwell คำนวณ FP8 ได้โดยตรง ถ้าใส่ไม่พอค่อยลงไป AWQ หรือ GPTQ 4-bit
  6. อย่าลงต่ำกว่า 4-bit ถ้าไม่จำเป็น Q3 และ Q2 ใช้เมื่อไม่มีทางเลือก และควรทดสอบงานจริงทุกครั้ง

อยากลองเปรียบเทียบเองบนเครื่อง ดูวิธีติดตั้งได้ที่ รัน LLM บนเครื่องด้วย Ollama และ LM Studio

ถ้าไม่อยากดูแลโมเดลและ GPU เอง buzzAI ช่วยอะไรได้

buzzAI เป็น API สำหรับ coding agent ที่รันโมเดล open-weight Qwen3.8-27B ในรุ่น NVFP4 (4-bit) ที่ NVIDIA ทำจากโมเดลนี้ บนการ์ด GPU ที่ buzzAI ดูแลเอง ฝั่งผู้ใช้จึงไม่ต้องเลือกไฟล์ quantization จัดหา GPU หรือคำนวณ VRAM แค่ตั้ง base URL เป็น https://api.heybuzzai.com/v1 ใช้ได้กับ Claude Code, Codex CLI และเครื่องมือที่ตั้ง base URL เองได้

แพ็กเหมาจ่ายไม่คิดค่า token สิ่งที่จำกัดคือจำนวน agent ที่รันพร้อมกัน ขนาด context ของแพ็ก (64K ถึง 256K) และคิวในช่วงคนใช้เยอะ ตอนนี้ API ยังไม่เปิดให้ทุกคน ขอร่วมทดสอบได้ที่หน้าแรก แล้วเราจะส่ง API key ทางอีเมลเมื่อมีผู้สมัครครบโควต้าที่กำหนด ดูแพ็กทั้งหมดที่หน้าราคา

คำถามที่พบบ่อย

Q4_K_M กับ Q5_K_M ต่างกันแค่ไหน?

ในตารางของ llama.cpp ที่วัดกับ Llama 3.1 8B ไฟล์ Q4_K_M ใช้ราว 4.89 bit ต่อ weight ขนาด 4.58 GiB ส่วน Q5_K_M ใช้ราว 5.70 bit ขนาด 5.33 GiB ใหญ่ขึ้นราว 16% แลกกับความแม่นที่ใกล้ต้นฉบับขึ้น ถ้าหน่วยความจำเหลือพอ Q5_K_M หรือ Q6_K เป็นตัวเลือกที่ปลอดภัยกว่า

Quantization ทำให้ใช้ VRAM น้อยลงทั้งหมดไหม?

ลดเฉพาะส่วนของ weight ส่วน KV cache ที่โตตามความยาว context และหน่วยความจำของตัวโปรแกรมยังต้องเผื่อแยก KV cache ลดขนาดได้อีกทางหนึ่ง เช่น flag -ctk q8_0 และ -ctv q8_0 ใน llama.cpp

QAT ต่างจาก quantization ปกติอย่างไร?

quantization ทั่วไปทำหลังเทรนเสร็จ (post-training) ส่วน QAT (Quantization-Aware Training) ให้โมเดลเรียนรู้กับความละเอียดที่ลดลงระหว่างเทรน Google ปล่อย Gemma 4 แบบ QAT ที่ระบุว่าคุณภาพใกล้ bfloat16 และ gpt-oss ของ OpenAI ก็ post-train มาด้วย MXFP4

Quantize โมเดลเองได้ไหม หรือต้องโหลดของคนอื่น?

ทำเองได้ ฝั่ง GGUF ใช้สคริปต์ convert_hf_to_gguf.py แล้วตามด้วย llama-quantize ของ llama.cpp ฝั่ง GPU ใช้ llm-compressor ของโปรเจกต์ vLLM แต่ถ้าผู้พัฒนาโมเดลมีไฟล์ทางการอย่าง FP8 หรือ QAT ให้ใช้ของทางการก่อน

แหล่งอ้างอิง

  1. quantize — ggml-org/llama.cpp — GitHubgithub.com
  2. GGUF — Hugging Face Hub docshuggingface.co
  3. Quantization — vLLMdocs.vllm.ai
  4. FP8 W8A8 — vLLMdocs.vllm.ai
  5. AWQ: Activation-aware Weight Quantization for LLM Compression and Acceleration — arXivarxiv.org
  6. GPTQ: Accurate Post-Training Quantization for Generative Pre-trained Transformers — arXivarxiv.org

ข้อมูล ณ วันที่อัปเดต แพ็ก โควตา และคำสั่งของแต่ละเครื่องมือเปลี่ยนได้บ่อย ก่อนใช้งานจริงควรตรวจกับเอกสารทางการที่ลิงก์ไว้ในแหล่งอ้างอิง

AI Inference

อ่านต่อในหมวดเดียวกัน

ดูทุกบทความในหมวดนี้

พร้อมให้ Coding Agent
ทำงานแบบไม่คิดค่า token
แล้วหรือยัง?

ไม่คิดค่า token ใช้กับ Claude Code, Codex และเครื่องมือที่ตั้ง base URL เองได้ รอบนี้เปิดใช้เมื่อมีผู้สมัครครบโควต้าที่กำหนด แล้วเราจะส่ง API key ให้ทางอีเมล

  • Claude Code
  • Codex
  • OpenCode
  • Cline
  • Roo Code
  • Kilo Code
  • Aider
  • Qwen Code
  • Crush
  • Hermes