บทที่ 6 · ตอนมันตอบจริง หน้า 4/12 ~3 นาที

คำนวณขนาด KV cache เอง

ถึงตาคุณแล้ว เครื่องคิดเลขในมือถือก็พอ สูตรจากหน้าก่อน:

= จำนวนชั้น · = จำนวนชุด K/V · = ตัวเลขต่อชุด · = byte ต่อตัวเลข · = จำนวน token ทั้งหมดที่เก็บ

ขนาด แคชคีย์และแวลู (KV cache)ที่เก็บ key และ value ของ token ที่คำนวณแล้วในทุกชั้น จะได้ไม่ต้องคำนวณซ้ำทุกครั้งที่เขียน token ใหม่ ยิ่งข้อความยาวยิ่งใช้หน่วยความจำมากดูคำศัพท์ทั้งหมด = (2 × ชั้น × ชุด K/V × ตัวเลขต่อชุด × byte) ต่อ token คูณจำนวน token ทั้งหมดที่เก็บไว้

ลองคำนวณเอง

ตอบเป็นตัวเลข (หน่วย GB) · คลาดเคลื่อนได้ ±0.05 GB

โมเดลสมมติเดิมมี 32 ชั้น แต่ละชั้นเก็บ K และ V อย่างละ 8 ชุด ชุดละ 128 ตัวเลข คราวนี้เก็บแคชตัวเลขละ 1 byte (8 บิต)

ผู้ใช้ 4 คน คุยพร้อมกัน คนละ 32,000 token KV cache รวมกันใช้กี่ GB? (1 GB = 1,000,000,000 byte ตอบทศนิยม 2 ตำแหน่ง)

คำใบ้ (3)
  1. เริ่มจาก 1 token: (เลข 2 ตัวแรกมาจาก K กับ V ส่วนเลข 1 ตัวท้ายคือ 1 byte ต่อตัวเลข)
  2. 1 token = 65,536 byte จำนวน token ทั้งหมดคือ 4 × 32,000 = 128,000
  3. 65,536 × 128,000 = 8,388,608,000 byte แล้วหารด้วย 1,000,000,000
ดูเฉลย

คำตอบ: 8.39 GB

ต่อ token: 2 × 32 × 8 × 128 × 1 = 65,536 byte (ครึ่งหนึ่งของ 131,072 byte ที่ 16 บิต)

× 128,000 token = 8,388,608,000 byte = 8.39 GB ครึ่งหนึ่งของ 16.8 GB ในหน้าที่แล้ว

รวมกับน้ำหนักโมเดลที่ 16 บิต (16.0 GB) ก็เกินการ์ดสมมติขนาด 24 GB ของบทนี้แล้ว หน้า 7 คุณจะได้ลองแก้เอง

KV cache โตตามจำนวน token รวมของทุกคนที่ใช้พร้อมกัน และเล็กลงครึ่งหนึ่งเมื่อเก็บ 8 บิตแทน 16 บิต

มังคุด มาสคอตมังคุด

มังคุด

คนเดียวคุย 32,000 token กับ 10 คนคุยคนละ 3,200 token ใช้หน่วยความจำต่างกันมั้ย?