Ultralytics YOLO27: Đăng ký vào danh sách chờ.
Cấp phép YOLO
Quay lại Bảng thuật ngữ Ultralytics

Grouped Query Attention (GQA)

Attention truy vấn theo nhóm (GQA) cho phép các nhóm query head dùng chung key-value head, thu nhỏ KV cache và tăng tốc quá trình giải mã LLM.

Grouped-query attention (GQA) là một dạng attention đa đầu cho transformer, trong đó các nhóm query head dùng chung một key head và một value head. Ví dụ, Llama 3.1 8B ghép 32 query head với 8 key-value head ở mỗi layer. GQA nằm giữa multi-head attention (MHA), trong đó mỗi query head có key và value riêng, và multi-query attention (MQA), trong đó mọi query head dùng chung một key head và một value head. Joshua Ainslie cùng các đồng nghiệp tại Google Research giới thiệu phương pháp này trong bài viết GQA: Huấn luyện mô hình Transformer đa truy vấn tổng quát từ checkpoint đa đầu tại EMNLP 2023, cho thấy model GQA đạt chất lượng gần với MHA và tốc độ giải mã gần với MQA. Các mô hình ngôn ngữ lớn (LLM) mở như Llama 2 70B, dòng Llama 3, Mistral 7B và Gemma 2 sử dụng GQA; các mô hình thị giác-ngôn ngữ (VLM) được xây dựng dựa trên chúng, chẳng hạn PaliGemma 2 của Google sử dụng Gemma 2, cũng kế thừa GQA trong decoder ngôn ngữ.

Cách GQA hoạt động#

Trong self-attention, mỗi token được chiếu thành query, key và value cho mỗi head; mỗi head so sánh query với key của mình. GQA giữ nguyên toàn bộ query head nhưng chiếu ít key head và value head hơn; mỗi nhóm query head thực hiện attention bằng key và value dùng chung của nhóm đó. Với 8 query head và 2 key-value head, mỗi key-value head phục vụ 4 query head:

Phép tính attention bên trong mỗi head vẫn là attention tích vô hướng có scale như cũ. Với một nhóm, layer trở thành MQA; khi số nhóm bằng số query head, layer trở thành MHA. PyTorch hỗ trợ trực tiếp bố cục này thông qua đối số enable_gqa của scaled_dot_product_attention:

import torch
import torch.nn.functional as F

torch.manual_seed(0)
q = torch.randn(1, 8, 16, 64)  # 8 query heads, 16 tokens, 64 dimensions per head
k = torch.randn(1, 2, 16, 64)  # only 2 key heads
v = torch.randn(1, 2, 16, 64)  # and 2 value heads

out = F.scaled_dot_product_attention(q, k, v, is_causal=True, enable_gqa=True)

# Equivalent multi-head attention: copy each key-value head to its group of 4 query heads
k_full, v_full = k.repeat_interleave(4, dim=1), v.repeat_interleave(4, dim=1)
reference = F.scaled_dot_product_attention(q, k_full, v_full, is_causal=True)

print(f"Output {tuple(out.shape)}, same as copied heads: {torch.allclose(out, reference, atol=1e-6)}")
print(f"Cached values per token per layer: {k[0, :, 0].numel() * 2} with GQA, {k_full[0, :, 0].numel() * 2} with MHA")

Lệnh in ra Output (1, 8, 16, 64), same as copied heads: True và 256 with GQA, 1024 with MHA: cả 8 query head đều tạo đầu ra từ lượng key và value chỉ bằng một phần tư lượng mà MHA phải lưu trữ.

Vì sao GQA thu nhỏ KV cache#

Trong quá trình tạo văn bản, model giữ key và value của mọi token trước đó trong KV cache rồi đọc toàn bộ cache cho mỗi token mới; vì vậy, tốc độ giải mã bị giới hạn bởi băng thông bộ nhớ nhiều hơn là năng lực tính toán. Kích thước cache tăng theo số key-value head. Llama 3.1 8B có 32 layer, mỗi layer có 8 key-value head với 128 chiều, nên lưu 128 KiB cho mỗi token ở độ chính xác 16 bit, tương đương 16 GiB tại cửa sổ ngữ cảnh tối đa 131.072 token. Với MHA, cùng model đó cần 512 KiB mỗi token và 64 GiB khi đạt độ dài tối đa. Bộ nhớ được giải phóng có thể dùng cho ngữ cảnh dài hơn, batch lớn hơn khi batch liên tục và độ trễ suy luận mỗi token thấp hơn. Giao diện LLM của Ultralytics chấp nhận base_url cho mọi server tương thích OpenAI, chẳng hạn Llama 3.1 8B tự lưu trữ; với 8 key-value head, server có thể giữ số token hội thoại gấp bốn lần trong cùng dung lượng cache so với bố cục MHA 32 head.

Chuyển đổi model sang GQA#

GQA không đòi hỏi phải huấn luyện từ đầu. Các tác giả chuyển đổi checkpoint MHA hiện có bằng cách lấy trung bình các key head và value head trong từng nhóm, sau đó tiếp tục pretraining với khoảng 5% lượng compute ban đầu; họ gọi bước này là uptraining. MQA, biến thể cực hạn với một head dùng chung, được Noam Shazeer giới thiệu vào năm 2019 và có bố cục nhanh nhất, nhưng làm giảm chất lượng và có thể khiến quá trình huấn luyện mất ổn định; số nhóm trung gian giúp khôi phục phần lớn chất lượng đó.

  • Attention tiềm ẩn đa đầu (MLA): Được giới thiệu cùng DeepSeek-V2, phương pháp này nén key và value của mỗi token thành một vector tiềm ẩn nhỏ dùng chung.
  • PagedAttention: Cấp phát KV cache theo các khối kích thước cố định để tránh phân mảnh, không phụ thuộc vào số head sử dụng cache.
  • Attention cửa sổ trượt: Giới hạn số token được lưu trong cache cho mỗi layer; Mistral 7B kết hợp phương pháp này với GQA.
  • Flash attention: Kernel GPU tính attention chính xác nhanh hơn và hỗ trợ trực tiếp bố cục GQA.

Khám phá các giải pháp

Thị giác máy tính trong thể thao

Thị giác máy tính trong thể thao

Khám phá cách Ultralytics YOLO thúc đẩy thị giác máy tính trong thể thao với khả năng theo dõi cầu thủ và bóng, phân tích hiệu suất, cung cấp thông tin chuyên sâu cho huấn luyện và hỗ trợ phục hồi cho vận động viên.
Tìm hiểu thêm
Thị giác máy tính cho ảnh hàng không

Thị giác máy tính cho ảnh hàng không

Chuyển hình ảnh từ drone và ảnh hàng không thành thông tin chuyên sâu theo thời gian thực cho nông nghiệp, nuôi trồng thủy sản, bảo tồn và phân tích không gian địa lý với Ultralytics YOLO.
Tìm hiểu thêm
Thị giác máy tính trong hàng không vũ trụ

Thị giác máy tính trong hàng không vũ trụ

Ứng dụng computer vision trong ngành hàng không vũ trụ với Ultralytics YOLO cho kiểm tra máy bay, phát hiện dị vật trên đường băng (FOD), vận hành mặt đất tại sân bay và phát hiện lỗi vật liệu composite.
Tìm hiểu thêm
Computer vision trong lĩnh vực an ninh

Computer vision trong lĩnh vực an ninh

Bảo vệ mọi địa điểm bằng model Ultralytics YOLO. Vision AI hỗ trợ giám sát vành đai, phát hiện mối đe dọa, nhận dạng biển số và an toàn nơi làm việc.
Tìm hiểu thêm
Computer vision trong robotics

Computer vision trong robotics

Tăng cường năng lực cho máy móc thông minh bằng model Ultralytics YOLO. Vision AI trong lĩnh vực robotics hỗ trợ điều hướng tự động, nhận thức, theo dõi đối tượng và điều khiển theo thời gian thực.
Tìm hiểu thêm
Thị giác máy tính trong logistics

Thị giác máy tính trong logistics

Tinh giản hoạt động logistics với các model Ultralytics YOLO. Vision AI hỗ trợ kiểm tra kiện hàng, phân loại, theo dõi phương tiện và giám sát an toàn kho hàng theo thời gian thực.
Tìm hiểu thêm
Thị giác máy tính trong bán lẻ

Thị giác máy tính trong bán lẻ

Định hình lại hoạt động bán lẻ với các model Ultralytics YOLO. Vision AI hỗ trợ theo dõi hàng tồn kho, giám sát kệ hàng, quản lý hàng chờ và phân tích khách hàng thông minh hơn.
Tìm hiểu thêm
Thị giác máy tính trong chăm sóc sức khỏe

Thị giác máy tính trong chăm sóc sức khỏe

Xây dựng các giải pháp chăm sóc sức khỏe với model Ultralytics YOLO. Vision AI trong chăm sóc sức khỏe hỗ trợ xử lý hình ảnh y tế nhanh hơn, chẩn đoán thông minh hơn và theo dõi bệnh nhân.
Tìm hiểu thêm
Thị giác máy tính trong sản xuất

Thị giác máy tính trong sản xuất

Tối ưu hóa sản xuất bằng các model Ultralytics YOLO. Vision AI thúc đẩy kiểm soát chất lượng, phát hiện lỗi, tuân thủ PPE và tự động hóa dây chuyền lắp ráp.
Tìm hiểu thêm
Thị giác máy tính trong ngành ô tô

Thị giác máy tính trong ngành ô tô

Ứng dụng thị giác máy tính trong ngành ô tô với các model Ultralytics YOLO. Vision AI nâng cao an toàn giao thông, hỗ trợ người lái và tự động hóa phương tiện để tạo nên những tuyến đường thông minh hơn.
Tìm hiểu thêm
Thị giác máy tính trong nông nghiệp

Thị giác máy tính trong nông nghiệp

Ứng dụng AI thị giác vào nông nghiệp thông minh với các model Ultralytics YOLO. Hỗ trợ giám sát cây trồng, theo dõi vật nuôi và canh tác chính xác để nâng cao năng suất một cách thông minh hơn.
Tìm hiểu thêm

Hãy cùng nhau kiến tạo tương lai của AI!

Bắt đầu hành trình hướng đến tương lai của machine learning