L4 · Hardware memory
Lập ngân sách bộ nhớ trên accelerator
Bộ nhớ băng thông cao gắn trên GPU và cách phân bổ dung lượng giữa trọng số, KV cache, vùng nhớ tạm cùng khoảng dự phòng.
1Định nghĩa
HBM (High Bandwidth Memory) là bộ nhớ chính gắn trực tiếp trên đế chip của GPU, nơi lưu giữ toàn bộ dữ liệu đang hoạt động của mô hình. Hai thông số của HBM định hình trực tiếp kiến trúc phục vụ: dung lượng (capacity, tính bằng GB) quyết định mô hình và số request tối đa chứa vừa trên thẻ, còn băng thông (bandwidth, tính bằng TB/s) quyết định tốc độ đọc dữ liệu ở mỗi bước sinh token.
Lập ngân sách bộ nhớ (memory budgeting) là việc chia tổng dung lượng HBM thành 4 phần rõ ràng: trọng số cố định (weights), vùng KV cache co giãn theo các chuỗi đang chạy, vùng nhớ tạm cho kích hoạt trung gian (activations/workspace) ở đỉnh bước prefill, và khoảng trống dự phòng (headroom) để tránh lỗi tràn bộ nhớ (OOM).
Ví dụ đời thường: Lập ngân sách bộ nhớ HBM giống như việc sắp xếp mặt bàn bếp có diện tích cố định của người đầu bếp. Trên mặt bàn đó vừa phải đặt bộ nồi niêu cố định (trọng số mô hình), vừa phải bày các khay nguyên liệu của những bàn đang ăn (KV cache), vừa phải chừa một khoảng trống để thái thức ăn (vùng nhớ tạm activations) — nếu bày kín hết mặt bàn mà không chừa chỗ thái, căn bếp sẽ lập tức tắc nghẽn (lỗi tràn bộ nhớ OOM).
2Luồng
- Nạp weights
Chiếm phần bộ nhớ tương đối ổn định.
- Giữ context đang phục vụ
Cache tăng theo active tokens.
- Chạy một bước
Activations và workspace tạo đỉnh tạm.
- Điều chỉnh khả năng tiếp nhận
Giữ giới hạn và headroom đủ cho peak.
Mã Mermaid
flowchart TD
step1["Nạp weights"]
step2["Giữ context đang phục vụ"]
step3["Chạy một bước"]
step4["Điều chỉnh khả năng tiếp nhận"]
step1 --> step2
step2 --> step3
step3 --> step4 3Giải pháp
Lập budget từ model và workload, rồi đối chiếu peak đo được. Cấu hình số token đồng thời phải dành chỗ cho cả prefill workspace, không chỉ cache.
Nếu thiếu memory, có thể giảm tải, giảm precision phù hợp hoặc chia weights/state trên nhiều thiết bị. Mỗi cách có chi phí chất lượng hoặc communication.
Để tự tính ngân sách KV từ công thức và ghi nhận lượng block dùng ở cao điểm, hãy chạy khối 10 (HBM memory budget) trong Bài Lab tổng hợp.
4Profiling
- Peak memory theo pha
Đo load, warmup, prefill và decode riêng, ở các mức context/concurrency.
- Memory mỗi active token
So cache lý thuyết với mức thực tế bao gồm block rounding và overhead.
Mẹo đo lường: ghim số liệu trên workload thật, ghi cả p50/p95/p99 thay vì chỉ trung bình, và luôn ghi lại điều kiện chạy (batch, cache, đồng thời, phần cứng) trước và sau khi tối ưu. Số đo thiếu điều kiện chạy thì không so sánh được.
5Ví dụ
Một request dài bất ngờ
Đỉnh prefill có thể vượt budget dù cache hiện tại chưa đầy; cần headroom và giới hạn đầu vào.
Tăng người dùng đồng thời
Weights gần như không đổi nhưng cache riêng tăng; không thể suy capacity chỉ từ size checkpoint.
6Thuật ngữ
- Workspace
- Bộ nhớ tạm phục vụ thuật toán tính toán.
- Headroom
- Phần dung lượng dự phòng để chịu biến động và đỉnh sử dụng.
- Allocated và reserved memory
- Vùng đang dùng cho tensors và vùng allocator giữ lại; hai con số không luôn bằng nhau.
Glossary (8)
- Model weights
- Các tham số số học được học và lưu trong checkpoint.
- Checkpoint
- Bản lưu trạng thái model; phạm vi states phụ thuộc mục đích serving hay resume.
- Cache
- Bộ nhớ giữ kết quả có thể dùng lại; trong attention thường giữ key/value vectors.
- Runtime
- Phần mềm quản lý việc thực thi, buffers và phụ thuộc giữa phép toán.
- Overhead
- Chi phí phụ như điều phối, chuyển đổi hoặc phát lệnh ngoài phép tính chính.
- Warmup
- Chạy chuẩn bị để hoàn tất khởi tạo, compilation/capture hoặc ổn định execution trước đo.
- Batch
- Nhóm công việc hoặc mẫu được xử lý trong một lượt tính.
- Context
- Chuỗi token trước vị trí hiện tại mà model được phép sử dụng.