โฮสต์เอง
เครื่องมือวางแผนหน่วยความจำ GPU
Beam เป็นโมเดล Mixture-of-Experts: มีพารามิเตอร์เพียง 23 พันล้านตัวที่ทำงานกับแต่ละโทเค็น แต่ต้องเก็บพารามิเตอร์ทั้งหมด 501 พันล้านตัวไว้ในหน่วยความจำ เลือกความแม่นยำ บริบท และฮาร์ดแวร์เพื่อดูว่าต้องใช้อะไรบ้าง
สมมติฐานเกี่ยวกับ Attention
Reflection ระบุว่าใช้ attention แบบ local และ global สลับกัน แต่ยังไม่ได้เผยแพร่ config.json ค่าตัวอย่างเหล่านี้ใช้คำนวณประมาณการ KV cache; เปลี่ยนค่าได้เมื่อมีการเผยแพร่ค่าจริง
จำนวน GPU ที่ต้องใช้สำหรับ weights เพียงอย่างเดียว
จำนวนอุปกรณ์ขั้นต่ำต่อ precision ก่อนรวม KV cache โดยถือว่าใช้หน่วยความจำของแต่ละอุปกรณ์ได้ 92%
| ตัวเร่งประมวลผล | BF16 / FP16 1,002 GB | FP8 501 GB | GGUF Q4_K_M 304 GB | INT4 / FP4 251 GB |
|---|---|---|---|---|
| NVIDIA H100 80GB | × 14 | × 7 | × 5 | × 4 |
| NVIDIA H200 141GB | × 8 | × 4 | × 3 | × 2 |
| NVIDIA B200 180GB | × 7 | × 4 | × 2 | × 2 |
| NVIDIA B300 288GB | × 4 | × 2 | × 2 | × 1 |
| NVIDIA A100 80GB | × 14 | × 7 | × 5 | × 4 |
| NVIDIA RTX PRO 6000 96GB | × 12 | × 6 | × 4 | × 3 |
| NVIDIA L40S 48GB | × 23 | × 12 | × 7 | × 6 |
| NVIDIA RTX 5090 32GB | × 35 | × 18 | × 11 | × 9 |
| NVIDIA RTX 4090 24GB | × 46 | × 23 | × 14 | × 12 |
| AMD Instinct MI300X 192GB | × 6 | × 3 | × 2 | × 2 |
| AMD Instinct MI325X 256GB | × 5 | × 3 | × 2 | × 2 |
| AMD Instinct MI355X 288GB | × 4 | × 2 | × 2 | × 1 |
| Apple M3 Ultra 512GB (unified) | × 3 | × 2 | × 1 | × 1 |
วิธีคำนวณค่าประมาณ
- Weights: พารามิเตอร์ 501 พันล้านตัว × บิตต่อ weight ÷ 8 รูปแบบ GGUF รวม block scales ไว้แล้ว ดังนั้น Q4_K_M จึงใช้ประมาณ 4.85 บิต
- KV cache: 2 × KV heads × head dimension × bytes ต่อค่า สำหรับทุก token ที่แคชไว้ในทุก layer ส่วน global layers จะแคช context ทั้งหมด ขณะที่ local layers จะแคชเฉพาะ window ของตัวเอง
- ค่า overhead ครอบคลุม activations, CUDA graphs และ fragmentation ค่า 10% เป็นจุดเริ่มต้นที่เหมาะสมสำหรับ vLLM หรือ SGLang ควรวัดค่าจากการตั้งค่าของคุณเอง
- จำนวนอุปกรณ์คำนวณโดยสมมติว่าใช้หน่วยความจำได้ 92% และปัดขึ้นตามขนาดกลุ่ม tensor parallel ที่ 1, 2, 4 หรือ 8 ต่อเซิร์ฟเวอร์
คำถาม
ใช้งาน Beam บน GPU ตัวเดียวได้ไหม
ไม่ได้ GPU สำหรับผู้ใช้ทั่วไปหรือศูนย์ข้อมูลไม่มีหน่วยความจำเพียงพอ แม้ใช้ 4-bit ก็ต้องใช้ weights ประมาณ 250 GB จึงต้องใช้ตัวเร่งประมวลผลขนาดใหญ่หลายตัว หรือเครื่องที่มีหน่วยความจำ unified ขนาดใหญ่มาก
ทำไมโมเดลที่มีพารามิเตอร์ active 23B ถึงต้องใช้หน่วยความจำมากขนาดนี้
แต่ละ token จะถูกส่งไปยัง expert เพียงไม่กี่ตัว แต่ expert ที่เลือกจะเปลี่ยนไปในแต่ละ token ดังนั้น expert ทุกตัวจึงต้องพร้อมใช้งาน จำนวนพารามิเตอร์ที่ active กำหนดความเร็ว ส่วนจำนวนพารามิเตอร์ทั้งหมดกำหนดการใช้หน่วยความจำ
สามารถเก็บ expert ไว้ใน system RAM ได้ไหม
engine บางตัว เช่น llama.cpp สามารถเก็บ weights ของ expert ไว้ในหน่วยความจำ CPU แล้วส่งไปยัง GPU ได้ วิธีนี้ใช้งานได้แต่ช้ากว่ามาก ควรวางแผนใช้เฉพาะกับการทดลองเท่านั้น
ตัวเลขเหล่านี้จะถูกต้องแน่นอนเมื่อไร
การใช้หน่วยความจำของ weights ถูกต้องแน่นอนอยู่แล้วสำหรับ precision ที่กำหนด ส่วนค่าประมาณ KV cache จะแม่นยำแน่นอนเมื่อ Reflection เผยแพร่การตั้งค่าของโมเดล