- Các paper như RetroInfer và ScoutAttention quảng cáo inference long-context với "constant GPU memory" nhờ offload KV cache sang CPU DRAM và kéo lại qua PCIe mỗi decode step.
- Đẹp trên slide — nhưng có điều kiện nhỏ: bạn cần 36+ CPU cores chạy ANN search liên tục.
- Apple Silicon và RTX 4090 không có cửa.
TL;DR
Một cuộc tranh luận Twitter khởi nguồn bởi @no_stp_on_snek đã gọi đúng tên điều mà nhiều paper KV-offload gần đây hay lờ đi: "constant GPU memory" không có nghĩa là bài toán biến mất — nó chỉ dời từ HBM sang CPU DRAM + PCIe + CPU threads. RetroInfer (10.5× speedup) và ScoutAttention (5.1× speedup) đều đẹp trên H100 + server CPU 36+ cores, nhưng vô dụng trên Apple Silicon (unified memory, không có gì để offload) và consumer GPU (không có đủ CPU threads).
Cái gì đang được quảng cáo
Vài tháng gần đây xuất hiện một làn sóng paper đề xuất cùng một ý tưởng: thay vì nén KV cache trên GPU, hãy dời nó sang CPU DRAM và chỉ kéo về HBM phần quan trọng nhất mỗi decode step. Hai đại diện nổi bật:
- RetroInfer — coi KV cache như một vector store, dùng Wave Index (một biến thể ANN) để truy hồi top-k token quan trọng mỗi bước decode. Đạt 4.5× speedup so với full attention trong giới hạn GPU, và tới 10.5× khi mở rộng KV sang CPU.
- ScoutAttention — đi xa hơn: CPU tính trước attention cho layer tiếp theo, trong khi GPU vẫn đang xử lý layer hiện tại. Đạt 5.1× speedup ở context 64k, giảm GPU idle time từ 57–61% xuống 6%.
Câu chốt của cả hai: GPU memory usage gần như constant theo context length. Nghe như một breakthrough.
Tại sao cần cảnh giác
Tweet gốc rất ngắn nhưng chỉ đúng vấn đề: "GPU memory is constant because the problem moved." Bài toán không biến mất, nó đi chỗ khác. Và chỗ nó đi tới là ba tài nguyên khác mà paper hay quên tính đúng giá:
- CPU thread budget — ANN search mỗi decode step cần hàng chục cores làm việc liên tục.
- PCIe bandwidth — mỗi page KV kéo về HBM đều phải qua bus chậm hơn HBM cỡ 100 lần.
- CPU DRAM — không free, và trên server multi-tenant thì còn phải chia với các request khác.
Con số cụ thể từ paper
ScoutAttention công khai cấu hình host test: 36 CPU cores đạt ~100 GB/s throughput cho attention phía CPU, threads được phân nhóm — mỗi nhóm phục vụ một sequence trong batch. GPU là 80 GB HBM nối qua PCIe 4×16, block size 32 token, batch 16–64, context tới 64k.
Nói cách khác: paper chạy trên một server host mà CPU có nhiều core hơn cả một chiếc Mac Studio M3 Ultra (24 cores).
| Tài nguyên | Giá trị thực | So sánh |
|---|---|---|
| HBM (H100 SXM5) | 80 GB @ 3.35 TB/s | Nhanh nhất |
| PCIe 4×16 | ~32 GB/s unidirectional | Chậm hơn HBM ~100× |
| KV cache Llama-3-70B @ 128k | ~40 GB / user | Scale tuyến tính theo batch |
| CPU cores yêu cầu (ScoutAttention) | 36 P-cores | Nhiều hơn desktop Ryzen 9 |
So với KV quantization: bài toán khác nhau
Một hiểu lầm phổ biến là coi offload và quantization là hai lựa chọn thay thế. Chúng không phải — chúng giải quyết hai thứ khác nhau:
| Tiêu chí | Offload + ANN | KV quantization (NVFP4, INT4) |
|---|---|---|
| Byte nằm ở đâu | CPU DRAM | GPU HBM (nén) |
| Chi phí hot path | PCIe transfer + CPU ANN search | Dequant kernel trên GPU |
| Giả định hardware | Datacenter host + nhiều cores | Bất kỳ GPU có kernel support |
| Accuracy drop | ~2% (sparse approximation) | <1% INT4, ~0% NVFP4 |
| Scale theo context | Tốt (CPU DRAM rẻ) | Bị giới hạn bởi HBM |
Kết luận: nếu bạn có 1× H100 đơn lẻ với CPU lean, quantize KV. Nếu bạn có cluster H100 + host nhiều cores cho context cực dài, offload. Tốt hơn: làm cả hai.
Khi nào kỹ thuật này phù hợp
Phù hợp:
- Serving long-context Q&A hoặc tóm tắt tài liệu (attention sparsity cao)
- H100/H200/B200 + dual-socket Xeon/EPYC 64+ P-cores
- PCIe 5 hoặc NVLink-C2C (Grace Hopper) cho bandwidth CPU↔GPU cao
Không phù hợp:
- Apple Silicon — M-series dùng unified memory. GPU và CPU share chung LPDDR5. Không có hai pool memory, không có gì để "offload". KV cache vốn đã ở cùng chỗ với weights.
- Consumer GPU (RTX 4090/5090) — thường đi với desktop CPU 8–16 cores. 64 threads chạy ANN search mỗi decode step là điều xa xỉ.
- Edge/mobile — cùng lý do, cộng power budget.
Hạn chế & pricing
Paper không sai — technique hoạt động thực sự, speedup là thật. Vấn đề duy nhất là cách framing. "Constant GPU memory" ngụ ý đây là cải tiến phổ quát, trong khi thực tế nó yêu cầu một cấu hình host rất cụ thể.
Hai failure mode dễ gặp:
- Starvation CPU thread: nếu server bạn chạy 4 model cùng lúc, mỗi model đòi 32+ cores cho ANN, chúc bạn may mắn.
- PCIe contention: weights streaming, prefill token, inter-GPU collective — tất cả đều dùng PCIe. Thêm per-decode KV fetch nữa thì bus ngộp.
Góc nhìn thực dụng
Với người làm production LLM serving: đừng đọc headline "constant GPU memory" rồi vội nhảy vào. Mở section Hardware Setup của paper ra, đếm CPU cores, ước tính PCIe traffic. Nếu host bạn khớp, nó rất đáng thử — đặc biệt cho use case long-context. Nếu bạn chạy trên laptop hoặc workstation, quay lại KV quantization hoặc paged attention.
Và vLLM đã có KV Offloading Connector từ tháng 1 — ecosystem đang chín. Nhưng bài học từ tweet thì vẫn đúng: moving the problem isn't solving it. Bạn chỉ được quyền nói "solved" khi đã budget đúng CPU cores và PCIe lanes như tài nguyên first-class.
Nguồn: RetroInfer (arXiv), ScoutAttention (arXiv), LMCache tech report, NVIDIA developer blog.



