เข้าไปในเธรดไหนเกี่ยวกับ local LLM ก็ตาม การโต้เถียงจะเป็นเรื่อง GPU ทั้งนั้น เบนช์มาร์ก VRAM การ์ด 24 GB CUDA ปะทะ ROCm และประเด็นว่า 3060 ยังเป็นการ์ดของประชาชนหรือไม่ ขณะที่ตัวเลขที่ตัดสินจริง ๆ ว่าโมเดลของคุณจะรันได้หรือไม่ นั่งอยู่อีกช่อง — ไม่มีเบนช์มาร์ก ไม่มีการตลาด: เครื่องนั้นมี RAM กี่กิกะไบต์
VRAM ขายความฝัน RAM ตัดสินว่าโมเดลจะรันขึ้นมาได้จริงหรือไม่ — และถ้ารันได้ คอนเท็กซ์จะรอดมาได้เท่าไร
ผมทดสอบเรื่องนี้บนเครื่องตรงหน้าระหว่างเขียนโพสต์นี้: เดสก์ท็อป Ryzen แรม 32 GB กับ GeForce RTX 3060 ที่มี VRAM 12 GB ดึง llama3.1:8b มา — หน้าดาวน์โหลดบอก 4.9 GB ดูซิว่ามันจองพื้นที่จริงไปเท่าไร

ทั้งหมดของประเด็นนี้อยู่ในจอเดียว โมเดล «4.9 GB» จองพื้นที่ 7.0 GB ก่อนจะตอบพรอมป์แรกแม้แต่คำเดียว — ภาษีคอนเท็กซ์ 43% — และกุม VRAM ไว้ 7,963 จาก 12,288 MiB น้ำหนักโมเดลไม่เคยเป็นงบประมาณ งบประมาณที่แท้จริงคือคอนเท็กซ์
กิกะไบต์ที่เกินมามาจากไหน
เอกสารหน่วยความจำของ llama.cpp อธิบายสมการที่หน้าดาวน์โหลดละไว้: หน่วยความจำรวม = น้ำหนักโมเดล + KV cache + compute buffer มีเพียงพจน์แรกที่คงที่ KV cache โตเชิงเส้นตามความยาวคอนเท็กซ์ ส่วน compute buffer โตตามขนาดแบตช์ Ollama ห่อ llama.cpp ไว้ กฎเดียวกันจึงใช้ได้ — นี่คือเหตุผลที่ ollama ps รายงาน 7.0 GB สำหรับแท็กขนาด 4.9 GB ที่หน้าต่างคอนเท็กซ์ 32,000 โทเคน และทั้งหมดอยู่บน GPU
โมเดลที่ควอนไทซ์แล้วไม่ใช่การประนีประนอม มันคือการยอมรับว่าหน่วยความจำต่างหากที่เป็นงบประมาณจริงมาตลอด
นี่ก็คือเหตุผลที่ บันไดควอนไทเซชัน GGUF มีอยู่จริง Q4 ไม่ใช่ศาสนา Q4 คือวิธีทำให้สมการหน่วยความจำลงจอดอยู่ในฮาร์ดแวร์ที่ผู้คนมีกันจริง และนั่นคือเหตุผลที่สองเซ็ตอัป 8B ที่ «เหมือนกัน» พฤติกรรมไม่เหมือนกันเลย: โมเดลเดียวกัน ความยาวคอนเท็กซ์ต่างกัน เครื่องต่างกัน
ตารางที่ไม่มีใครกรอกก่อนซื้อ
สามระดับโมเดล หน่วยความจำสองประเภท การ์ด 12 GB กับแรม 32 GB — คือคอนฟิกที่นักพัฒนาหลายพันคนมีกันจริง:
| ระดับโมเดล (Q4) | ดาวน์โหลด | โหลดแล้ว + ctx 32k | บน VRAM 12 GB | บน RAM 32 GB |
|---|---|---|---|---|
7–8B (llama3.1:8b) | 4.9 GB | 7.0 GB (วัดจริง) | 100% GPU ใช้ ~8 GiB | แทบไม่รู้สึก |
13–14B (qwen2.5:14b) | 9.0 GB | ~12 GB | เริ่ม offload | สบาย |
27–32B (gemma3:27b) | 17 GB | ~20 GB ขึ้นไป | CPU แบกน้ำหนัก | เหตุผลเดียวที่มันรันได้ |
อ่านสองแถวสุดท้ายอีกครั้ง ด้วย VRAM เพียงอย่างเดียว โมเดล 14B ที่คอนเท็กซ์จริงคืองาน offload แบ่งครึ่งไปแล้ว ส่วน 27B เป็นไปไม่ได้เลย แต่บนแรม 32 GB ทั้งคู่แค่ช้า ความต่างนี้ — ระหว่างเป็นไปไม่ได้กับช้า — คือความต่างเชิงปฏิบัติทั้งหมดระหว่าง VRAM กับ RAM ลง VRAM ได้คือเร็ว ลง RAM ได้คือรันได้ ไม่ลงทั้งคู่ คุณกำลังสลับไปที่ NVMe และเวลาเสียความหมาย
offload เดินทางผ่าน PCIe และ FAQ ของ Ollama พูดถึงราคาตรง ๆ: เลเยอร์ที่ลง GPU ไม่หมดจะไปรันบน CPU และทรูพุตพังทลายเมื่อส่วนแบ่ง GPU หดตัว ไม่มีใครเลือกการแลกเปลี่ยนนี้ด้วยความตั้งใจ มันเกิดแบบเงียบ ๆ ทีละเลเยอร์ อาการที่ปรากฏมีแค่ «local LLM ถูกชูโรงเกินไป»
สมุดบัญชีตรงไปตรงมา
สิ่งที่พังหรือทำให้ตกใจระหว่างเขียนชิ้นนี้ เรียงตามลำดับ:
- ตัวเลข 43% นั่นเอง ผมคาดว่าโมเดล 8B จะกินพื้นที่ «ราว ๆ ขนาดไฟล์มัน» แต่มันจอง 7.0 GB เทียบกับที่ดาวน์โหลดมา 4.9 GB ถ้าถ้ามันทำให้ผมตกใจ มันก็จะทำให้ทุกคนตกใจเช่นกันที่อ่านสเปกชีตแทนที่จะดู
ps - ช่วงจับภาพหน้าจอ รอบแรกผมจับผิดหน้าต่าง รอบที่สองสำเร็จ — นั่นคือภาพด้านบน หลักฐานคือเวิร์กโฟลว์ ไม่ใช่บรรยากาศ และวงจร pull → จับภาพ →
ollama rmทำให้ดิสก์ซื่อสัตย์ - สิ่งที่ไม่พัง: GPU ไม่เคยล้นเลย 8B ที่คอนเท็กซ์ 32k บนการ์ด 12 GB สบายจริง ๆ การ์ดปกติดี สิ่งที่สอบเทียบผิดคือวาทกรรมรอบ ๆ การ์ด
ทั้งหมดนี้ไม่ได้แปลว่า GPU ไม่สำคัญ — บรรทัด 100% GPU ในภาพคือเหตุผลที่การสร้างข้อความรู้สึกเร็วดังทันที ประเด็นคือ GPU เป็นคำถามที่สอง การเลือก ระหว่าง Ollama กับ llama.cpp มาหลังจากรู้แล้วว่าอะไรลง ไม่ใช่ก่อน
กฎที่ควรเก็บไว้
RAM ที่ต้องมี = ไฟล์โมเดล + KV cache สำหรับคอนเท็กซ์จริงของคุณ + 4 GB เพื่อยังเป็นคอมพิวเตอร์อยู่ สำหรับ 7–8B ที่ Q4 แรม 16 GB สบาย สำหรับ 14B–32B แรม 32 GB เลิกเป็นของฟุ่มเฟือยและกลายเป็นใจความหลัก ซื้อ VRAM เพื่อความเร็วที่ต้องการที่คอนเท็กซ์ที่ใช้ ซื้อ RAM เพื่อทุกอย่างที่สักวันจะโหลด
มอง
ollama psสักครั้ง แล้วศาสนาสเปกชีตจะจบลงอย่างเงียบ ๆ
คำถามสองข้อครับ ตอนประกอบเครื่องถัดไป คุณซื้อ VRAM เพื่อเบนช์มาร์กที่จะโพสต์ หรือซื้อ RAM เพื่อโมเดลที่จะรันจริง และพูดตรง ๆ: โมเดลที่ดึงมาตอนตีสอง ล้างไปกี่ตัวก่อนข้าวเช้า ผมล้างเมื่อคืนนี้เอง กลางโพสต์เลย ไปบอกในคอมเมนต์หน่อยว่าผมไม่ได้ตัวเดียว — แล้วเครื่องคุณยืนอยู่ฝั่งไหนของเส้นแบ่ง RAM/VRAM
FAQ
ต้องมี RAM เท่าไรจึงจะรัน local LLM ได้
ขนาดไฟล์โมเดล บวกคอนเท็กซ์ บวกส่วนของเดสก์ท็อปตัวเอง โมเดล 7–8B ที่ Q4 ใช้ 16 GB ได้สบาย ส่วน 32 GB คือสิ่งที่เปลี่ยนโมเดล 14–32B จากของสาธิตให้เป็นเครื่องมือประจำวัน
local LLM สำคัญกับ VRAM หรือ RAM มากกว่ากัน
ถ้าทุกอย่างลงใน VRAM หมด ความเร็วเป็นของ VRAM แต่โมเดลจะรันได้จริงหรือไม่ และคอนเท็กซ์รอดมาได้เท่าไร นั้นเป็นของ RAM ส่วน offload ผ่าน PCIe ระหว่างสองอย่างนี้คือโซนช้าที่ไม่มีใครชอบ
ทำไมโมเดลหลังโหลดใช้หน่วยความจำมากกว่าขนาดไฟล์ที่ดาวน์โหลดมา
KV cache และ compute buffer เติบโตตามความยาวคอนเท็กซ์ เอกสารหน่วยความจำของ llama.cpp เขียนสมการไว้ชัด: น้ำหนักโมเดล + KV cache + compute buffer และหน้าดาวน์โหลดมีเพียงตัวเลขแรกเท่านั้น
— mrsaynothing
— mrsaynothing
ความเห็นผ่านการทดสอบโหลดก่อนปล่อย เกือบทุกครั้ง
คุยต่อโพสต์นี้บน dev.to dev.to ↗
รับบทถกฉบับถัดไปทางอีเมล
อีเมลหนึ่งฉบับต่อหนึ่งโพสต์ เห็นด้วยก็ได้ หักล้างก็ได้
นี่คืออะไร?SSH Permission Denied (publickey): วิธีแก้ที่แท้จริง
ถ้าอ่านแล้วชอบ — ผมสร้างงานแบบนี้เป็นอาชีพ จ้างผม