E · Training Architecture
Vị trí · RoPE, partial RoPE, NoPE và YaRN
Cơ chế mã hóa vị trí tương đối bằng phép quay vector (RoPE), các biến thể quay một phần chiều (Partial RoPE), bỏ vị trí ở một số lớp (NoPE) và mở rộng ngữ cảnh dài (YaRN).
1Định nghĩa
Vì phép tính Attention bản chất không tự phân biệt thứ tự trước sau của các từ, mô hình cần cơ chế gắn thông tin vị trí vào từng token. Chuẩn phổ biến nhất hiện nay là RoPE (Rotary Position Embedding): xoay từng cặp chiều của vector Query và Key theo một góc tỷ lệ với vị trí của token, sao cho tích vô hướng giữa Query và Key tự động phản ánh khoảng cách tương đối giữa hai từ.
Trong các kiến trúc mới, kỹ sư tinh chỉnh RoPE theo ba hướng: Partial RoPE chỉ xoay một phần số chiều của đầu attention và giữ phần còn lại thuần túy mang nội dung (như trong MLA); NoPE bỏ hẳn RoPE ở một số lớp toàn cục để mô hình khái quát hóa tốt hơn trên chuỗi siêu dài (xen kẽ với các lớp cửa sổ trượt có RoPE); và YaRN điều chỉnh thang tần số góc quay để mở rộng độ dài ngữ cảnh của checkpoint vượt xa độ dài lúc pretrain.
Ví dụ đời thường: Mã hóa vị trí RoPE giống như việc đóng dấu kim đồng hồ lên từng tờ ghi chú trong một xấp tài liệu: khi đặt hai tờ ghi chú bất kỳ cạnh nhau, chỉ cần nhìn độ lệch góc giữa hai kim đồng hồ là bạn biết ngay tờ nào viết trước tờ nào bao nhiêu bước (khoảng cách tương đối), còn YaRN giống như việc chỉnh lại tỷ lệ mặt đồng hồ để đo được những cuốn nhật ký dài gấp nhiều lần.
2Luồng
- Đọc cấu hình từng layer
Ghi theta, rotary fraction và layer nào dùng NoPE.
- Đặt vị trí và mask
Phân biệt offset cache với index trong cửa sổ vật lý.
- Thử context dài
Kiểm tra retrieval và lỗi số học theo độ dài.
Mã Mermaid
flowchart TD
step1["Đọc cấu hình từng layer"]
step2["Đặt vị trí và mask"]
step3["Thử context dài"]
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
Không reset vị trí chỉ vì eviction cache. Prefix caching và chunked prefill phải giữ semantics vị trí của model.
Gemma 4 31B cấu hình global partial_rotary_factor=0.25, khác nhánh sliding dùng RoPE mặc định. SmolLM3 là ví dụ hybrid RoPE/NoPE; không lấy tỷ lệ của một model áp sang model khác.
Ghi rõ hệ số extension, chi phí prefill và quality curve khi dùng YaRN; setting max_position_embeddings chỉ là một phần bằng chứng.
4Profiling
- Độ dài × vị trí
Đặt thông tin cần tìm ở đầu/giữa/cuối, tăng chiều dài và đo exact retrieval/task score.
- Cache parity
So prefill một lần với chunked prefill/decode trên cùng position IDs.
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ụ
Partial RoPE giả định
Head 128 chiều với fraction 0.25 quay 32 chiều tức 16 cặp; 96 chiều còn lại không quay. Chưa đủ suy số KV heads hay context tối đa.
NoPE có causal mask
Token thứ năm chỉ đọc năm token đầu. Mask xác định tập hợp được đọc, nhưng không trực tiếp nói token thứ nhất cách nó bốn bước bằng một embedding vị trí.
6Thuật ngữ
- Partial rotary factor
- Tỷ lệ chiều head nhận RoPE; cần đọc riêng từng loại attention.
- Length generalization
- Khả năng giữ chất lượng ngoài độ dài quen thuộc, cần đánh giá theo vị trí.
Glossary (4)
- Prefix
- Phần đầu của một chuỗi token; cache reuse cần phần đầu tương thích.
- Cache
- Bộ nhớ giữ kết quả có thể dùng lại; trong attention thường giữ key/value vectors.
- Mask
- Quy tắc vị trí nào được nhìn nhau hoặc được tính vào loss.
- Context
- Chuỗi token trước vị trí hiện tại mà model được phép sử dụng.