Dictionary · กลไกโมเดล · 46 / 291

KV cache

หน่วยความจำที่โมเดลเก็บผลคำนวณของโทเคนก่อนหน้าไว้ใช้ซ้ำ ทำให้ตอบเร็วขึ้นมาก แต่กินหน่วยความจำโตตามความยาวบทสนทนา

KV cache คือหน่วยความจำที่โมเดลใช้เก็บผลการคำนวณของโทเคนก่อนหน้าเอาไว้ใช้ซ้ำ ชื่อมาจากค่า key และ value ที่กลไก attention-mechanism ใช้คำนวณคะแนนความสนใจ ปัญหาที่มันแก้คือโมเดลแบบทายทีละคำต้องคำนวณค่าเหล่านี้ใหม่ทุกครั้งที่ผลิตโทเคนถัดไป เพราะการทำนายแต่ละครั้งขึ้นกับโทเคนก่อนหน้าทั้งหมด ผลคือโมเดลทำการคำนวณชุดเดิมซ้ำแล้วซ้ำอีก เอกสารของไลบรารีที่ใช้กันแพร่หลายอธิบายว่า cache ตัวนี้เก็บผลคำนวณไว้ให้หยิบกลับมาใช้โดยไม่ต้องคำนวณใหม่ ซึ่งลดเวลาประมวลผลและทำให้ตอบเร็วขึ้น

ราคาที่จ่ายคือหน่วยความจำ เอกสารระบุตรงว่า KV cache กินหน่วยความจำเป็นสัดส่วนที่มีนัยสำคัญ และกลายเป็นคอขวดของการสร้างข้อความที่มีบริบทยาว เพราะยิ่งบทสนทนายาว cache ก็ยิ่งโต นี่คือคำอธิบายเชิงเทคนิคของสิ่งที่ผู้ใช้รู้สึกได้ว่าทำไมบทสนทนายาวๆ ถึงช้าลงและแพงขึ้น และเป็นเหตุผลที่ผู้ให้บริการต้องมีกลไกอย่างการย่อบทสนทนา (ดู compaction) วิธีรับมือที่มีในเครื่องมือจริงมีสองแนวทางหลัก แนวทางแรกคือย้าย cache ของชั้นที่ยังไม่ได้ใช้ไปเก็บบน CPU แล้วดึงกลับมาเมื่อถึงคิว ซึ่งประหยัดหน่วยความจำบน gpu แลกกับความเร็วที่ลดลงเล็กน้อย แนวทางที่สองคือลดความละเอียดของค่าที่เก็บลง (ดู quantization) ซึ่งประหยัดได้มากแต่มีคำเตือนว่าถ้าบริบทสั้นและหน่วยความจำยังพอ การทำแบบนี้อาจทำให้ช้าลงโดยไม่จำเป็น

เรื่องนี้กลับมาเป็นประเด็นในเดือนกรกฎาคม 2026 เมื่อมีงานวิจัยเรื่องการบีบอัด KV cache ออกมาหลายชิ้นพร้อมกัน พร้อมกับข้อค้นพบที่ควรจำไว้ว่าอัตราการบีบอัดอย่างเดียวไม่ได้ทำนายประสิทธิภาพจริง คือบีบได้มากไม่ได้แปลว่าใช้งานได้ดีเสมอไป สำหรับคนทำงานทั่วไปที่ไม่ได้ดูแลโครงสร้างพื้นฐาน ประโยชน์ของการรู้จักคำนี้คือเข้าใจว่าทำไมค่าใช้จ่ายและความเร็วถึงผูกกับความยาวบทสนทนา ไม่ใช่แค่จำนวนคำที่เราพิมพ์ และเข้าใจว่าทำไมการเริ่มบทสนทนาใหม่เมื่อเปลี่ยนเรื่องจึงเป็นนิสัยที่ช่วยทั้งความเร็วและค่าใช้จ่าย

ตัวอย่างจากบทสนทนาจริง

นักพัฒนา: "ทำไมพอคุยยาวๆ มันตอบช้าลงเรื่อยๆ ครับ ทั้งที่คำถามล่าสุดสั้นนิดเดียวเอง"

สถาปนิกระบบ: "เพราะโมเดลต้องแบกบริบททั้งหมดไว้ครับ ทุกโทเคนที่คุยกันมาถูกเก็บไว้ในสิ่งที่เรียกว่า KV cache เพื่อไม่ต้องคำนวณใหม่ ซึ่งช่วยให้เร็วขึ้นมากในระยะสั้น แต่พอบทสนทนายาว cache ก็โตจนกินหน่วยความจำและกลายเป็นคอขวดเอง คำถามสั้นแค่ไหนไม่สำคัญ สิ่งที่สำคัญคือของที่แบกอยู่ข้างหลัง วิธีที่ง่ายที่สุดคือถ้าเปลี่ยนเรื่องแล้วให้เริ่มบทสนทนาใหม่ ไม่ต้องลากของเก่ามาทั้งหมดครับ"

ระวังสับสนกับ

  • prefix-cache : prefix cache คือการเก็บผลของส่วนต้นของคำสั่งที่ซ้ำกันทุกครั้งไว้ใช้ข้ามคำขอ เพื่อลดค่าใช้จ่าย ส่วน KV cache เป็นกลไกภายในที่ทำงานระหว่างสร้างคำตอบครั้งเดียว สองอย่างนี้ใช้หลักการเก็บของเดิมไว้ใช้ซ้ำเหมือนกันแต่คนละระดับ
  • context-window : context window คือเพดานว่าโมเดลรับข้อความได้มากแค่ไหน ซึ่งเป็นข้อจำกัดเชิงตรรกะ ส่วน KV cache เป็นต้นทุนจริงด้านหน่วยความจำที่เกิดขึ้นเมื่อใช้บริบทนั้น เพดานที่ใหญ่ขึ้นจึงไม่ฟรี
  • memory-system : memory system คือการที่ AI จำข้อมูลข้ามบทสนทนาได้ ซึ่งเก็บไว้ในไฟล์หรือฐานข้อมูลนอกตัวโมเดล ส่วน KV cache หายไปเมื่อจบการสร้างคำตอบ ไม่ใช่ความจำระยะยาว

ดูคำนี้ใน Knowledge Atlas →

■ ไม่อยากพลาดของใหม่

อ่านจบแล้วอยากตามเรื่อง AI แบบนี้ต่อทุกวัน เรามีสรุปข่าวภาษาไทยส่งทาง LINE ทุกเช้า กดเพิ่มเพื่อนไว้ได้เลย ไม่มีค่าใช้จ่าย

เพิ่มเพื่อนใน LINE →
QR เพิ่มเพื่อน LINE ของ TRAINIAC AIคอมพิวเตอร์สแกนด้วยมือถือได้เลย

Knowledge cutoffLoRA