AI Core cho lập trình viên/Tổng kết: Transformer & attention
36/54
Bài 36 / 54~6 phútTransformer & attentionMiễn phí lượt xem

Tổng kết: Transformer & attention

Ghép lại bức tranh: từ nỗi đau tuần tự đến attention, transformer block, decoder-only LLM và scaling laws — kèm self-assessment theo learning outcomes.

TL;DR: Module 4 mở hộp đen mà Module 3 để lại: model "nhìn" context bằng cách nào. Câu trả lời là attention — một phép tra cứu có trọng số qua query/key/value, chạy song song trên nhiều head để bắt nhiều kiểu quan hệ, ghép cùng FFN và residual thành một transformer block, xếp chồng N lớp. Causal mask biến kiến trúc đó thành LLM sinh văn bản: train song song mọi vị trí, nhưng inference vẫn sinh từng token. Scaling laws cho biết thêm params/data/compute đổi loss theo quy luật nào. Đây là 1 trang để bookmark.

Đã đi qua những gì

Bạn bắt đầu từ bài 01 với động lực: model đọc tuần tự kiểu cũ nén cả lịch sử vào một trạng thái ẩn kích thước cố định, nên thông tin ở xa phai dần và train không song song hoá được — bước t phải chờ bước t-1 xong. Bài 02 giới thiệu lời giải: attention là phép tra cứu mềm có trọng số, mỗi token phát ra query, so khớp với key của mọi token khác, rồi nhận về tổng có trọng số của value — chạy song song cho mọi token, không còn nút cổ chai tuần tự. Bài 03 chỉ ra một head chỉ bắt được một kiểu khớp, nên transformer chạy nhiều head song song, mỗi head tự phân hoá theo một kiểu quan hệ khác nhau qua quá trình train, rồi ghép lại.

Bài 04 vá lỗ hổng còn lại — self-attention không biết thứ tự — bằng positional encoding, rồi ghép self-attention, FFN và residual connection thành một transformer block hoàn chỉnh, xếp chồng N lớp để quan hệ gần dần trở thành quan hệ trừu tượng hơn. Bài 05 nối kiến trúc đó với LLM sinh văn bản: causal mask ép mỗi token chỉ nhìn quá khứ, cho phép train tính loss song song trên mọi vị trí trong một lần forward, nhưng khi inference thì token kế tiếp chưa tồn tại nên vẫn phải sinh tuần tự — độ trễ tỉ lệ với số token sinh ra. Bài 06 lùi ra xa: Kaplan et al. cho thấy loss giảm trơn và dự đoán được khi tăng params/data/compute, còn Chinchilla (Hoffmann et al.) chỉ ra tăng params mà giữ nguyên data là lãng phí — data chất lượng mới là nút thắt thật. Bài 07 đưa bạn đọc model card của một LLM thật, tự chỉ ra khối transformer và giải nghĩa layers/heads/params/context bằng đúng vốn từ vừa học.

Chuỗi kiến thức module: đọc tuần tự, attention Q/K/V, multi-head, transformer block, causal mask, scaling laws, và đọc model card của một LLM thật

🗺️ Cheat sheet

ConceptKhi nào cần nhớPitfall
Model đọc tuần tự (RNN-style)Giải thích vì sao transformer ra đờiTưởng chỉ cần tăng kích thước hidden state là hết nghẽn
Attention (query/key/value)Giải thích cơ chế mọi LLM hiện đại dùng để "nhìn" contextTưởng attention chọn cứng một token như lookup từ điển, thay vì trọng số mềm trên toàn bộ
Softmax trọng số attentionNhớ tổng trọng số attention luôn cộng đúng 100%Nghĩ trọng số cao nghĩa là model "hiểu nghĩa" như con người, không phải tương quan thống kê
Multi-head attentionGiải thích vì sao cần nhiều head thay vì mộtTưởng nhiều head là chạy lại cùng phép tính "cho chắc", hoặc càng nhiều head càng luôn tốt hơn
Positional encodingGiải thích vì sao self-attention cần thêm thông tin vị tríTưởng self-attention tự biết token nào đứng trước, đứng sau
Transformer block (attention + FFN + residual)Trace một token qua kiến trúcBỏ quên residual — không giải thích được vì sao xếp sâu không "quên" gradient
Causal maskGiải thích vì sao train song song được mà inference vẫn tuần tựNghĩ mask chỉ cần lúc inference để model "không gian lận", quên nó áp dụng cả lúc train
Decoder-only / next-token loopƯớc lượng độ trễ inference theo số token sinh raNghĩ có thể sinh nhiều token cùng lúc như lúc train song song
Scaling laws (Kaplan)Dự đoán xu hướng loss khi tăng computeCoi đây là công thức chính xác áp được cho mọi kiến trúc, thay vì xu hướng thực nghiệm định tính
Chinchilla / compute-optimalCân đối ngân sách compute giữa params và dataDồn hết compute thêm vào tăng params mà giữ nguyên data

📖 Glossary module

Thuật ngữĐịnh nghĩa 1 câu
Hidden stateTrạng thái ẩn kích thước cố định mà model đọc tuần tự dùng để nén toàn bộ lịch sử đã đọc
AttentionPhép tra cứu mềm có trọng số: mỗi token phát query, so khớp key của token khác, nhận value theo tỉ trọng
QueryVector "câu hỏi" một token phát ra để tìm token liên quan
KeyVector "nhãn chào hàng" mỗi token mang, dùng để so khớp với query của token khác
ValueVector nội dung thực một token đóng góp, được cộng vào output theo trọng số attention
SoftmaxHàm biến điểm khớp query-key thành trọng số attention, tổng luôn bằng 1
Multi-head attentionChạy nhiều head attention song song, mỗi head có bộ chiếu Q/K/V riêng, bắt một kiểu quan hệ khác nhau
HeadMột bản attention độc lập trong multi-head attention, học một kiểu khớp riêng qua train
Positional encodingVector vị trí cộng vào embedding trước block đầu tiên, bù cho việc attention không tự biết thứ tự
Self-attentionAttention áp dụng giữa các token trong cùng một chuỗi, để mỗi token thu thập thông tin từ token khác
Feed-forward network (FFN)Tầng xử lý từng token độc lập trong transformer block, sau self-attention
Residual connectionĐường tắt cộng input gốc vào output của một tầng, giữ gradient chảy được khi xếp sâu
Transformer blockMột lớp gồm self-attention, FFN và residual connection bao quanh cả hai
Decoder-onlyKiến trúc LLM chỉ dùng phần decoder của transformer, xếp chồng nhiều block với self-attention có causal mask
Causal maskRàng buộc mỗi token chỉ được nhìn các token đứng trước nó trong self-attention
AutoregressiveCơ chế sinh văn bản: token vừa sinh ra trở thành một phần input của bước kế tiếp
Scaling lawsQuy luật thực nghiệm mô tả loss giảm trơn khi tăng params, data, hoặc compute
Compute-optimal (Chinchilla)Tỉ lệ cân đối giữa params và data để tận dụng hết một ngân sách compute cho trước, không lãng phí
Emergent abilitiesKhả năng chỉ xuất hiện rõ ở quy mô model đủ lớn, khó dự đoán trước từ model nhỏ hơn

⚠️ Pitfall tổng hợp

1. Tưởng thêm hidden state lớn hơn là giải quyết được nghẽn của model đọc tuần tự:

Vấn đề không chỉ ở dung lượng — bước tính thứ t vẫn phải chờ bước t-1 xong, nên train vẫn không song song hoá được dù hidden state lớn tới đâu. Đây chính là nỗi đau attention giải quyết bằng cách bỏ hẳn tính tuần tự.

2. Tưởng attention chọn cứng một token, giống lookup từ điển:

Softmax luôn cho mọi token một trọng số khác 0. Không có bước chọn nhị phân — chỉ có phép nhân-cộng trên toàn bộ tập value theo tỉ trọng.

3. Tưởng multi-head là chạy lại cùng một phép tính nhiều lần "cho chắc":

Mỗi head có bộ trọng số chiếu Q/K/V riêng, nên học một kiểu quan hệ khác nhau theo thiết kế — mục tiêu là đa dạng góc nhìn, không phải giảm nhiễu kiểu ensemble voting.

4. Tưởng self-attention tự biết token nào đứng trước, đứng sau:

Self-attention chỉ so khớp nội dung, không có khái niệm thứ tự. Positional encoding phải được cộng thêm vào embedding trước khi vào block đầu tiên, nếu không model mù hoàn toàn về vị trí.

5. Bỏ quên residual connection khi hình dung transformer block:

Không có residual, xếp N lớp sâu dễ làm gradient tắt dần hoặc thông tin gốc bị pha loãng qua từng tầng. Residual giữ đường tắt cho input gốc chảy thẳng qua.

6. Nghĩ causal mask chỉ cần thiết lúc inference, để model "không gian lận" khi sinh:

Causal mask áp dụng cả lúc train — đó là cơ chế cho phép tính loss song song trên mọi vị trí mà không rò rỉ nhãn tương lai. Lúc inference, tương lai còn chưa tồn tại nên gần như không có gì để che.

7. Nghĩ có thể tăng tốc inference bằng cách sinh nhiều token cùng lúc, tương tự cách train song song:

Train song song được vì nhãn của mọi vị trí đã có sẵn trước khi chạy. Lúc sinh, token kế tiếp chưa tồn tại tới khi token hiện tại được chọn xong — không có "nhãn có sẵn" nào để tính song song.

8. Coi scaling laws là công thức chính xác, áp được cho mọi kiến trúc và dataset mới:

Đây là xu hướng thực nghiệm quan sát trên một họ model cụ thể, ở một thời điểm cụ thể. Nó định hướng quyết định đầu tư ở mức định tính — không thay việc đo thực tế trên đúng kiến trúc và dataset của bạn.

9. Nghĩ cứ có thêm compute là dồn hết vào tăng params sẽ lợi nhất:

Theo Chinchilla, nếu data giữ cố định, phần compute thêm đổ vào params dư sẽ bị lãng phí. Tận dụng hết compute cần tăng data tương xứng theo params.

✅ Self-assessment

Bạn đã đạt module này nếu trả lời được:

  • Bạn giải thích được vì sao model đọc tuần tự nghẽn ở phụ thuộc xa và không song song hoá được khi train, và attention giải quyết hai nỗi đau đó bằng cách nào chưa?
    • Nếu chưa: đọc lại bài 01 mục 2–3 và bài 02 mục 2–3.
  • Bạn giải thích được vai trò của query, key, value trong một head attention, và vì sao chạy nhiều head song song lại bắt được nhiều kiểu quan hệ khác nhau chưa?
  • Bạn trace được đường đi của một token qua một transformer block — từ positional encoding, qua self-attention, FFN, tới residual — và vì sao xếp chồng N lớp lại có ý nghĩa chưa?
    • Nếu chưa: đọc lại bài 04 mục 3–7.
  • Bạn trace được vòng lặp next-token của một decoder-only LLM, và giải thích được vì sao causal mask cho phép train song song trong khi inference vẫn phải sinh từng token một chưa?
    • Nếu chưa: đọc lại bài 05 mục 2–4.
  • Bạn dự đoán được hệ quả định tính khi tăng params, data, compute theo scaling laws chưa?
    • Nếu chưa: đọc lại bài 06 mục 2–5.
  • Bạn tự đọc và phân tích được một sơ đồ kiến trúc hoặc model card LLM thật, bằng đúng vốn từ transformer vừa học trong module này chưa?
    • Nếu chưa: làm lại bài 07 phần "Phần việc của bạn" trước khi xem lời giải.

🚀 What's next

Module 4 mở hộp đen "model nhìn context bằng cách nào" — bạn biết attention hoạt động ra sao bên trong, nhưng embedding (vector nghĩa mà query/key/value được suy ra từ đó) vẫn còn là khái niệm mượn tạm. Module 5 — Embedding, tìm kiếm & RAG mổ đúng khái niệm đó: embedding biến văn bản thành vector nghĩa thế nào, cosine similarity đo "gần" ra sao, chunking cắt tài liệu trước khi tìm, và RAG ghép retrieve với generate để AI trả lời dựa trên tài liệu của bạn thay vì chỉ dựa vào thứ đã học sẵn.

Module 6 — Tầng quyết định của engineer (prompt principles, fine-tune, agents, eval, cost/privacy trước khi ship) sẽ mở tiếp sau Module 5 — module đó dùng lại đúng các khái niệm attention và context ở đây khi bàn về giới hạn của prompt và agent.

Xem tiếp: Tổng quan: Embedding, tìm kiếm & RAG

📚 Tài liệu mở rộng

Bài này đáng gửi cho bạn học cùng?

Copy link đã gắn nguồn — dán group, chat, hoặc LinkedIn.

Bài này có giúp bạn hiểu bản chất không?

Hỏi đáp về bài này

Chưa có câu hỏi

Đặt câu hỏi

Có gì chưa rõ trong bài? Đặt câu hỏi đầu tiên — câu trả lời từ cộng đồng giúp bạn (và người sau).

Đặt câu hỏi đầu tiên

Bài tiếp theo

Tổng quan: Embedding, tìm kiếm & RAG