แคช KV
แคช KV จัดเก็บคีย์และเวกเตอร์ค่าที่ Transformer ได้คำนวณไว้แล้วสำหรับโทเค็นก่อนหน้านี้ ดังนั้นจึงไม่จำเป็นต้องคำนวณใหม่สำหรับทุกคำใหม่ที่สร้างขึ้น
ภาพรวม
It is the single biggest reason text generation is fast — and the main thing eating your GPU memory during long conversations.
เจาะลึก
Transformers สร้างข้อความทีละโทเค็น และชั้นความสนใจของโทเค็นใหม่แต่ละชั้นจำเป็นต้องเปรียบเทียบกับโทเค็นก่อนหน้าทั้งหมด กลไกความสนใจจะเปลี่ยนแต่ละโทเค็นให้เป็นเวกเตอร์คิวรี คีย์ และค่า หากไม่มีการแคช การสร้างโทเค็นจำนวน 1,000 จะหมายถึงการคำนวณคีย์และค่าใหม่สำหรับโทเค็นก่อนหน้าทั้งหมด 999 รายการในทุกขั้นตอน ซึ่งเป็นงานกำลังสองที่สิ้นเปลือง แคช KV จะบันทึกเวกเตอร์คีย์และค่าเหล่านั้นหลังจากที่คำนวณครั้งแรกและนำมาใช้ซ้ำ ดังนั้นแต่ละขั้นตอนใหม่จะคำนวณเฉพาะเวกเตอร์สำหรับโทเค็นใหม่ล่าสุดเพียงรายการเดียวและดูแลผ่านแคชที่เก็บไว้ สิ่งนี้จะลดต้นทุนต่อโทเค็นจากการปรับขนาดด้วยความยาวของลำดับเป็นค่าคงที่โดยประมาณ ข้อเสียเปรียบก็คือหน่วยความจำ: แคชจะเพิ่มขึ้นเป็นเส้นตรงตามความยาวบริบท จำนวนเลเยอร์ และส่วนหัวของความสนใจ ซึ่งมักจะกลายเป็นผู้ใช้หน่วยความจำที่โดดเด่นในการให้บริการตามบริบทแบบยาว
ข้อมูลเชิงลึกทางเทคนิค
ในระหว่างขั้นตอน 'กรอกข้อมูลล่วงหน้า' โมเดลจะประมวลผลพร้อมท์ทั้งหมดและเติมแคช ในระหว่าง 'ถอดรหัส' มันจะต่อท้าย K/V ของโทเค็นหนึ่งรายการต่อขั้นตอนและเข้าร่วมอีกครั้ง ขนาดแคชจะปรับขนาดเป็น 2 (K และ V) × เลเยอร์ × หัว × head_dim × sequence_length × แบทช์ ในความแม่นยำที่เลือก เพื่อควบคุมสิ่งนี้ โมเดลสมัยใหม่ใช้ความสนใจแบบกลุ่มแบบสอบถามหรือหลายแบบสอบถามเพื่อแบ่งปันคีย์/ค่าข้ามส่วนหัว และระบบให้บริการเช่น vLLM ใช้ PagedAttention เพื่อจัดสรรแคชในบล็อกที่ไม่ต่อเนื่องกัน ลดการกระจายตัวและการสิ้นเปลือง
ผลกระทบเชิงกลยุทธ์
ความเร็วและขนาด
ขั้นตอนการทำงานของภาษาสามารถดำเนินไปได้เร็วขึ้นโดยไม่กระทบต่อความสม่ำเสมอ
เข้าถึงและเข้าถึง
ขยายการเข้าถึงภาษาและรูปแบบการสื่อสาร
การตัดสินใจที่ชัดเจนยิ่งขึ้น
ทีมสามารถใช้เวลามากขึ้นในการตัดสิน ในขณะที่ระบบอัตโนมัติจัดการกับการทำซ้ำ
อนาคตของแคช KV
เมื่อหน้าต่างบริบทขยายออกไปเป็นโทเค็นนับแสน แคช KV จะกลายเป็นคอขวดส่วนกลาง ดังนั้นนวัตกรรมจึงรุนแรง: การกำหนดปริมาณแคชเป็น 8 หรือ 4 บิต นโยบายการขับไล่ที่ทิ้งโทเค็นที่มีความสำคัญต่ำ การแชร์คำนำหน้าคำขอข้าม และการลดการโหลดไปยัง CPU หรือดิสก์ การเปลี่ยนแปลงทางสถาปัตยกรรม เช่น ความสนใจแฝงแบบหลายหัวจะบีบอัดแคชเอง คาดว่าจะมีการออกแบบร่วมกันอย่างต่อเนื่องสำหรับรูปแบบความสนใจและระบบหน่วยความจำโดยมุ่งเป้าไปที่การให้บริการบริบทที่ยาวมากในราคาถูกและมีปริมาณงานสูง
การใช้งานจริงในโลกแห่งความเป็นจริง
เร่งความเร็วการตอบกลับแชทบอทโดยนำคีย์/ค่าที่แคชไว้จากประวัติการสนทนามาใช้ซ้ำ แทนที่จะประมวลผลใหม่ในแต่ละเทิร์น
การแคชคำนำหน้าที่แชร์แคชเพื่อให้ระบบแจ้งเตือนผู้ใช้จำนวนมาก ลดต้นทุนและเวลาแฝง
PagedAttention ของ vLLM จัดการแคช KV ในบล็อกเพื่อรองรับคำขอจำนวนมากพร้อมกันบน GPU ตัวเดียวอย่างมีประสิทธิภาพ
การหาปริมาณแคช KV ให้มีความแม่นยำน้อยลงเพื่อให้พอดีกับบริบทที่ยาวขึ้นในหน่วยความจำ GPU ที่จำกัด
ความเสี่ยงและรั้ว
ข้อเท็จจริงที่หลอนประสาทสามารถเข้าสู่รายงาน กระแสสนับสนุน หรือผลการวิจัยได้อย่างเงียบๆ
ความละเอียดอ่อนของการแจ้งเตือนสามารถสร้างผลลัพธ์ที่ไม่สอดคล้องกันในคำขอที่คล้ายกัน
ข้อมูลข้อความที่ละเอียดอ่อนอาจถูกเปิดเผยหากการควบคุมการเข้าถึงอ่อนแอ
แผนงานการดำเนินงาน
กำหนดรูปแบบเอาต์พุต โทนเสียง และมาตรฐานคุณภาพก่อนเปิดตัว
การตอบสนองภาคพื้นดินกับแหล่งข้อมูลที่เชื่อถือได้เมื่อใดก็ตามที่ความแม่นยำมีความสำคัญ
รักษาจุดตรวจสอบการตรวจสอบโดยมนุษย์สำหรับผลลัพธ์ที่มีเดิมพันสูง
ติดตามรูปแบบความล้มเหลวและฝึกอบรมพร้อมท์หรือเวิร์กโฟลว์เป็นประจำ
สำรวจต่อไป
Free newsletter
Get the daily AI briefing
Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.
One email each weekday. Unsubscribe in one click. We never sell or share your address.
Test yourself
Take the KV Cache quiz
Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.
Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation
คำแนะนำต่อไป
การเพิ่มประสิทธิภาพแคช KV
คำถามที่พบบ่อย
What is KV Cache?
แคช KV จัดเก็บคีย์และเวกเตอร์ค่าที่ Transformer ได้คำนวณไว้แล้วสำหรับโทเค็นก่อนหน้านี้ ดังนั้นจึงไม่จำเป็นต้องคำนวณใหม่สำหรับทุกคำใหม่ที่สร้างขึ้น นี่เป็นเหตุผลเดียวที่ใหญ่ที่สุดในการสร้างข้อความที่รวดเร็ว — และสิ่งสำคัญคือการกินหน่วยความจำ GPU ของคุณในระหว่างการสนทนาที่ยาวนาน
แคช KV เก็บอะไร?
แคช KV เก็บคีย์และเวกเตอร์ค่าจากโทเค็นรุ่นก่อนๆ เพื่อให้ความสนใจสามารถนำกลับมาใช้ใหม่แทนการคำนวณใหม่
แคช KV แก้ไขปัญหาอะไรเป็นหลัก
หากไม่มีการแคช โทเค็นใหม่แต่ละรายการจะต้องคำนวณ K/V ใหม่สำหรับโทเค็นก่อนหน้าทุกอัน ซึ่งสิ้นเปลือง แคชทำให้ต้นทุนต่อโทเค็นคงที่โดยประมาณ
ข้อเสียเปรียบหลักของแคช KV คืออะไร?
แคชจะขยายตามความยาว เลเยอร์ และส่วนหัวของลำดับ ซึ่งมักจะกลายเป็นผู้ใช้หน่วยความจำ GPU รายใหญ่ในการให้บริการตามบริบทแบบยาว
เทคนิคใดลดขนาดแคช KV โดยการแชร์คีย์และค่าระหว่าง Attention Heads
การสืบค้นแบบกลุ่มและแบบหลายการสืบค้นทำให้หัวการสืบค้นหลายรายการใช้ชุดคีย์/ค่าร่วมกันน้อยลง ซึ่งจะทำให้แคชเล็กลงอย่างมาก
การอนุมานหม้อแปลงสองเฟสสัมพันธ์กับแคช KV คืออะไร
การเติมล่วงหน้าจะเติมแคชด้วย K/V ของพรอมต์ decode จะผนวก K/V ของโทเค็นใหม่หนึ่งรายการในแต่ละขั้นตอนและเข้าร่วมอีกครั้งบนแคช