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

Các biến thể cơ chế Attention và hiệu quả sử dụng bộ nhớ

Machine Learning Mastery· Adrian Tam· 9/11/2026general

Tổng quan. Bài viết này được chia làm tám phần, bao gồm: • Checkpoint cố định kiến trúc Attention • Phân tích chi tiết bộ nhớ Attention • Multi-Head Attention • Multi-Query Attention và Grouped-Query Attention • Sliding-Window Attention và Mixed Attention • Multi-Head Latent Attention • Những yếu tố môi trường thực thi suy luận có thể thay đổi • Từ quy mô bộ nhớ đệm đến năng lực cung cấp dịch vụ. Checkpoint cố định kiến trúc Attention. Checkpoint ấn định cấu hình mô hình; công cụ suy luận (inference engine) không làm thay đổi cấu hình này.

Các biến thể cơ chế chú ý và hiệu quả sử dụng bộ nhớ Tác giả: Adrian Tam, ngày 7/11/2026, chuyên mục Suy luận từ các mô hình transformer 0 Chia sẻ Đăng bài Chia sẻ Hai mô hình transformer có cùng số lượng tham số vẫn có thể có yêu cầu bộ nhớ rất khác nhau trong quá trình suy luận (inference). Nguyên nhân chủ yếu nằm ở cấu trúc của các lớp cơ chế chú ý (attention). Số lượng đầu khóa - giá trị (key-value heads), biểu diễn lưu trữ cho mỗi token và số lượng token trước đó được mỗi lớp giữ lại sẽ quyết định dung lượng bộ nhớ đệm KV (KV cache) cần thiết cho một yêu cầu xử lý. Khi triển khai một điểm kiểm tra (checkpoint) có sẵn, người vận hành không thể tự ý quyết định các lớp bên trong sẽ sử dụng cơ chế chú ý đa đầu (multi-head attention), chú ý theo nhóm truy vấn (grouped-query attention), chú ý đa truy vấn (multi-query attention), chú ý cửa sổ trượt (sliding-window attention) hay chú ý tiềm ẩn đa đầu (multi-head latent attention). Mô hình sau khi huấn luyện đã cố định các cấu trúc này. Nhiệm vụ trong quá trình suy luận là khảo sát kiến trúc, tính toán nhu cầu bộ nhớ và sử dụng bố cục bộ nhớ đệm cùng nhân xử lý chú ý (attention kernel) tương thích. Các checkpoint có thể được so sánh trước khi triển khai, nhưng không thể hoán đổi biến thể chú ý này bằng một biến thể khác mà vẫn kỳ vọng mô hình hoạt động như cũ. Bài viết này cung cấp các nội dung sau: Cách kiến trúc chú ý quyết định dung lượng bộ nhớ đệm KV cố định Ảnh hưởng của cơ chế nhóm đầu chú ý, cửa sổ trượt và chú ý tiềm ẩn đối với nhu cầu bộ nhớ Cách ước tính năng lực phục vụ dựa trên checkpoint và các cấu hình thời gian chạy (runtime) Chi tiết nội dung như sau: Các biến thể cơ chế chú ý và hiệu quả sử dụng bộ nhớ. Ảnh: Chris Boland. Đã bảo lưu một số quyền. Tổng quan Bài viết được chia làm tám phần: Checkpoint cố định kiến trúc chú ý Phân tích chi tiết bộ nhớ của cơ chế chú ý Cơ chế chú ý đa đầu (Multi-Head Attention) Cơ chế chú ý đa truy vấn và theo nhóm truy vấn (Multi-Query và Grouped-Query Attention) Cơ chế chú ý cửa sổ trượt và chú ý hỗn hợp (Sliding-Window và Mixed Attention) Cơ chế chú ý tiềm ẩn đa đầu (Multi-Head Latent Attention) Các yếu tố môi trường suy luận có thể thay đổi Từ dung lượng bộ nhớ đệm đến năng lực phục vụ Checkpoint cố định kiến trúc chú ý Checkpoint quyết định cấu hình của mô hình; công cụ suy luận không làm thay đổi cấu hình này. Cấu hình và các trọng số sẽ xác định các phép chiếu chú ý, số lượng đầu truy vấn và đầu khóa - giá trị, mô hình chú ý cục bộ cùng các chiều tiềm ẩn. Việc thay thế MHA bằng GQA sau khi huấn luyện sẽ làm biến đổi mô hình và có thể đòi hỏi phải huấn luyện bổ sung để khôi phục chất lượng. Việc thay thế cơ chế chú ý toàn phần bằng cửa sổ trượt sẽ loại bỏ ngữ cảnh mà mô hình huấn luyện cần có. Biến thể chú ý vẫn có ý nghĩa thiết thực đối với công tác triển khai theo hai khía cạnh: Quyết định chi phí bộ nhớ và băng thông cần thiết để vận hành một checkpoint đã chọn. Đóng vai trò là một tiêu chí đánh giá khi lựa chọn giữa các mô hình đã qua huấn luyện đạt chuẩn chất lượng. Sử dụng môi trường PyTorch và transformers đã thiết lập trong phần Chiến lược giải mã và kiểm soát đầu ra. Các mô hình trong thư viện transformers của Hugging Face đều có các đối tượng cấu hình tương ứng. Có thể kiểm tra các trường dữ liệu thông dụng theo đoạn mã dưới đây: Kiểm tra các thiết lập chú ý và bộ nhớ đệm trong cấu hình mô hình Hugging Face. from transformers import AutoConfig config = AutoConfig.from_pretrained("Qwen/Qwen2.5-0.5B") head_dim = getattr( config, "head_dim", config.hidden_size // config.num_attention_heads, ) print("layers:", config.num_hidden_layers) print("attention heads:", config.num_attention_heads) print("key-value heads:", getattr(config, "num_key_value_heads", None)) print("hidden size:", config.hidden_size) print("head dimension:", head_dim) print("uses sliding window:", getattr(config, "use_sliding_window", None)) print("sliding window:", getattr(config, "sliding_window", None)) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 from transformers import AutoConfig config = AutoConfig.from_pretrained("Qwen/Qwen2.5-0.5B") head_dim = getattr( config, "head_dim", config.hidden_size // config.num_attention_heads, ) print("layers:", config.num_hidden_layers) print("attention heads:", config.num_attention_heads) print("key-value heads:", getattr(config, "num_key_value_heads", None)) print("hidden size:", config.hidden_size) print("head dimension:", head_dim) print("uses sliding window:", getattr(config, "use_sliding_window", None)) print("sliding window:", getattr(config, "sliding_window", None)) Tên các trường và cấu trúc phân tầng có sự khác biệt giữa các họ mô hình. Một tệp cấu hình cũng có thể chứa giá trị cho một tính năng vốn đã bị vô hiệu hóa bởi một trường khác; do đó, cần kiểm tra đồng thời cả giá trị lẫn cờ kích hoạt tương ứng. Một số mô hình áp dụng đồng nhất một cơ chế chú ý (attention) trên toàn bộ các tầng, trong khi một số mô hình khác lại đan xen giữa các tầng cục bộ (local) và toàn cục (global). Tệp cấu hình và mã nguồn triển khai mô hình chính là căn cứ chuẩn xác nhất. Phân tích chuyên sâu về bộ nhớ trong cơ chế chú ý Cơ chế chú ý tạo ra hai loại bộ nhớ khác nhau trong quá trình suy luận (inference): Bộ nhớ cố định (persistent memory) được duy trì giữa các bước giải mã (decode). Bộ nhớ đệm KV (KV cache) là ví dụ điển hình. Bộ nhớ tạm thời (temporary memory) là vùng không gian làm việc được sử dụng trong quá trình lan truyền tiến (forward pass), bao gồm các khối điểm chú ý (attention-score tiles), số liệu thống kê softmax và bộ đệm tạm thời của nhân tính toán (kernel scratch buffers). Quá trình huấn luyện lưu giữ nhiều giá trị trung gian của lượt lan truyền tiến nhằm phục vụ lượt lan truyền ngược (backward pass), trong khi quá trình suy luận có thể giải phóng các giá trị tạm thời ngay sau khi sử dụng. Bộ nhớ cố định gia tăng theo số lượng yêu cầu đang hoạt động và số lượng token được lưu đệm, do đó yếu tố này thường quyết định năng lực xử lý đồng thời tối đa. Một thuật toán chú ý tối ưu hóa bộ nhớ có thể thu hẹp không gian làm việc tạm thời mà không làm thay đổi dung lượng bộ nhớ đệm KV logic theo yêu cầu của mô hình. Đối với cấu trúc biểu diễn khóa-giá trị (key-value) tiêu chuẩn, dung lượng bộ nhớ đệm cho một yêu cầu được tính như sau: $$ M^{\text{KV}} = 2S\sum_{i=1}^{L} T_i H_i^{\text{KV}}D_i $$ Trong đó, $T_i$ là số lượng token được lưu giữ tại tầng $i$, $H_i^{\text{KV}}$ là số lượng đầu khóa-giá trị (key-value heads), $D_i$ là kích thước của mỗi đầu (head dimension), và $S$ là số byte trên mỗi phần tử trong bộ nhớ đệm. Hệ số 2 đại diện cho hai thành phần khóa (keys) và giá trị (values). Công thức phân tách theo từng tầng này cũng áp dụng được cho các mô hình có cơ chế chú ý khác nhau giữa các tầng. Khi toàn bộ các tầng sử dụng chung một cấu hình và lưu giữ trọn vẹn ngữ cảnh, biểu thức được rút gọn thành: $$ M^{\text{KV}}=2SLTH^{\text{KV}}D $$ Đối với một lô (batch) gồm các yêu cầu có độ dài bằng nhau, chỉ cần nhân dung lượng bộ nhớ này với kích thước lô (batch size). Phương thức triển khai biểu diễn lô dưới dạng các chuỗi đệm (padded sequences) có thể phải phân bổ bộ nhớ đệm cho cả các vị trí đệm (padding). Ngược lại, phương thức triển khai mảng không đồng đều (ragged) có thể chỉ phân bổ đúng lượng bộ nhớ đệm theo yêu cầu của từng yêu cầu

Nguồn tin: Machine Learning Mastery — Tác giả: Adrian Tam. Bản dịch tiếng Việt do AI thực hiện, có thể có sai sót.