LLM & NLP

Transformer và self-attention: hiểu nền móng của mọi LLM

Tóm tắt

Transformer cho mỗi token tự quyết định chú ý vào token nào (Q·K) rồi lấy thông tin về (V). Hiểu cơ chế này giải thích vì sao context dài đắt, prompt caching hiệu quả và vị trí thông tin trong prompt quan trọng.

Mọi LLM bạn dùng hằng ngày, từ Claude tới GPT hay Gemini, đều xây trên kiến trúc Transformer ra đời năm 2017 trong bài báo "Attention Is All You Need" (Vaswani và cộng sự, Google). Trước đó, NLP dùng mạng hồi quy (RNN/LSTM) đọc từng từ một theo thứ tự, vừa chậm vừa hay "quên" thông tin ở xa. Transformer bỏ hẳn cơ chế hồi quy, thay bằng self-attention: mỗi token nhìn thẳng vào mọi token khác cùng lúc. Hiểu cơ chế này giúp bạn lý giải được vì sao context dài lại đắt và vì sao vị trí thông tin trong prompt quan trọng.

Self-attention trong một câu

Với mỗi token, model tự hỏi: "Để hiểu mình, mình nên chú ý tới những token nào khác, và chú ý bao nhiêu?" Trong câu "Con mèo không ăn vì nó no", attention giúp token "nó" gắn trọng số cao vào "con mèo".

Query, Key, Value

Mỗi token được chiếu thành ba vector:

VectorVai tròVí von
Query (Q)Token này đang tìm gìCâu bạn gõ vào ô tìm kiếm
Key (K)Token này "quảng cáo" mình chứa gìTiêu đề của từng tài liệu
Value (V)Nội dung thực sự được lấy vềThân tài liệu

Điểm chú ý = tích vô hướng Q·K, chia cho căn bậc hai số chiều để ổn định, qua softmax thành trọng số, rồi nhân với V:

Attention(Q, K, V) = softmax(Q·Kᵀ / √d_k) · V

Những mảnh ghép còn lại

  • Multi-head attention: chạy nhiều "đầu" attention song song, mỗi đầu học một kiểu quan hệ (ngữ pháp, đồng tham chiếu, vị trí…), rồi ghép lại.
  • Positional encoding: attention vốn không biết thứ tự, nên phải cộng thêm thông tin vị trí vào mỗi token. Model hiện đại dùng các biến thể như RoPE.
  • Feed-forward + residual + layer norm: sau attention, mỗi token qua một mạng nhỏ; kết nối tắt và chuẩn hoá giúp xếp chồng hàng chục tới hàng trăm lớp.
  • Causal mask (decoder-only): LLM sinh văn bản chỉ cho token nhìn về phía trước, không "nhìn trộm" token tương lai. Đó là lý do model sinh từng token một.

Vì sao điều này quan trọng với người dùng?

Đặc tính kiến trúcHệ quả thực tế
Attention so mọi cặp token: chi phí tăng theo bình phương độ dàiContext dài chậm và đắt; nhà cung cấp tính tiền theo token đầu vào
Sinh từng token, mỗi token phụ thuộc phần trướcOutput dài làm tăng độ trễ tuyến tính; yêu cầu ngắn gọn là cách tăng tốc rẻ nhất
Key/Value của phần đầu prompt có thể tái sử dụng (KV cache)Đây là nền tảng của prompt caching: giữ phần đầu prompt ổn định để được giảm giá
Trọng số attention phân bổ không đều trên context dàiThông tin bị "chìm" ở giữa context; cấu trúc và vị trí trong prompt có ảnh hưởng

Rủi ro khi hiểu sai

  • "Attention = hiểu": trọng số attention không phải lời giải thích đáng tin cho quyết định của model; đừng dùng heatmap attention làm bằng chứng kiểm toán.
  • "Context càng dài càng tốt": cửa sổ lớn không có nghĩa model dùng đều mọi phần. Chọn lọc vẫn thắng nhồi nhét.
  • Tự huấn luyện từ đầu: hiểu kiến trúc không có nghĩa nên tự train. Với hầu hết dự án, prompt tốt + RAG + API là đủ.

Áp dụng thế nào?

  • Dev: Đọc "The Illustrated Transformer" của Jay Alammar (có hình minh hoạ từng bước), rồi thử cài attention bằng NumPy trong 30 dòng để hiểu thật.
  • Tech Lead: Dùng hiểu biết về KV cache để thiết kế prompt: phần cố định (system, tài liệu, tool) đặt đầu và giữ nguyên để tận dụng caching.
  • PM: Khi team đề xuất "tăng context lên gấp đôi", hỏi lại chi phí và độ trễ tăng bao nhiêu, và có cách chọn lọc dữ liệu tốt hơn không.

Nguồn & tham khảo

  1. Attention Is All You Need — Vaswani et al. (arXiv)
  2. The Illustrated Transformer — Jay Alammar