การ์ดใบเดียว จะรับได้กี่คน
รวมทุกอย่างเข้าด้วยกัน หน่วยความจำการ์ดต้องเก็บ 3 ส่วนพร้อมกัน:
- น้ำหนักโมเดล (หน้า 5)
- แคชคีย์และแวลู (KV cache)ที่เก็บ key และ value ของ token ที่คำนวณแล้วในทุกชั้น จะได้ไม่ต้องคำนวณซ้ำทุกครั้งที่เขียน token ใหม่ ยิ่งข้อความยาวยิ่งใช้หน่วยความจำมากดูคำศัพท์ทั้งหมด ของทุกคน (หน้า 3–4) ยิ่งรวมชุดใหญ่ (การรวมคำขอเป็นชุด (batching)การประมวลผลคำขอของหลายคนพร้อมกันในรอบเดียว อ่านน้ำหนักโมเดลครั้งเดียวแต่ได้ token ของหลายคน จึงได้ปริมาณงานรวมสูงขึ้นดูคำศัพท์ทั้งหมด หน้า 6) ยิ่งคูณตามจำนวนคน
- ส่วนอื่นๆ เช่นผลคำนวณชั่วคราว สมมติ 1 GB
การ์ดสมมติของเราจุ 24 GB
จุดเริ่ม: น้ำหนักและแคช 16 บิต ผู้ใช้ 1 คน × 8,000 token → 16.0 + 1.0 + 1.0 = 18.0 GB ลงได้ แคชรวมรับได้สูงสุดราว 53,405 token ใช้ไป 8,000 จึงเหลือราว 45,405 token
โจทย์: รับผู้ใช้ 4 คน คนละ 32,000 token ที่ 16/16 บิตต้องใช้ 33.8 GB ล้นไป 9.8 GB
ลองลดบิต (การลดความละเอียดตัวเลข (quantization)การเก็บน้ำหนักของโมเดลด้วยจำนวนบิตที่น้อยลง เช่นจาก 16 บิตเหลือ 4 บิต ทำให้โมเดลเล็กลงและเขียนคำตอบได้เร็วขึ้น แลกกับความคลาดเคลื่อนจากการปัดเศษดูคำศัพท์ทั้งหมด) ของน้ำหนักหรือแคช จนรับ 4 คนได้:
ถ้าติด: 8 บิตทั้งคู่ผ่าน น้ำหนัก 4 บิตกับแคช 16 บิตก็ผ่าน แต่น้ำหนัก 8 บิตกับแคช 16 บิตยังล้น 1.8 GB
สังเกตมั้ยว่า KV cache 8 บิตของ 4 คนในวิดเจ็ต (8.4 GB) คือ 8.39 GB ที่คุณคำนวณในหน้า 4
เมื่อแชตยาวและมีหลายคนพร้อมกัน KV cache รวมกันอาจกินที่มากกว่าตัวโมเดลเอง ผู้ให้บริการจึงจำกัดความยาวแชตและจำนวนคนพร้อมกัน
หน่วยความจำการ์ดต้องพอทั้งน้ำหนักโมเดลและ KV cache ของทุกคน จำนวนผู้ใช้กับความยาวแชตจึงแย่งพื้นที่เดียวกัน

มังคุด
ถ้าคนใช้เป็นพันคนพร้อมกัน บริษัท AI ทำยังไงล่ะ?