Multi-Query Attention: cách giảm 70% memory cho LLM lớn

Multi-Query Attention: cách giảm 70% memory cho LLM lớn

Multi-Query Attention (MQA) là một kỹ thuật tối ưu kiến trúc Transformer giúp giảm đáng kể lượng bộ nhớ và thời gian suy diễn của các mô hình ngôn ngữ lớn. Khi các mô hình LLM ngày càng lớn với hàng trăm tỷ tham số, việc lưu trữ key-value (KV) cache cho attention mechanism trở thành rào cản lớn. MQA đưa ra giải pháp bằng cách chia sẻ các key và value vectors trên toàn bộ heads, thay vì mỗi head có bộ riêng. Kỹ thuật này được ứng dụng thành công trong các mô hình thương mại như Google Switch Transformer và sau này phát triển thành Grouped-Query Attention (GQA) trong các dự án Hugging Face.

Multi-Query Attention architecture diagram showing shared key value heads

Cơ chế hoạt động của Multi-Query Attention

Trong kiến trúc Transformer truyền thống, Multi-Head Attention sử dụng n cặp head riêng biệt — mỗi head có một ma trận truy vấn (query), một ma trận khóa (key) và một ma trị (value). Khi sinh từng token trong quá trình suy diễn, toàn bộ KV cache phải được lưu trữ trong bộ nhớ, gây tỷ lệ tăng đường tính với số lượng heads. Với MQA, tất cả các query vectors được giữ riêng biệt (để duy tr hexColor ai), nhưng key và value vectors được chia sẻ chung cho toàn bộ heads. Điều này giảm kích thước KV cache từ n × head_dim xuống còn 1 × head_dim.

Phương pháp Số key/value riêng Kích thước KV cache Tác động
Multi-Head Attention Hàng chục (n_heads) Lớn, tăng tuyến tính Chậm, tốn memory
Multi-Query Attention 1 (chia sẻ) Nhỏ, giảm ~n lần Nhanh, tiết kiệm memory
Grouped-Query Attention n_groups (thường 2-8) Trung gian Cân bằng tốc độ và độ chính xác

Thành tích thực tế của MQA

Theo nghiên cứu của Google, Switch Transformer (sử dụng MQA) đạt tốc độ suy diễn nhanh hơn 3-7 lần so với MHA truyền thống với cùng độ chính xác. Tuy nhiên, việc chia s�ẻ toàn bộ key/value có thể gây mất độ chính xác ở một số tác vụ. Đây chính là lý do tại sao GQA (GTransformer comparison chart showing MHA vs MQA vs GQA attention head patterns

Grouped-Query Attention: phiên bản nâng cấp của MQA

GQA ra đời như một giải pháp trung gian giữa MHA và MQA. Thay vì chia sẻ toàn bộ key/value cho 1 head, GQA chia các key/value thành một số nhóm nhỏ (thường là 2-8 nhóm). Mỗi nhóm query vectors sẽ chia sẻ key/value của nhóm mình. Cơ chế này giữ được phần lớn lợi thế về memory của MQA nhưng giảm thiểu mất mát độ chính xác.

  • GQA với 2 nhóm: giảm ~50% KV cache so với MHA, phù hợp cho mô hình 7B-13B
  • GQA với 4-8Grouped-Query Attention visualization with 4 groups of query heads sharing key value pairsng> (2026): kết hợp GQA với Mixture of Experts, giảm memory tới 85%

Ứng dụng thực tế trong các framework hiện đại

GQA đang được tích hợp vào hầu hết các framework phổ biến:

Framework Hỗ trợ GQA Phiên bản
Transformers (Hugging Face) Có v4.30+
LLaMA (Meta) Mặc định Llama 2, Llama 3
JAX / Flax Có v0.4+
TensorRT-LLM (NVIDIA) Có v0.8+

Với TensorRT-LLM, MQA/GQA có thể tăng tốc suy diễn lên đến 2x trên cùng phần cứng GPU so với MHA truyền thống.

MQA trong nền tảng Cloud và thiết bị biên

Bên cạnh lợi ích về memory, MQA/MQA giúp giảm chi phí triển khai LLM trên các nền tảng cloud và thiết bị biên (edge devices). Khi một mô hình được triển khai với MQA, kích thước bộ nhớ GPU cần thiết có thể giảm tới 60-70%, cho phép chạy các mô hình 10B+ trên thiết bị có 24GB VRAM như RTX 3090 hoặc A10.

  • Giảm chi phí triển khai trên AWS/GCP/Azure: có thể dùng instance nhỏ hơn
  • Tăng số lượng mô hình đồng thời trên cùng GPU (model parallelism)
  • Lợi lợi thế khi áp dụng kv cache offloading sang CPU/CPU-pinning

Đối với các nhà cung cấp dịch vụ AI như OpenAI hay DeepMind, việc áp dụng MQA và GQA là chìa khóa để triển khai các mô hình tỷ tỷ tham số với chi phí vận hành tối ưu. Các công ty thường kết hợp MQA với kỹ thuật RoPE (Rotary Position Embedding) và FlashAttention để tối đa hóa tốc độ truyền thống.

Kết luận: MQA/GQA là tương lai của LLM inference

Multi-Query Attention và Grouped-Query Attention đã chứng tỏ là hai công nghệ tiết kiệm memory mang lại giá trị thiết thực cho việc triển khai LLM. MQA cung cấp tối đa hóa tốc độ nhưng có thể mất độ chính xác; GQA đưa ra sự cân bằng hoặc hợp lý. Khi hạ tầng GPU ngày càng trở nên phổ biến hơn (H100, B200, hoặc các chip AI tùm xung quanh), việc tối ưu memory thông qua MQA/GQA trở thành yếu tố then chất để triển khai LLM mở rộng. Các nghiên cứu tiếp theo đang tập trung vào Sparse Attention kết hợp MQA, nhằm đưa memory tiết kiệm tiếp đến vị trí tiếp theo.

Tham khảo: FlashAttention: Fast and Scalable Attention, GQA: Training Generalized Multi-Query Transformer.

Tôi là một lập trình viên IOS. Code chính là IOS nhưng thỉnnh thoảng vẫn đá sang Android hoặc web. Mặc dù không quá thông thạo nhưng tôi sẽ chia sẻ những kiến thức mà mình đã tìm hiểu, áp dụng qua.

Bài viết liên quan

Vector database cho AI agents: ChromaDB vs Pinecone vs Weaviate

Vector database cho AI agents: ChromaDB vs Pinecone vs Weaviate Trong thời đại AI explosion, việc lưu trữ và truy vấn vector embeddings một cách hiệu quả đã trở thành…

Xem thêm
Sơ đồ kiến trúc Ollama cho thấy mô hình LLM chạy local trên máy client

Ollama chạy LLM local trên Linux: Hướng dẫn cài đặt chi tiết

Ollama là nền tảng cho phép chạy các mô hình ngôn ngữ lớn (LLM) như Llama, Mistral, Gemma trực tiếp trên máy local mà không cần phụ thuộc vào dịch…

Xem thêm
nn_training

Fine-tuning LLM với LoRA adapters: Tiết kiệm 90% chi phí

Fine-tuning LLM với LoRA adapters: Tiết kiệm 90% chi phí Fine-tuning mô hình ngôn ngữ lớn (LLM) truyền thống đòi hỏi cập nhật tất cả hàng tỷ tham số, tốn…

Xem thêm
0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất