OpenArchLabOpen Architecture — From Models to Systems

E · Training Architecture

Compressed attention · CSA / HCA và hai trục nén

Cơ chế gộp nhiều token lịch sử liên tiếp thành ít mục nhớ hơn (Compressed Attention: CSA, HCA) để giảm cả dung lượng KV cache lẫn số bước quét dọc theo chiều dài chuỗi.

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

1Định nghĩa

Compressed Attention (như CSA và HCA trong họ DeepSeek-V4) là kỹ thuật nén lịch sử ngữ cảnh dọc theo trục số lượng token, khác với MLA vốn nén theo trục số chiều vector của từng token. Thay vì giữ nguyên một mục KV cache cho mỗi token quá khứ, mô hình gom từng cụm nhiều token liên tiếp thành một số lượng nhỏ các mục biểu diễn nén (compressed memory entries).

Trong thực tế, mô hình thường kết hợp vùng ngữ cảnh gần nhất được giữ nguyên độ phân giải (sliding window) với phần lịch sử xa được đọc qua các khối nén hoặc bộ chọn vị trí thưa (Sparse Attention). Ở các biến thể như CSA v2, nhiều lớp liên tiếp còn có thể tái sử dụng chung bảng chỉ mục vị trí đã chọn để giảm thêm chi phí tính toán ở pha prefill và decode.

Ví dụ đời thường: Compressed Attention (CSA, HCA) giống như cách bạn lưu trữ nhật ký công việc qua nhiều năm: những việc trong tuần này được giữ nguyên từng dòng chi tiết (cửa sổ gần nhất), nhưng cứ hết mỗi tháng hoặc mỗi quý bạn lại gom 30 trang nhật ký lẻ thành 1 trang tóm tắt ngắn gọn để đóng vào bìa hồ sơ — giảm hẳn số trang phải lật giở khi cần nhìn lại quá khứ xa.

2Luồng

Sơ đồ luồng (3 bước)
  1. Giữ recent window

    Token mới vẫn có đường đọc chi tiết.

  2. Nén history và chọn entries

    Duy trì compressor/indexer theo model.

  3. Chia sẻ cache khi được thiết kế

    Tuân thủ layer dependency và quantization layout.

Mã Mermaid
flowchart TD
  step1["Giữ recent window"]
  step2["Nén history và chọn entries"]
  step3["Chia sẻ cache khi được thiết kế"]
  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

Dự toán cache riêng raw window, compressed entries, indexer và recurrent buffers. Nén m token thành một entry không tự giảm mọi state m lần.

Thử task cần chi tiết token cũ để phát hiện mất thông tin. Long-context benchmark phải bao gồm retrieval ở history nén, không chỉ trong cửa sổ gần nhất.

FP4 KV của V4.1 có block scales và packing overhead. FP4 expert weights của V4 là tensor khác; không suy cache dtype từ dtype checkpoint.

4Profiling

  • Cache breakdown

    Đếm raw, compressed, indexer, shared và scale bytes; kiểm tra slopes theo T.

  • Compression quality

    So retrieval theo độ xa, độ dài và vị trí trong block nén; báo cả indexer latency.

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ụ

Hai trục độc lập

Gộp 4 token thành một entry giảm entry count; latent 512 thay KV 2048 giảm feature width. Chỉ có thể nhân tỷ lệ nếu cả hai thật sự áp lên cùng tensor và bỏ qua overhead.

Reuse có dependency

Layer Reuse đọc selection của layer nguồn. Chạy nó như một sparse layer độc lập với index mới có thể đổi logits và làm sai cache planner.

6Thuật ngữ

Token-axis compression
Gộp nhiều vị trí lịch sử vào ít entries hơn.
Feature-axis compression
Giảm chiều biểu diễn KV, như latent của MLA.
Glossary (9)
Data type
Kiểu dữ liệu của tensor, quyết định cách biểu diễn số.
Tensor
Mảng số nhiều chiều, như một vector, ma trận hoặc nhóm ma trận.
Model weights
Các tham số số học được học và lưu trong checkpoint.
Checkpoint
Bản lưu trạng thái model; phạm vi states phụ thuộc mục đích serving hay resume.
Cache
Bộ nhớ giữ kết quả có thể dùng lại; trong attention thường giữ key/value vectors.
Logits
Điểm số chưa chuẩn hóa cho các token ứng viên trước khi chọn token.
Latency
Thời gian chờ để nhận một kết quả hoặc một bước kết quả.
Overhead
Chi phí phụ như điều phối, chuyển đổi hoặc phát lệnh ngoài phép tính chính.
Context
Chuỗi token trước vị trí hiện tại mà model được phép sử dụng.

7Bài liên quan

8Nguồn