3A · 3D Axial RoPE (16, 56, 56)
3A · 3D Axial RoPE (16, 56, 56) & Lưới tọa độ tâm không (Zero-Centered Grid)
RoPE 3D chia 128 chiều mỗi đầu thành ba dải 16, 56, 56 cho frame, height, width; token chữ đi thẳng cả ba trục còn token ảnh dùng lưới tâm (0, 0) để vị trí không trôi theo độ dài prompt.
1Định nghĩa
Bài 3A là khối gắn địa chỉ cho attention: RoPE (Rotary Position Embedding) gắn vị trí bằng phép xoay hoặc hãy nói thay vì cộng một vector vị trí cộng thêm, attention xoay cặp chiều của Q và K theo góc tỷ lệ với vị trí; do tích của hai vector xoay chỉ phụ thuộc chênh lệch góc, attention đọc được khoảng cách tương đối giữa hai token. DiT 2.1 cần vị trí không gian nên dùng QwenImage21Rope với ba trục đi sẵn: cắt 128 chiều của mỗi đầu (attention_head_dim = 128) thành ba dải (16, 56, 56) — axes_dims_rope — tương ứng frame, height, width.
Về cơ chế, hai kiểu địa chỉ cùng tồn tại trong một chuỗi: token chữ tăng đều cả ba trục — meaning đi trong hành lang như leo thang, mỗi bước cộng đồng dề +1 cho từng trục; token ảnh, nhận diện bằng image_ids từ bài 2A, tuân theo lưới 3D: frame_index đứng yên trên toàn khối ảnh (một ảnh một 'tầng'), hai trục space đánh số quanh tâm (0, 0): height_index chạy từ −(H − H//2) đến H//2 − 1, width_index tương tự với W — ví dụ H = 4 cho bốn giá trị (−2, −1, 0, 1). Lý do chọn tâm: nếu đánh số ảnh từ đầu lưới như chữ, tọa độ token ảnh sẽ trôi theo độ dài phần chữ đứng trước; lưới tâm giữ tọa độ trong khối ảnh phụ thuộc nội dung ảnh chứ không phụ thuộc vị trí trong chuỗi. Kết quả được áp vào phép xoay của bài 4A và phối hợp với bài 3C cùng khối.
Ví dụ đời thường: 3A giống toà khách sạn có ba loại tọa độ: số tầng (frame), hàng phòng (height) và cột phòng (width). Khu chữ là hành lang chạy suốt toà: mỗi bước treo biển leo một tầng và dịch một ô cả ba chiều; khu ảnh là từng phòng riêng — dù phòng nằm ở tầng nào, mọi vật trong phòng vẫn đánh tọa độ quanh tâm phòng, chẳng hạn hàng từ −2 đến 1. Nhờ đó, độ dài bài thuyết trình trước phòng (độ dài prompt) không làm ghế trong phòng xê dịch. Giới hạn của phép so: RoPE chỉ gắn vị trí chứ không gắn nội dung; nội dung nằm trong token 4096 chiều.
2Luồng
Cách đọc hình (Cột 2, khối 3A trên đỉnh cột): nhận chuỗi đồng nhất cùng metadata image_ids từ khối 2A, chia 128 chiều mỗi đầu thành ba dải (16, 56, 56), gán token chữ đi thẳng ba trục còn token ảnh dùng lưới tâm (0, 0); bảng tọa độ chảy xuống cùng Cột 2 cho khối 3B (mức nhiễu) và khối 3C (mặt nạ), hoặc trực tiếp tới attention ở Cột 3; xem bước [3A] trong [Bài Lab tổng hợp Qwen-Image-2.1](/courses/qwen-image-2-1/qwen21-lab/qwen21-end-to-end-lab/).
- 3A · Chia 128 chiều ba dải
Dải 16 cho frame, 56 cho height, 56 cho width; tổng đúng bằng attention_head_dim = 128.
- 3A · Chữ đi thẳng, ảnh về tâm
Token chữ tăng đều cả ba trục; trong từng khối ảnh, frame đứng yên và height, width đánh số quanh (0, 0).
- 3A · Áp vào attention
Bảng tọa độ ba trục được áp vào phép xoay Q và K của từng đầu trong bài 4A.
Mã Mermaid
flowchart TD
step1["3A · Chia 128 chiều ba dải"]
step2["3A · Chữ đi thẳng, ảnh về tâm"]
step3["3A · Áp vào attention"]
step1 --> step2
step2 --> step3 3Giải pháp
Bài toán cần giải: attention cần biết hàng và cột để ghép các mảnh ảnh đúng mối quan hệ không gian, mà vẫn không phá vỡ nhân quả theo thứ tự chuỗi. Sau bài này, bạn cần tự kể được: ba trục chứa gì, vì sao chữ tăng cả ba trục, và vì sao ảnh dùng lưới tâm.
Trạng thái đầu vào: chuỗi đồng nhất cùng metadata image_ids từ bài 2A để xác định ranh giới từng khối ảnh. RoPE không học trọng số: bảng tọa độ dựng từ chỉ số vị trí.
Các thao tác và lý do: (1) chia 128 chiều thành ba dải 16 + 56 + 56, mỗi dải xoay theo một trục riêng; (2) đặt token chữ đi thẳng cả ba trục để phần chữ vẫn giữ được thứ tự phẳng như một dòng; (3) đặt token ảnh dùng lưới tâm không (0, 0) cho height và width, frame đứng trên toàn khối — nhờ đó cụm token của một ảnh luôn giữ cấu trúc hình học như nhau.
Đầu ra và cách đọc: bảng tọa độ ba trục cho từng token (frame, height, width) được áp vào attention ở bài 4A. Khi đọc bước 3A của lab, hãy so tọa độ của hai token ảnh nằm cùng hàng để thấy chênh lệch width nhưng height như nhau, bất kể độ dài prompt.
Giới hạn: tổng ba dải phải đúng 128; đổi cấu hình (số đầu hoặc chiều đầu khác) sẽ lệch phép xoay; khóa frame_index trong khối ảnh nghĩa là RoPE không phân biệt ảnh này với ảnh khác bằng chính trục frame — nhiệm vụ đó thuộc về thứ tự chuỗi và mặt nạ ở bài 3C.
4Profiling
- Quan sát tọa độ ba trục
Bước 3A của lab in bảng tọa độ cho vài token chữ và vài token ảnh: token chữ tăng đều cả ba trục; trong khối ảnh, height và width phải quanh (0, 0) và frame đứng yên trên khối. So với bảng quy tắc ở phần Định nghĩa.
- Lưới tâm độc lập với độ dài prompt
Chạy cùng một ảnh đích với hai prompt khác độ dài (ví dụ 10 và 30 token chữ) trong bước 3A của lab: tọa độ của các token trong khối ảnh phải giống nhau. Không kết luận chất lượng ảnh từ thí nghiệm này — nó chỉ chứng minh tính bình ổn vị trí, không hơn.
- Kiểm tra tổng dải chiều
16 + 56 + 56 = 128 phải bằng attention_head_dim; nếu cấu hình khác (ví dụ thay attention_head_dim), phép xoay không vắt hết chiều và vế attention sẽ sai shape trước khi chạy chi tiết hơn; so lại cấu hình với model card trước khi đi sâu hơn.
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ụ
Đánh số lưới tâm với H = 4
Input: một khối ảnh cao H = 4 ô. Hãy dự đoán danh sách height_index theo công thức lưới tâm. Kết quả: từ −(4 − 2) đến 2 − 1, tức −2, −1, 0, 1 — đúng 4 giá trị cho 4 hàng. Cách quan sát: bước 3A của [Bài Lab tổng hợp Qwen-Image-2.1](/courses/qwen-image-2-1/qwen21-lab/qwen21-end-to-end-lab/) in bảng tọa độ của khối ảnh; đối chiếu width_index với W tương tự. Tự kiểm tra: với H = 5, danh sách là −3, −2, −1, 0, 1 vì H//2 = 2 và −(5 − 2) = −3.
Chữ đi đều ba trục
Input: dãy 6 token chữ đứng đầu chuỗi. Hãy dự đoán tọa độ của token thứ 2 so với token thứ 1 trên từng trục, từ RoPE. Kết quả kỳ vọng: chênh lệch +1 trên cả frame, height và width — nói cách khác, token chữ leo đều cả ba chiều như cùng một thang máy. Cách quan sát: bước 3A của lab in tọa độ từng token; để đo vị trí tương đối, lấy chênh lệch hai dòng. Giới hạn: RoPE chỉ đảm bảo khoảng cách; giá trị tuyệt đối xuất phát của dải chữ không ảnh hưởng attention trong phạm vi chuỗi hiện tại.
6Thuật ngữ
- RoPE (Rotary Position Embedding)
- Gắn vị trí bằng phép xoay: cặp chiều của Q và K xoay theo góc tỷ lệ vị trí, giúp attention đo khoảng cách tương đối.
- axes_dims_rope (16, 56, 56)
- Cắt 128 chiều của mỗi đầu thành ba dải: 16 cho trục frame, 56 cho height, 56 cho width.
- frame_index
- Chỉ số trục 'cảnh hoặc ảnh'; trong một khối ảnh nó bị chặn đứng, không tăng theo từng token.
- Lưới tâm (0, 0)
- Cách đánh số hai trục không gian của ảnh quanh tâm: height từ −(H − H//2) đến H//2 − 1, width tương tự.
- QwenImage21Rope
- Lớp dựng bảng tọa độ ba trục cho từng token dựa trên metadata của chuỗi.
Glossary (4)
- Trục frame
- Trục phân biệt các khối ảnh hoặc cảnh; giữ vai trò gần như trục thời gian 3D.
- Hàng và cột ảnh
- Hai trục height và width cho biết ô latent nằm hàng nào, cột nào trong lưới ảnh.
- Vị trí tương đối
- Tính chất của RoPE: attention chỉ cảm nhận chênh lệch giữa hai vị trí, không quan tâm giá trị bắt đầu.
- Row-major
- Thứ tự đọc lưới theo hàng: trái qua phải hết một hàng mới sang hàng dưới.
