Toán VRAM
Mỗi câu hỏi "cái này chạy được trên card tôi không" là phép số học,
không phải truyền thuyết. Tổng VRAM là trọng số, cộng KV cache, cộng một
tảng cố định gồm kích hoạt và phụ phí engine. Nếu bạn nhân được tham số
với bit, bạn chọn cỡ được một cỗ máy trước khi bỏ một đồng nào. Trang
này đưa công thức, các bảng tính sẵn, và hướng dẫn 16 GB bạn có thể sao
chép cho bất kỳ card nào.
Công thức
tổng VRAM = trọng số + KV cache + phụ phí
trọng số (GB) = tham số (B) × bit mỗi trọng số ÷ 8
KV cache = byte mỗi token × độ dài ngữ cảnh (xem [KV cache](/guide/kv-cache))
phụ phí ≈ 1–2 GB (kích hoạt, ngữ cảnh driver, buffer, phân mảnh)
Số bit hiệu dụng mỗi trọng số cho các mức lượng hóa GGUF phổ biến:
Q4_K_M ≈ 4.8, Q5_K_M ≈ 5.7, Q6_K ≈ 6.6, Q8_0 ≈ 8.5. Nhân tham số với
con số đó, chia 8, và bạn lệch chưa đến vài phần trăm so với kích thước
tệp trên đĩa.
Những quy tắc ngón tay đáng thuộc lòng, theo GB mỗi tỉ tham số:
- Q4_K_M ≈ 0.6 GB — con ngựa thồ hằng ngày
- Q5_K_M ≈ 0.7 GB
- Q6_K ≈ 0.8 GB — gần như không tổn thất với đa số mắt
- Q8_0 ≈ 1.1 GB — trong suốt, tốn gấp đôi Q4
- fp16/bf16 = 2.0 GB — lãnh địa huấn luyện và tinh chỉnh nghiêm túc
Các ví dụ minh họa
Kích thước KV cache phụ thuộc kiến trúc. Các mô hình GQA hiện đại chạy
khoảng 128–256 KB mỗi token ở KV fp16 cho các hạng 8B–32B, và khoảng
320 KB cho hạng 70B. Công thức chính xác nằm ở KV cache;
ở đây ta chỉ cộng nó vào. Phụ phí được ngân sách 1.5 GB mỗi dòng.
Q4_K_M (~4.8 bit mỗi trọng số):
| Mô hình | Trọng số | KV @ 8k | KV @ 32k | Tổng @ 8k | Tổng @ 32k |
|---|---|---|---|---|---|
| 8B | 4.8 GB | 1.0 GB | 4.2 GB | 7.3 GB | 10.5 GB |
| 14B | 8.4 GB | 1.6 GB | 6.4 GB | 11.5 GB | 16.3 GB |
| 32B | 19.2 GB | 2.1 GB | 8.4 GB | 22.8 GB | 29.1 GB |
| 70B | 42.0 GB | 2.6 GB | 10.5 GB | 46.1 GB | 54.0 GB |
Q6_K (~6.6 bit mỗi trọng số):
| Mô hình | Trọng số | KV @ 8k | KV @ 32k | Tổng @ 8k | Tổng @ 32k |
|---|---|---|---|---|---|
| 8B | 6.6 GB | 1.0 GB | 4.2 GB | 9.1 GB | 12.3 GB |
| 14B | 11.6 GB | 1.6 GB | 6.4 GB | 14.7 GB | 19.5 GB |
| 32B | 26.4 GB | 2.1 GB | 8.4 GB | 30.0 GB | 36.3 GB |
| 70B | 57.8 GB | 2.6 GB | 10.5 GB | 61.9 GB | 69.8 GB |
Hai khuôn mẫu cần thấm. Q6_K tốn ~35–40% hơn Q4_K_M — thường đúng
ranh giới giữa bậc GPU này và bậc kế. Và KV ở ngữ cảnh 32k không phải
sai số làm tròn: trên mô hình nhỏ nó đủ sánh với chính trọng số. Các
thiết kế MHA cũ (thời Llama-2) mang KV cache lớn hơn 4–8 lần, đó là lý
do ngữ cảnh 32k xưa đòi phần cứng kỳ lạ còn mô hình GQA thì không.
OOM lúc nạp vs OOM giữa chừng sinh văn bản
- Lúc nạp: riêng trọng số đã vượt VRAM trống. Engine từ chối khởi
động, hoặc đẩy tầng sang CPU và bò. Trung thực, tức thì, dễ chẩn đoán. - Giữa chừng sinh văn bản: trọng số vừa, nhưng KV cache lớn dần theo
từng token. Một phiên mới chạy ngon lành; bốn mươi lượt sau, sau một
đợt đổ RAG hay một tệp dán vào, cache ăn hết dư địa và tiến trình chết
giữa câu trả lời. Đây là con lươn — luôn chọn cỡ cho ngữ cảnh bạn thực
sự sẽ chạm tới, không phải prompt đầu tiên.
Xem nó diễn ra trực tiếp:
watch -n1 nvidia-smi --query-gpu=memory.used,memory.total --format=csv
Phiếu tính cỡ: hướng dẫn 16 GB
- Ngân sách dùng được: 16 GB × 0.85 ≈ 13.6 GB. Desktop, trình duyệt và
driver đã giữ sẵn 0.5–1 GB; 10–20% dư địa là quy tắc, không phải sự
xa xỉ. - Giấc mơ: 32B Q4_K_M — riêng trọng số đã 19.2 GB. Chết ngay khi lọt
lòng. - Thực tế: 14B Q4_K_M ở ngữ cảnh 8k: 8.4 + 1.6 + 1.5 = 11.5 GB. Vừa
với ~15% dư địa. Xuống tay. - Giờ bạn muốn ngữ cảnh 32k: 8.4 + 6.4 + 1.5 = 16.3 GB. Vượt ngân sách.
- Ba cách sửa — chọn một hoặc kết hợp:
- Lượng hóa KV cache sang q8_0: 6.4 → 3.2 GB, tổng 13.1 GB. Vào được.
- Hạ trọng số xuống Q4_K_S hoặc IQ4_XS, tiết kiệm thêm ~0.5–1 GB.
- Xuống 8B Q6_K: 6.6 + 4.2 + 1.5 = 12.3 GB, rộng rãi.
Cùng năm bước đó đúng cho card 8 GB, card 24 GB, hay hộp 48 GB hai GPU.
Ngân sách, mơ, trừ, hiệu chỉnh.
Luôn để dư địa
Engine cấp phát buffer nháp cho từng khe lô, phân mảnh tích tụ trên một
server chạy lâu, và tính đồng thời nhân KV lên theo mỗi request đang
hoạt động. Một cấu hình "vừa in" trong bài bench một-lần sẽ OOM ngoài
thực tế. 10–20% trống là thuế cho việc đứng vững. Về cái gì vừa ở từng
bậc card trong thực tiễn, xem hạng GPU; về vì sao
các bit lượng hóa là như vậy, xem Lượng hóa.