1. 11:01 12/10/2026
Khi đưa mô hình ngôn ngữ lớn (LLM) vào sản xuất, độ trễ và chi phí GPU thường là rào cản lớn nhất. Ba kỹ thuật cốt lõi — KV‑Cache, Speculative Decoding và Dynamic Batching — có thể giảm 30‑70% thời gian phản hồi mà không cần huấn luyện lại mô hình.
1. KV‑Cache (Key‑Value Cache)
- Nguyên lý: Trong attention tự hồi quy, các vector key/value của token đã sinh ra được lưu lại để tái sử dụng ở bước tiếp theo, tránh tính toán lại toàn bộ ma trận attention.
- Triển khai thực tế:
• Sử dụng thư viện gốc của Hugging Face Transformers (`model.generate(use_cache=True)`) hoặc vLLM/TGI đã tích hợp sẵn.
• Cấp phát bộ nhớ GPU cho cache theo `max_seq_len * num_layers * 2 * hidden_size * dtype`. Ví dụ: LLaMA‑2‑7B với `max_seq_len=4096` cần ≈ 2 GB FP16.
• Theo dõi mức sử dụng cache qua `torch.cuda.memory_allocated()` để tránh OOM khi batch size tăng.
2. Speculative Decoding
- Ý tưởng: Chạy một mô hình nhẹ (draft model) để dự đoán nhiều token tiếp theo, sau đó mô hình lớn (target model) kiểm tra và chấp nhận/chỉnh sửa theo cơ chế acceptance‑rejection.
- Quy trình áp dụng:
• Chọn draft model có cùng tokenizer, ví dụ `TinyLlama‑1.1B` cho target `LLaMA‑2‑7B`.
• Cấu hình `num_speculative_tokens=4‑8`; thực nghiệm cho thấy 4 token là cân bằng tốt giữa tốc độ và tỷ lệ chấp nhận (~85%).
• Triển khai qua `transformers.generation.utils.GenerationMixin` hoặc dùng `vllm` với tham số `speculative_model`.
- Lưu ý: Cần đo lường acceptance rate trên tập validation thực tế; nếu < 60% thì giảm `num_speculative_tokens` hoặc thay draft model lớn hơn.
3. Dynamic Batching (Continuous Batching)
- Vấn đề: Batch tĩnh khiến request ngắn phải chờ request dài kết thúc, làm tăng tail latency.
- Giải pháp: Engine như vLLM, TensorRT‑LLM, hoặc TGI hỗ trợ continuous batching — request mới được chèn vào batch đang chạy ngay khi có slot trống.
- Cấu hình quan trọng:
• `max_num_batched_tokens` (tổng token trong batch) và `max_num_seqs` (số request đồng thời).
• Thiết lập `preemption_mode=recompute` để giải phóng KV‑Cache của request bị preempt.
• Giám sát `queue_latency` và `gpu_utilization`; điều chỉnh hai tham số trên để giữ GPU > 85% utilization mà queue latency < 100 ms.
Checklist triển khai nhanh:
- Bật KV‑Cache mặc định.
- Thêm draft model và cấu hình speculative decoding.
- Chuyển sang inference engine hỗ trợ continuous batching.
- Chạy benchmark (throughput, p50/p99 latency) trên workload thực tế trước khi release.
Kết hợp ba kỹ thuật trên cho phép một cluster 4×A100 phục vụ ≈ 120 req/s cho LLaMA‑2‑7B với p99 latency < 1.2 s, giảm chi phí vận hành đáng kể so với baseline naive generate.