OpenArchLabOpen Architecture — From Models to Systems

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).

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

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

Sơ đồ luồng (3 bước)
  1. Đọc cấu hình từng layer

    Ghi theta, rotary fraction và layer nào dùng NoPE.

  2. Đặt vị trí và mask

    Phân biệt offset cache với index trong cửa sổ vật lý.

  3. 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.

7Bài liên quan

8Nguồn