Ultralytics YOLO27: Đăng ký vào danh sách chờ.
Cấp phép YOLO
Quay lại Bảng thuật ngữ Ultralytics

Rotary Position Embedding (RoPE)

Embedding vị trí xoay (RoPE) xoay các vector truy vấn và khóa theo vị trí token để điểm attention phụ thuộc vào khoảng cách tương đối. Được sử dụng trong hầu hết LLM mở.

Mã hóa vị trí xoay (RoPE) cung cấp cho transformer thông tin về thứ tự token bằng cách xoay từng vector query và key một góc tỷ lệ thuận với vị trí của token. Bản thân self-attention không thể phân biệt thứ tự từ, vì vậy model phải đưa thông tin vị trí vào theo một cách nào đó; với RoPE, điểm attention giữa query ở vị trí m và key ở vị trí n chỉ phụ thuộc vào độ lệch m − n. Được giới thiệu năm 2021 cùng model RoFormer và phổ biến rộng rãi nhờ GPT-J và GPT-NeoX của EleutherAI, RoPE hiện là mã hóa vị trí tiêu chuẩn của các model ngôn ngữ lớn (LLM) mã nguồn mở, bao gồm Llama, Mistral, Qwen, Gemma và DeepSeek.

Cách RoPE hoạt động#

RoPE chia mỗi vector query và key có chiều d thành d/2 cặp đặc trưng, rồi xem mỗi cặp như một điểm trên mặt phẳng. Ở vị trí m, cặp i được xoay một góc m·θᵢ, với θᵢ = base^(−2i/d) và base bằng 10,000 trong bài báo gốc. Các cặp đầu xoay nhanh, giúp phân biệt thứ tự cục bộ tinh vi; các cặp cuối xoay chậm và vẫn phân biệt được các token cách nhau hàng nghìn vị trí. Xoay query một góc mθ và key một góc nθ khiến tích vô hướng của chúng chỉ phụ thuộc vào hiệu số (m − n)θ; phép xoay không bao giờ làm thay đổi độ dài vector. Phép xoay được áp dụng trong từng lớp attention, sau các phép chiếu query và key; vector value không bị xoay, và không có gì được cộng vào embedding token ở đầu vào:

Đoạn code dưới đây triển khai phép xoay bằng số phức, giống như code tham chiếu Llama của Meta, rồi kiểm tra tính chất vị trí tương đối:

import torch

torch.manual_seed(0)
dim = 64
freqs = 10000 ** (-torch.arange(0, dim, 2) / dim)  # one rotation frequency per pair of features


def rope(x, pos):
    """Rotate each consecutive feature pair of x by the angle pos * frequency."""
    pairs = torch.view_as_complex(x.reshape(-1, 2))
    return torch.view_as_real(pairs * torch.polar(torch.ones_like(freqs), pos * freqs)).flatten()


q, k = torch.randn(2, dim)
# The same query and key, three tokens apart, at two different places in the sequence
print(f"positions 5 and 2:     {rope(q, 5) @ rope(k, 2):.4f}")
print(f"positions 105 and 102: {rope(q, 105) @ rope(k, 102):.4f}")
print(f"positions 5 and 4:     {rope(q, 5) @ rope(k, 4):.4f}")  # one token apart
print(f"Vector length kept: {rope(q, 5).norm():.4f} vs {q.norm():.4f}")

Kết quả in ra là -8.2811 cho cả hai cặp cách nhau ba token, dù chúng nằm ở vị trí 5 và 2 hay 105 và 102; kết quả là -11.4563 khi cùng các vector đó cách nhau một token. Vector query sau khi xoay vẫn giữ độ dài 8.3705.

RoPE so với các mã hóa vị trí khác#

  • Mã hóa tuyệt đối hình sin: Transformer ban đầu cộng các vector sin và cos cố định vào embedding đầu vào đúng một lần, trước lớp đầu tiên. Khoảng cách tương đối phải được suy ra từ tín hiệu đã trộn vào.
  • Embedding tuyệt đối có thể học: BERT và GPT-2 học một vector cho mỗi vị trí, tối đa lần lượt 512 và 1,024 vị trí; chúng không có embedding cho vị trí vượt quá giới hạn đó.
  • Độ lệch vị trí tương đối: T5 và ALiBi thêm độ lệch theo khoảng cách có thể học hoặc cố định vào điểm attention. RoPE mã hóa khoảng cách tương đối thông qua chính phép xoay và không thêm tham số.

Mở rộng cửa sổ ngữ cảnh#

Model được huấn luyện với RoPE trên các chuỗi có độ dài L chưa từng thấy góc xoay của những vị trí vượt quá L, và attention suy giảm khi gặp các vị trí đó. Các phương pháp mở rộng ngữ cảnh điều chỉnh lại góc thay vì huấn luyện lại từ đầu. Position Interpolation nén các vị trí mới vào phạm vi đã huấn luyện, mở rộng model Llama lên cửa sổ ngữ cảnh 32,768 token chỉ trong 1,000 bước fine-tune. NTK-aware scaling và YaRN kéo giãn các cặp tần số thấp, xoay chậm nhiều hơn các cặp xoay nhanh; YaRN mở rộng Llama 2 lên 128K token với số token huấn luyện ít hơn 10 lần so với các phương pháp trước đó. Llama 3 tăng base từ 10,000 lên 500,000 trong quá trình tiền huấn luyện, khiến các cặp xoay chậm nhất quay ít hơn trên mỗi token và giữ được khả năng phân biệt các vị trí xa nhau.

RoPE trong model thị giác#

Ảnh cần hai tọa độ, vì vậy Vision Transformer sử dụng RoPE 2D, hay RoPE trục: một nửa số cặp đặc trưng trong mỗi head xoay theo cột của patch, nửa còn lại xoay theo hàng. Qwen2-VL bổ sung trục thời gian thứ ba cho video trong M-RoPE đa phương thức. SAM 2 của Meta, có trong gói Ultralytics, áp dụng RoPE trục trong bốn lớp memory attention, nơi đặc trưng của khung hình video hiện tại attention đến các đặc trưng đã lưu từ những khung hình trước. Key của mọi khung hình đã lưu nhận cùng một lưới góc như query của khung hình hiện tại, vì vậy attention giữa chúng phụ thuộc vào độ lệch không gian giữa các patch.

Explore solutions

Thị giác máy tính trong thể thao

Thị giác máy tính trong thể thao

Khám phá cách Ultralytics YOLO thúc đẩy thị giác máy tính trong thể thao với khả năng theo dõi cầu thủ và bóng, phân tích hiệu suất, cung cấp thông tin chuyên sâu cho huấn luyện và hỗ trợ phục hồi cho vận động viên.
Tìm hiểu thêm
Thị giác máy tính cho ảnh hàng không

Thị giác máy tính cho ảnh hàng không

Biến hình ảnh từ drone và ảnh hàng không thành thông tin chi tiết theo thời gian thực cho nông nghiệp, nuôi trồng thủy sản, giám sát môi trường, bảo tồn và phân tích không gian địa lý với Ultralytics YOLO.
Tìm hiểu thêm
Thị giác máy tính trong hàng không vũ trụ

Thị giác máy tính trong hàng không vũ trụ

Đưa AI thị giác vào hoạt động giám sát hàng không với các model Ultralytics YOLO. Thúc đẩy drone, quy trình hàng không vũ trụ, bảo tồn môi trường và các ngành không gian địa lý bằng giải pháp thị giác máy tính.
Tìm hiểu thêm
Computer vision trong lĩnh vực an ninh

Computer vision trong lĩnh vực an ninh

Bảo vệ mọi địa điểm bằng model Ultralytics YOLO. Vision AI hỗ trợ giám sát vành đai, phát hiện mối đe dọa, nhận dạng biển số và an toàn nơi làm việc.
Tìm hiểu thêm
Computer vision trong robotics

Computer vision trong robotics

Tăng cường năng lực cho máy móc thông minh bằng model Ultralytics YOLO. Vision AI trong lĩnh vực robotics hỗ trợ điều hướng tự động, nhận thức, theo dõi đối tượng và điều khiển theo thời gian thực.
Tìm hiểu thêm
Thị giác máy tính trong logistics

Thị giác máy tính trong logistics

Tinh giản hoạt động logistics với các model Ultralytics YOLO. Vision AI hỗ trợ kiểm tra kiện hàng, phân loại, theo dõi phương tiện và giám sát an toàn kho hàng theo thời gian thực.
Tìm hiểu thêm
Thị giác máy tính trong bán lẻ

Thị giác máy tính trong bán lẻ

Định hình lại hoạt động bán lẻ với các model Ultralytics YOLO. Vision AI hỗ trợ theo dõi hàng tồn kho, giám sát kệ hàng, quản lý hàng chờ và phân tích khách hàng thông minh hơn.
Tìm hiểu thêm
Thị giác máy tính trong chăm sóc sức khỏe

Thị giác máy tính trong chăm sóc sức khỏe

Xây dựng các giải pháp chăm sóc sức khỏe với model Ultralytics YOLO. Vision AI trong chăm sóc sức khỏe hỗ trợ xử lý hình ảnh y tế nhanh hơn, chẩn đoán thông minh hơn và theo dõi bệnh nhân.
Tìm hiểu thêm
Thị giác máy tính trong sản xuất

Thị giác máy tính trong sản xuất

Tối ưu hóa sản xuất bằng các model Ultralytics YOLO. Vision AI thúc đẩy kiểm soát chất lượng, phát hiện lỗi, tuân thủ PPE và tự động hóa dây chuyền lắp ráp.
Tìm hiểu thêm
Thị giác máy tính trong ngành ô tô

Thị giác máy tính trong ngành ô tô

Ứng dụng thị giác máy tính trong ngành ô tô với các model Ultralytics YOLO. Vision AI nâng cao an toàn giao thông, hỗ trợ người lái và tự động hóa phương tiện để tạo nên những tuyến đường thông minh hơn.
Tìm hiểu thêm
Thị giác máy tính trong nông nghiệp

Thị giác máy tính trong nông nghiệp

Ứng dụng AI thị giác vào nông nghiệp thông minh với các model Ultralytics YOLO. Hỗ trợ giám sát cây trồng, theo dõi vật nuôi và canh tác chính xác để nâng cao năng suất một cách thông minh hơn.
Tìm hiểu thêm

Hãy cùng nhau kiến tạo tương lai của AI!

Bắt đầu hành trình hướng đến tương lai của machine learning