OpenArchLabOpen Architecture — From Models to Systems

E · Training Architecture

Sparse attention · DSA và MSA chọn vị trí

Kỹ thuật Sparse Attention theo ngữ cảnh (DSA, MSA): dùng bộ lập chỉ mục nhẹ chấm điểm và chọn ra một tập nhỏ vị trí hoặc khối KV quan trọng nhất để tính attention.

LESSON ID arch-sparse GROUP Bản đồ nền tảng LLM
Mục lục bài học

1Định nghĩa

Dynamic Sparse Attention là kỹ thuật giảm chi phí đọc KV cache và tính Attention trên ngữ cảnh dài bằng cách chỉ chọn ra một tập nhỏ các token quá khứ thực sự liên quan tới token hiện tại, thay vì quét toàn bộ lịch sử hay chỉ cắt cứng một cửa sổ gần nhất. Cần phân biệt: Sparse Attention thưa theo trục vị trí token, còn MoE thưa theo trục mạng chuyên gia FFN.

Hai thiết kế tiêu biểu là DSA (DeepSeek Sparse Attention — đặt một bộ chấm điểm nhẹ để lọc nhanh top-k vị trí quan trọng nhất trước khi đọc biểu diễn MLA) và MSA (MiniMax Sparse Attention — gom KV theo từng khối liền kề và chọn top-k khối trên nền GQA để tận dụng tốc độ đọc bộ nhớ theo cụm của kernel). Lưu ý rằng các vị trí không được chọn ở bước này có thể được chọn ở bước sau, nên toàn bộ KV lịch sử vẫn cần lưu trong bộ nhớ.

Ví dụ đời thường: Dynamic Sparse Attention (DSA, MSA) giống như cách bạn tra cứu thông tin trong một cuốn bách khoa toàn thư dày 1.000 trang: thay vì đọc lại từng chữ từ trang 1 đến trang 1.000 mỗi khi có câu hỏi, bạn liếc nhanh bảng chỉ mục (light indexer) để nhặt ra đúng 5 trang hoặc 5 chương có liên quan nhất rồi chỉ mở đúng những trang đó ra đọc kỹ.

2Luồng

Sơ đồ luồng (3 bước)
  1. Lập candidate scores

    Tính index scores trong lịch sử/candidate pool hợp lệ.

  2. Chọn token hoặc block

    Áp causal mask và selection policy.

  3. Chạy attention trên tập đã chọn

    Softmax vẫn đọc key/value của tập đó.

Mã Mermaid
flowchart TD
  step1["Lập candidate scores"]
  step2["Chọn token hoặc block"]
  step3["Chạy attention trên tập đã chọn"]
  step1 --> step2
  step2 --> step3

Luồng mô tả cơ chế hoặc quy trình kiểm tra. Các ví dụ số là giả định giáo dục; demo Atlas không chạy kiến trúc production này.

3Giải pháp

Phân tách FLOPs/index bandwidth, selection, gather và expensive attention. Nếu indexer quét mọi vị trí cho mỗi query, prefill vẫn có thành phần tăng bậc hai.

DSA huấn luyện indexer theo phân phối attention mục tiêu, có giai đoạn warm-up trước sparse training trong V3.2. Thay top-k ở inference có thể đổi chất lượng; không xem đây là tham số hoàn toàn miễn phí.

Kiểm tra sparse kernel thực sự tránh đọc/tính vị trí bị loại. Dense attention nhân mask sparse sau khi tính QK vẫn phải trả phần lớn chi phí dense.

4Profiling

  • Selection recall

    So selected set với attention mass/reference và task quality ở nhiều độ dài.

  • Chi phí từng khâu

    Profile indexer, top-k, gather, attention; ghi KV retained bytes riêng.

Mẹo đo lường: ghim số liệu trên workload thật, ghi cả p50/p95/p99 thay vì chỉ trung bình, và luôn ghi lại điều kiện chạy (batch, cache, đồng thời, phần cứng) trước và sau khi tối ưu. Số đo thiếu điều kiện chạy thì không so sánh được.

5Ví dụ

Sparse nhưng cache còn tăng

T=100.000,k=2.048: attention chính chỉ đọc khoảng 2% vị trí cho một query, nhưng KV lịch sử có thể vẫn cần lưu đầy đủ. Kết luận cache giảm 98% là sai.

Token vs block

Chọn 4 block kích thước 64 đọc tối đa 256 token; chọn 4 token chỉ đọc 4 vị trí. Hai con số top-k không so trực tiếp được.

6Thuật ngữ

Indexer
Nhánh rẻ hơn ước lượng vị trí/block đáng đọc.
Top-k token ≠ top-k expert
Một bên chọn history entries; một bên chọn mạng FFN.
Glossary (3)
Cache
Bộ nhớ giữ kết quả có thể dùng lại; trong attention thường giữ key/value vectors.
Kernel
Hàm tính toán chạy trên thiết bị; thường xử lý nhiều phần tử song song.
Mask
Quy tắc vị trí nào được nhìn nhau hoặc được tính vào loss.

7Bài liên quan

8Nguồn