Bỏ qua tới nội dung chính
Quay lại tin tức

Từ Transformer nguyên bản đến các LLM hiện đại: Sự tiến hóa của kiến trúc Transformer — Phần 2…

Medium Towards AI· Naimish Baranwal· 27/10/2026general

Từ Transformer nguyên bản đến các LLM hiện đại: Sự tiến hóa của kiến trúc Transformer — Phần 2: Hiệu quả suy luận (KV Cache) Bản chất phía sau cơ chế KV Cache Trong phần trước, hai khái niệm Query (Q) và Key (K) đã được đề cập trong quá trình tìm hiểu về thông tin vị trí. Về bản chất, cơ chế chú ý (attention) có thể được hiểu một cách đơn giản như sau: Query (Q) → Đối tượng cần tìm kiếm là gì? Key (K) → Mỗi token đại diện cho thông tin nào, nhằm xác định mức độ phù hợp với Query? Value (V) → Thông tin thực tế nào cần được trích xuất nếu token đó có liên quan? Mô hình này có thể được xem như một hệ thống tìm kiếm: Query = Câu hỏi Key = Thông tin

Từ mô hình Transformer nguyên bản đến các LLM hiện đại: Sự tiến hóa của kiến trúc Transformer — Phần 2: Hiệu quả suy luận (KV Cache) Nguyên lý cơ bản của KV Cache Trong phần trước, khái niệm Query (Q) và Key (K) đã được đề cập trong quá trình tìm hiểu về thông tin vị trí. Cơ chế chú ý (attention) có thể được hiểu một cách đơn giản như sau: Query (Q) → Mục tiêu tìm kiếm là gì? Key (K) → Mỗi token đại diện cho thông tin gì để xác định mức độ liên quan đến truy vấn? Value (V) → Nội dung thông tin thực tế cần trích xuất nếu token đó phù hợp là gì? Cơ chế này tương tự như một hệ thống tìm kiếm: Query = câu hỏi Key = thông tin dùng để xác định mức độ phù hợp của token đối với Query Value = thông tin thực tế được trích xuất. Đây cũng là lý do thông tin vị trí trong RoPE được áp dụng chủ yếu cho Q và K: cơ chế chú ý xác định các token tương tác với nhau thông qua mối quan hệ giữa Q và K. Tuy nhiên, KV Cache giải quyết một bài toán khác. Trong quá trình tạo văn bản tự hồi quy (suy luận LLM), mô hình LLM tạo ra từng token một. Tại mỗi bước mới, token vừa được tạo cần phải chú ý đến toàn bộ các token đứng trước. Giả sử mô hình đã tạo ra chuỗi: The → name → is → Naimish. Khi tạo token tiếp theo, mô hình cần các biểu diễn Key và Value của tất cả các token trước đó. Nếu không có cơ chế lưu trữ đệm KV (KV Cache), chuỗi dữ liệu ngày càng mở rộng sẽ buộc mô hình phải tính toán lại các biểu diễn K và V của những token đã xử lý trước đó tại mỗi bước giải mã. Ví dụ: Bước 1: The → tính K₁, V₁ Bước 2: The Name → tính lại K₁, V₁ → tính K₂, V₂ Bước 3: The name is → tính lại K₁, V₁ → tính lại K₂, V₂ → tính K₃, V₃. Sự lặp lại diễn ra rõ rệt. Các giá trị Key và Value cho "The" và "name" vốn đã được tính toán, nhưng quy trình tính toán vẫn lặp lại. Mô hình tự hồi quy LLM. KV Cache: Ý tưởng cơ bản Thay vì loại bỏ các giá trị K và V đã tính toán trước đó, hệ thống lưu trữ chúng vào bộ nhớ. Các token trước đó ↓ Tính K và V ↓ Lưu trữ ↓ KV Cache. Khi token tiếp theo xuất hiện, hệ thống chỉ tính K và V mới rồi bổ sung vào bộ nhớ đệm hiện có. Về mặt nguyên lý: Bước 1: K₁, V₁ ↓ Cache = [K₁, V₁] Bước 2: K₂, V₂ mới ↓ Cache = [K₁, K₂], [V₁, V₂] Bước 3: K₃, V₃ mới ↓ Bộ nhớ đệm (Cache) = [K₁, K₂, K₃], [V₁, V₂, V₃] Do đó, thay vì phải liên tục tính toán lại các giá trị trong quá khứ, mô hình sẽ tái sử dụng các biểu diễn Key và Value đã được tính toán trước đó. Đó là nguyên lý cơ bản của KV Cache: Tính toán dữ liệu quá khứ một lần, lưu trữ và tái sử dụng trong các bước tạo sinh tiếp theo. Cơ chế này giúp giảm đáng kể khối lượng tính toán dư thừa trong quá trình suy luận tự hồi quy (autoregressive inference), đồng thời là một trong những kỹ thuật quan trọng nhất nhằm tối ưu hóa hiệu quả tạo sinh của LLM. Tuy nhiên, phương pháp tối ưu hóa này lại phát sinh một vấn đề khác: Nếu liên tục lưu trữ K và V cho mọi token trước đó, dung lượng bộ nhớ GPU mà KV Cache tiêu thụ sẽ lớn đến mức nào khi độ dài ngữ cảnh gia tăng? Trước khi xem xét bài toán dung lượng bộ nhớ, cần tìm hiểu chính xác phương thức tính toán Q, K và V. Mô tả toán học Sau khi nắm được nguyên lý trực quan của KV Cache, khía cạnh toán học của mô hình sẽ được làm rõ. Nội dung phân tích dưới đây áp dụng cho giai đoạn suy luận (inference). Trong quá trình huấn luyện, mô hình học các tham số, bao gồm cả các ma trận chiếu dùng để tạo ra Q, K và V. Khi quá trình huấn luyện hoàn tất, các trọng số này được cố định trong giai đoạn suy luận. Do đó, khi suy luận, hệ thống sử dụng các trọng số đã huấn luyện này để tính toán Q, K và V cho các token đầu vào. 1. Phương thức tạo lập Q, K và V Giả sử dữ liệu đầu vào gồm 4 token: The name is naimishĐể đơn giản hóa, giả định mỗi token được biểu diễn bằng một vector nhúng (embedding) 3 chiều. Ma trận đầu vào (X) được xác định như sau: X = [ [ 0,1, 2,3, -3,4 ], → The [ 0,4, 3,7, -7,9 ], → name [-1,2, -0,4, 12,7 ], → is [ 0,8, 9,5, -2,2 ] → naimish ] Theo đó, kích thước của (X) là: X : 4 × 3 trong đó: 4 = số lượng token 3 = số chiều nhúngMô hình Transformer bao gồm ba ma trận chiếu đã được huấn luyện: Wq → Ma trận chiếu Query Wk → Ma trận chiếu Key Wv → Ma trận chiếu Value Xét ví dụ đơn giản hóa: Wq = [ [0,12, 1,3, 8,4], [2,4, 5,7, 2,9], [1,2, 7,4, 1,7] ] và tương tự đối với (W_k) và (W_v). Các ma trận này được hình thành trong quá trình huấn luyện và được cố định trong giai đoạn suy luận. Các giá trị sau đó được tính toán như sau: Q = XWq K = XWk V = XWv Do đó: Đầu vào X ↓ ┌───────┬───────┬───────┐ ↓ ↓ ↓ Wq Wk Wv ↓ ↓ ↓ Q K VKết quả thu được là ba ma trận chứa các biểu diễn Query, Key và Value cho các token. Xét ví dụ đơn giản với cơ chế chú ý đơn đầu (single-head): X : 4 × 3 Wq : 3 × 3 Wk : 3 × 3 Wv : 3 × 3 Do đó: Q = XWq → 4 × 3 K = XWk → 4 × 3 V = XWv → 4 × 3Trên thực tế, đối với kiến trúc Transformer đa đầu (multi-head), các phép chiếu này được phân chia qua các đầu chú ý (attention heads), song nguyên lý cơ bản không thay đổi. 2. Từ Q, K, V đến cơ chế Attention Hiện tại, mô hình đã xác định được: Q, K và V. Vấn đề tiếp theo là: Mô hình xác định mức độ ưu tiên chú ý đối với các token như thế nào? Trước hết, độ tương đồng giữa từng Query và từng Key được xác định thông qua tích vô hướng (dot product). Công thức được biểu diễn như sau: **Điểm số Attention (Attention Scores)** = QKᵀ Sau đó, các điểm số được điều chỉnh tỉ lệ theo căn bậc hai của kích thước chiều Key: Điểm số sau điều chỉnh tỉ lệ (Scaled Scores) = QKᵀ / √dₖ Tiếp theo, hàm Softmax được áp dụng: **Trọng số Attention (Attention Weights)** = softmax(QKᵀ / √dₖ) Cuối cùng, các trọng số Attention này được nhân với ma trận Value: **Vector ngữ cảnh (Context vector)** = softmax(QKᵀ / √dₖ)V Như vậy, công thức hoàn chỉnh của cơ chế chú ý tích vô hướng điều chỉnh tỉ lệ (scaled dot-product attention) là: Attention(Q, K, V) = softmax(QKᵀ / √dₖ)VĐiểm khác biệt quan trọng là: Q × Kᵀ ↓ Mức độ liên quan của từng token ↓ Softmax ↓ Trọng số chú ý (attention weights) ↓ Nhân với V ↓ Biểu diễn ngữ cảnh / biểu diễn được chú ý (context / attended representation)Và đây chính là điểm mà KV Cache phát huy hiệu quả trong quá trình tạo sinh tự hồi quy (autoregressive generation). Query của token mới được tạo ra phải tương tác với Key của toàn bộ các token trước đó: Q mới ↓ Q × [K₁, K₂, K₃, ..., Kₙ]ᵀTuy nhiên, các Key trước đó đều đã được tính toán. Do đó, thay vì phải tính toán lại: K + V trước đó ↓ KV Cache ↓ Tái sử dụngChỉ có K và V của token mới cần được tính toán và đưa thêm vào bộ nhớ đệm (cache). Đó là cơ sở toán học căn bản giúp KV Cache cắt giảm các phép tính dư thừa trong quá trình suy luận tự hồi quy. Hình ảnh minh họa: Đường dẫn video: YoutubeTại bước suy luận = 1 (“The”)Tại bước suy luận = 2 (“The Name”)Tại bước suy luận = 3 (“The

Nguồn tin: Medium Towards AI — Tác giả: Naimish Baranwal. Bản dịch tiếng Việt do AI thực hiện, có thể có sai sót.