5.3 Medusa, EAGLE và MTP
Làm rõ Medusa dự đoán đa đầu, bản nháp cấp đặc trưng của EAGLE, cây động EAGLE-2, cải tiến huấn luyện EAGLE-3 và MTP gốc; hiểu Tree Attention, commit đường đi, và khác biệt nghiệm thu Token/Block
Draft độc lập giống thuê thêm một trợ lý: lương thấp, nhưng họ phải tự đọc lại cả bài, ghi sổ riêng mới viết được. Cách khác là để trợ lý dùng luôn hiểu biết biên tập viên đã có: trạng thái ẩn của Target chứa cách nó hiểu ngữ cảnh, gắn vài đầu nhỏ hoặc một mạng nhẹ lên các biểu diễn đó thường rẻ hơn chạy lại cả một mô hình từ Token.
Họ phương pháp này gọi chung Self-Draft. Mục này giới thiệu theo thứ tự xuất hiện: Medusa treo nhiều đầu dự đoán trên Target; dòng EAGLE huấn luyện một mạng nhỏ đọc đặc trưng Target; MTP là module dự đoán đa Token đã có sẵn lúc tiền huấn luyện. Tất cả cần trọng số huấn luyện riêng, và trọng số đó gắn với phiên bản Target cụ thể.
⏰ Độ mới của thông tin: kết luận paper theo từng bản arXiv; hỗ trợ vLLM dựa trên v0.32.0 (phát hành 2026-10-18); tham số SGLang theo tài liệu chính thức.
📑 Mục lục
- 1. Self-Draft: tái sử dụng gì, thêm gì
- 2. Medusa: một trạng thái ẩn, nhiều đầu dự đoán tương lai
- 3. Draft Tree và Tree Attention
- 4. EAGLE: bản nháp nhẹ từ đặc trưng
- 5. EAGLE-2: đổ ngân sách cây vào đường đi chắc hơn
- 6. EAGLE-3: đổi mục tiêu huấn luyện và tín hiệu đầu vào
- 7. MTP: module bản nháp đi kèm tiền huấn luyện
- 8. Thực hành: vì sao nút anh em không được nhìn nhau
- 9. Nghiệm thu và triển khai: tính theo cây không tự bảo đảm lossless
- Tóm tắt
- Checklist tự kiểm
- Tài liệu tham khảo
1. Self-Draft: tái sử dụng gì, thêm gì
| 📊 Hướng | Tái sử dụng gì của Target | Phần thêm | Cách có được |
|---|---|---|---|
| Draft độc lập | Chỉ chia sẻ lịch sử Token | Một mô hình nhỏ đầy đủ | Chọn mô hình cùng họ tương thích |
| Medusa | Trạng thái ẩn lớp cuối | Nhiều đầu dự đoán | Huấn luyện các đầu trên Target |
| EAGLE / EAGLE-2 | Đặc trưng tầng cao + Token | Mạng bản nháp khoảng một lớp | Huấn luyện theo Target |
| EAGLE-3 | Đặc trưng nhiều lớp thấp/giữa/cao + Token | Mạng bản nháp | Quy trình huấn luyện cải tiến |
| MTP | Chia sẻ Embedding và đầu ra | Module MTP huấn luyện cùng tiền huấn luyện | Phát hành kèm trọng số mô hình |
Các phương pháp này đều cải bước “ra bản nháp”; Target vẫn phải nghiệm thu. Trọng số, activation và cache của module phụ cũng phải tính vào ngân sách GPU memory.
🔑 Khái niệm cốt lõi: Tái sử dụng biểu diễn của Target để khỏi hiểu lại; giữ nghiệm thu của Target nên đầu ra cuối vẫn do nó quyết. Phân phối có được bảo toàn nghiêm ngặt hay không phụ thuộc quy tắc chấp nhận dùng (xem mục 9).
2. Medusa: một trạng thái ẩn, nhiều đầu dự đoán tương lai
2.1 Nhiều đầu đoán cùng lúc
LM Head thường map trạng thái ẩn hiện tại thành phân phối Token tiếp theo. Medusa treo thêm đầu nhỏ trên cùng ; đầu thứ dự đoán thẳng vị trí xa hơn :
Mỗi là FFN một lớp có residual. Mọi đầu đọc cùng , tính xong một lần — không phải chạy tuần tự nhiều bước như Draft độc lập.
Cái giá cũng rõ: khi đầu thứ 3 dự đoán, nó không biết vị trí 1 và 2 cuối cùng chọn gì. Đầu càng xa càng giống “đoán nhắm mắt”, độ chính xác giảm càng nhanh.
2.2 Nhiều ứng viên tạo thành một cây
Mỗi đầu chỉ lấy Top-1 thì sai một vị trí trước cả chuỗi đổ. Medusa để mỗi đầu giữ vài ứng viên, tổ chức các tổ hợp khả dĩ thành một cây, để Target nghiệm thu nhiều nhánh trong một lần.
Không thể bung hết mọi tổ hợp Top-k của mọi đầu: mỗi tầng nhánh, sâu tầng thì số nút cỡ . Cách Medusa là thống kê tỉ lệ trúng từng đường trên tập hiệu chỉnh, chỉ giữ những nút hứa hẹn nhất, thành một cây thưa.
2.3 Medusa-1 và Medusa-2
Paper đưa hai cách huấn luyện:
- Medusa-1: đóng băng backbone Target, chỉ huấn luyện đầu dự đoán. Target không đổi; kèm nghiệm thu chính xác có thể lossless.
- Medusa-2: huấn luyện backbone và đầu cùng lúc để biểu diễn hợp hơn với dự đoán Token xa.
Medusa-2 thực tế đã tạo ra một Target mới. Dù nghiệm thu chính xác, nó bảo đảm nhất quán với mô hình mới; đánh giá chất lượng phải đối chiếu mô hình gốc trước khi huấn luyện. Chỉ gắn trợ lý cho biên tập viên, và cùng huấn luyện lại thói quen viết của biên tập viên, là hai mức thay đổi khác nhau.
3. Draft Tree và Tree Attention
3.1 Mỗi đường trên cây là một lịch sử khác
Cùng một tiền tố có thể nối return hoặc raise; phần tiếp theo thuộc hai lịch sử loại trừ lẫn nhau. Tree Attention quy định: mỗi nút chỉ được thấy tiền tố chung và tổ tiên của chính nó.
Khi trải các nút cây thành mảng đưa vào Attention, không được dùng Mask tam giác dưới thường — nếu không nhánh B đứng sau sẽ thấy nhánh A, coi hai tiếp nối loại trừ như một đoạn văn liên tục.
Hình dưới vẽ Mask dạng cây trên cùng cây ở mục 8 (parents = [-1, 0, 0, 1, 2]). Vàng là nhánh return, xanh là nhánh raise; ô xanh đặc trong ma trận là nhìn thấy; gạch đỏ là vị trí Mask tam giác dưới sẽ thấy nhầm; cột phải nhất là Position ID đánh theo độ sâu:
3.2 Position ID đánh theo độ sâu
Nút anh em cùng tầng nằm ở cùng vị trí trong chuỗi; Position ID phải theo độ sâu cây, không tăng theo chỉ số mảng đã trải. Mask quyết định “nhìn được ai”; Position ID quyết định “mình ở vị trí thứ mấy”. Cả hai đều phải đúng.
Mọi nút chia sẻ KV của tiền tố; sau nghiệm thu chỉ commit một đường đã qua, KV tạm của nhánh khác toàn bộ hủy.
📌 Điểm then chốt: Tree Attention là mẹo batch để tính nhiều lịch sử ứng viên một lần. Nó bảo đảm tính của từng đường đúng; chọn đường nào là việc của quy tắc nghiệm thu.
4. EAGLE: bản nháp nhẹ từ đặc trưng
4.1 Vì sao làm bản nháp trên đặc trưng
Mô hình nhỏ độc lập phải chạy lại mạng từ Token — làm lại phần hiểu Target đã làm. Quan sát của EAGLE: đặc trưng tầng đỉnh ngay trước LM Head của Target (paper gọi second-to-top-layer feature) có quy luật hơn Token. Một mạng nhỏ “một lớp fully connected + một lớp Decoder” có thể tự hồi quy dự đoán đặc trưng tiếp theo từ đặc trưng hiện tại, rồi qua LM Head của Target thành ứng viên Token.
4.2 Chỉ nhìn đặc trưng chưa đủ — còn cần Token
Chuỗi đặc trưng không quyết định hết tương lai. Sampling chọn return hay raise thì đặc trưng bước sau đi hoàn toàn khác hướng. Vì vậy mạng bản nháp EAGLE nhận cùng lúc hai thứ: đặc trưng hiện tại, và Token tiếp theo đã sample (chuỗi Token sớm một bước). Thông tin Token xóa bất định “đi nhánh nào”.
Đầu ra mạng bản nháp vẫn giao Target nghiệm thu. Vì nó đọc đặc trưng Target, cấu trúc, hidden dim, vị trí lớp đặc trưng và Target dùng khi huấn luyện đều phải khớp.
⚠️ Lưu ý: Trọng số EAGLE gắn với phiên bản Target cụ thể. Hai mô hình 8B cùng cỡ, tên gần nhau không dùng chung một file trọng số EAGLE.
5. EAGLE-2: đổ ngân sách cây vào đường đi chắc hơn
5.1 Lãng phí của cây cố định
EAGLE và Medusa đều dùng cây tĩnh: mỗi vòng độ sâu và số nhánh cố định. Thực tế, có ngữ cảnh tiếp nối gần như xác định — hợp đoán sâu; có ngữ cảnh ngay đầu đã có vài cách viết — hợp trải rộng.
EAGLE-2 thấy độ tin cậy của mô hình bản nháp tương quan cao với tỉ lệ chấp nhận thực, nên mỗi vòng mở rộng và tỉa cây ứng viên theo độ tin cậy, để ngân sách nút hạn hẹp rơi vào chỗ dễ được chấp nhận nhất.
5.2 Nhìn cả đường, không chỉ nút hiện tại
Một nút tự có độ tin cậy 0.95, nhưng nút cha chỉ có xác suất 0.1 được chấp nhận, thì cơ hội nó được commit cũng nhỏ. Đường trên cây phải qua liên tục từ gốc, nên EAGLE-2 ước lượng giá trị nút bằng tích độ tin cậy trên đường:
trong đó là độ tin cậy của mô hình bản nháp với nút thứ trên đường. Giai đoạn mở rộng chọn vài nút cao nhất để mọc tiếp; giai đoạn sắp xếp lại chọn một loạt cao nhất trong mọi nút để đưa đi nghiệm thu.
5.3 Độ tin cậy chỉ dùng để phân ngân sách
“Độ tin cậy tương quan với tỉ lệ chấp nhận” là quan hệ kinh nghiệm đo trên mô hình và tác vụ của paper; đổi mô hình, nhiệt độ, tác vụ phải xác nhận lại. Ngoài ra chỉ quyết định nút nào được đưa đi nghiệm thu; bản thân nghiệm thu vẫn là quy tắc chuẩn ở mục 5.1 (nguyên lý cốt lõi speculative decoding). Độ tin cậy không tham gia quyết định chấp nhận hay không.
6. EAGLE-3: đổi mục tiêu huấn luyện và tín hiệu đầu vào
Tác giả EAGLE-3 thấy thêm dữ liệu huấn luyện cho EAGLE cải thiện rất hạn chế, vì ràng buộc “phải dự đoán được đặc trưng tiếp theo của Target” hạn chế mạng bản nháp. EAGLE-3 đổi ba chỗ:
- Bỏ loss dự đoán đặc trưng, chỉ dùng dự đoán Token làm mục tiêu huấn luyện, để mạng bản nháp tự học biểu diễn hữu ích cho dự đoán.
- Gộp đặc trưng nhiều lớp: nối đặc trưng lớp thấp, giữa, cao của Target rồi đưa vào, không còn chỉ dựa lớp cuối.
- Training-time Test (TTT): lúc suy luận, từ bước hai trở đi mạng bản nháp đọc đầu ra bước trước của chính nó, không phải đặc trưng thật của Target. Huấn luyện mô phỏng quá trình đó để mạng quen tiếp tục trên kết quả trung gian của mình.
“Test” ở đây nghĩa là mô phỏng bản nháp nhiều bước của giai đoạn suy luận trong lúc huấn luyện — không liên quan tập đánh giá hay huấn luyện lại khi triển khai.
Ví dụ: EAGLE bắt trợ lý trước chép phác thảo trong đầu biên tập viên rồi mới viết; EAGLE-3 chỉ yêu cầu viết đúng chữ biên tập viên sẽ viết, và lúc huấn luyện đã luyện “viết tiếp từ những gì mình vừa viết”.
7. MTP: module bản nháp đi kèm tiền huấn luyện
7.1 Từ mục tiêu huấn luyện thành tăng tốc suy luận
Các phương pháp trước đều là “mô hình huấn luyện xong rồi mới gắn module bản nháp”. Multi-Token Prediction (MTP) đảo thứ tự: lúc tiền huấn luyện đã bắt mô hình dự đoán thêm vài Token tương lai; mục tiêu phụ đó giúp học biểu diễn tốt hơn; lúc suy luận, module MTP đã huấn luyện đúng dùng làm bản nháp.
DeepSeek-V3 là đại diện. Module MTP của nó khác “đầu nhỏ song song” của Medusa ở một điểm then chốt: dự đoán theo thứ tự, giữ chuỗi nhân quả. Module thứ đọc biểu diễn độ sâu trước và Embedding của Token thứ , mỗi cái RMSNorm rồi nối, qua ma trận chiếu nén về dim gốc, qua một Transformer Block, cuối cùng dùng đầu ra chia sẻ với mô hình chính để dự đoán Token thứ :
Embedding và đầu ra đều chia sẻ với mô hình chính, nên module MTP nhẹ so với mô hình chính. Cấu trúc gần như khớp ý “đặc trưng + Token” của EAGLE; khác ở chỗ nó tiền huấn luyện cùng mô hình chính, không huấn luyện riêng sau.
7.2 Hiệu quả thực tế
DeepSeek-V3 lúc huấn luyện chỉ dự đoán thêm một Token (độ sâu ). Paper báo cáo lúc suy luận dùng module MTP để speculative, tỉ lệ chấp nhận Token thứ hai khoảng 85%–90%, tốc độ decode (TPS) đạt 1.8 lần ban đầu. Đó là số của mô hình và điều kiện triển khai đó; đổi mô hình hoặc tải phải đo lại.
📌 Điểm then chốt: Ưu thế MTP là không phải huấn luyện bản nháp riêng. Trọng số huấn luyện và phát hành cùng mô hình; dùng trọng số chính thức không lo lệch phiên bản. Nếu tự fine-tune hoặc lượng hóa mô hình chính, module MTP không tự thích ứng — phải đo lại tỉ lệ chấp nhận. Tiền đề: mô hình phải có sẵn module MTP; không có thì không dùng được.
7.3 Hình thái trong vLLM
vLLM v0.32.0 thống nhất bật họ này bằng "method": "mtp"; tên riêng theo mô hình như deepseek_mtp, qwen3_5_mtp đã deprecated và tự viết lại thành mtp. Ví dụ tài liệu gồm XiaomiMiMo/MiMo-7B-Base, và Gemma 4 kèm checkpoint assistant chính thức (lớp assistant chia sẻ KV Cache với Target). Khuyến nghị chính thức bắt đầu tinh chỉnh từ num_speculative_tokens: 1.
7.4 Khám phá xa hơn: một lần forward ra cả khối bản nháp
EAGLE và MTP vẫn sinh bản nháp từng Token; bản nháp càng dài càng chậm. DFlash đổi mô hình bản nháp thành một mô hình Block Diffusion nhỏ có điều kiện trên đặc trưng Target, một lần forward sinh cả một khối ứng viên. Tác giả báo cáo tăng tốc lossless trên 6 lần ở nhiều mô hình và tác vụ, cao nhất nhanh hơn EAGLE-3 thêm 2.5 lần. vLLM v0.32.0 đã có "method": "dflash", nhưng đây là công trình 2026 — kết luận còn cần thêm tái hiện độc lập.
8. Thực hành: vì sao nút anh em không được nhìn nhau
Code dưới chỉ dựng Mask dạng cây và Position ID — không tính Attention. Nút 0 là gốc; 1 và 2 là anh em; 3 treo dưới 1; 4 dưới 2. Tiền tố chung không nằm trong ma trận nhỏ này.
parents = [-1, 0, 0, 1, 2]
n = len(parents)
mask = [[0] * n for _ in range(n)]
depth = [0] * n
for node, parent in enumerate(parents):
assert parent < node, "yêu cầu nút cha xếp trước nút con"
depth[node] = 0 if parent == -1 else depth[parent] + 1
cursor = node
while cursor != -1: # đi lên chuỗi tổ tiên; đánh dấu nhìn thấy
mask[node][cursor] = 1
cursor = parents[cursor]
causal = [[1 if j <= i else 0 for j in range(n)] for i in range(n)]
print("Position ID tương đối:", depth)
for i, (tree_row, causal_row) in enumerate(zip(mask, causal)):
leaked = [j for j in range(n) if causal_row[j] and not tree_row[j]]
print(f"nút {i}: Mask cây {tree_row} tam giác dưới sẽ thấy thêm {leaked}")
assert mask[4] == [1, 0, 1, 0, 1]
assert depth[1] == depth[2] == 1
Nút 4 xếp cuối mảng; Mask tam giác dưới sẽ thấy nút 1 và 3 thuộc nhánh kia. Kết quả in liệt kê từng nút “thấy thêm những nút nào”.
Hiện thực thật còn phải xử lý tiền tố chung, bảng khối KV phân trang, biên cây của từng request trong Batch, và Attention Kernel hỗ trợ Mask thưa kiểu này. Ví dụ chỉ minh họa ràng buộc luồng dữ liệu.
9. Nghiệm thu và triển khai: tính theo cây không tự bảo đảm lossless
9.1 Typical Acceptance của Medusa
Ngoài rejection sampling chính xác, Medusa còn đề xuất Typical Acceptance: miễn xác suất ứng viên dưới phân phối Target vượt một ngưỡng liên quan entropy thì coi là “đủ hợp lý” và chấp nhận. Cách này chấp nhận dài hơn và trong đánh giá của paper chất lượng sinh gần như giữ; nhưng nó không thỏa chứng minh bảo toàn phân phối ở mục 5.1 — thuộc phương án xấp xỉ.
Báo cáo đánh giá phải tách rõ các trường hợp: đóng băng backbone hay huấn luyện chung; khớp tham lam, sampling ngẫu nhiên chính xác hay Typical Acceptance. Chỉ viết “dùng Medusa” không trả lời được đầu ra có bảo đảm chất lượng gì.
9.2 Ba việc dễ lẫn
- Forward song song: một lần gọi Target tính nhiều vị trí hoặc nhiều nút cây — tối ưu tầng tính toán.
- Nghiệm thu cấp Token: ứng viên kiểm từ trái sang phải theo quy tắc; gặp từ chối đầu tiên thì dừng — quy tắc chuẩn ở mục 5.1 (nguyên lý cốt lõi speculative decoding).
- Block Verification: đặt cả khối ứng viên rồi quyết định chấp nhận bao nhiêu, sửa thế nào — một thuật toán sampling khác.
Block Verification chứng minh dưới điều kiện bảo toàn phân phối, độ dài commit kỳ vọng của nghiệm thu liên hợp không thấp hơn nghiệm thu từng Token. Nó cần quy tắc xác suất đi kèm; không đồng nghĩa với “nhét vài Token vào cùng một Tensor”. vLLM v0.32.0 cung cấp qua "rejection_sample_method": "block", hiện chỉ có trong sampler của V2 Model Runner.
9.3 Cấu trúc paper và hiện thực framework phải kiểm riêng
Tên method trong framework là quy ước load và chạy; chưa chắc tái hiện hết cấu trúc trong paper. Lấy cây làm ví dụ:
- vLLM v0.32.0:
eagle,eagle3,mtpđều ra bản nháp theo chuỗi tuyến tính, không có nghiệm thu dạng cây. - SGLang: họ EAGLE dựng cây bản nháp khi
--speculative-eagle-topk> 1, kèm--speculative-num-steps(số bước bản nháp) và--speculative-num-draft-tokens(số nút cuối cùng đưa đi nghiệm thu) để khống chế ngân sách. V2 Overlap Scheduler bật mặc định chỉ hỗ trợtopk=1; muốn dùng cây phải chỉnh tường minh.
Triển khai kiểm từng mục: revision của Target, nguồn trọng số phụ, quy ước lớp đặc trưng, từ vựng, dtype, cách lượng hóa và backend thực sự chạy. Càng nhiều nút cây, tính nghiệm thu và KV tạm càng nhiều; ngân sách nút nên lấy theo đường cong hiệu năng đo được.
📝 Tóm tắt
- Self-Draft tái sử dụng biểu diễn Target để ra bản nháp rẻ, nhưng module phụ đều cần huấn luyện riêng và gắn phiên bản Target.
- Medusa dùng nhiều đầu song song dự đoán nhiều vị trí tương lai một lần; càng xa càng kém chính xác. Sau Medusa-2 huấn luyện chung, chuẩn đối chiếu chất lượng phải là mô hình gốc.
- Tree Attention chỉ cho nút thấy tiền tố chung và tổ tiên; Position ID theo độ sâu; cuối cùng chỉ commit một đường.
- EAGLE làm bản nháp bằng “đặc trưng + Token sớm một bước”; EAGLE-2 phân ngân sách cây động theo tích độ tin cậy đường đi.
- EAGLE-3 bỏ loss đặc trưng, gộp đặc trưng nhiều lớp, và dùng Training-time Test để huấn luyện sát suy luận nhiều bước.
- MTP mang sẵn module dự đoán tuần tự từ tiền huấn luyện, lúc suy luận dùng luôn làm bản nháp; DeepSeek-V3 báo cáo tỉ lệ chấp nhận Token thứ hai 85%–90%.
- Typical Acceptance là phương án xấp xỉ; Block Verification bảo toàn phân phối với độ dài chấp nhận kỳ vọng ≥ nghiệm thu từng Token; vLLM và SGLang hỗ trợ cây khác nhau.
🎯 Checklist tự kiểm
- Nói được khác biệt và cái giá giữa tái sử dụng biểu diễn Target và dùng mô hình nhỏ độc lập
- Giải thích Medusa đa đầu vì sao song song được, lại vì sao càng xa càng kém
- Phân biệt cách huấn luyện Medusa-1 / Medusa-2 và chuẩn đối chiếu chất lượng
- Viết đúng Tree Attention Mask và Position ID cho một cây nhỏ
- Giải thích EAGLE vì sao cần thông tin Token, và trọng số EAGLE vì sao không tái sử dụng qua Target
- Nói được EAGLE-2 vì sao dùng tích độ tin cậy đường đi chứ không phải độ tin cậy từng nút
- Liệt kê ba thay đổi chính của EAGLE-3 so với EAGLE
- So sánh cấu trúc module MTP của DeepSeek-V3 với đầu dự đoán Medusa
- Phân biệt forward song song, nghiệm thu cấp Token và Block Verification, và chỉ ra Typical Acceptance không bảo toàn phân phối
📚 Tài liệu tham khảo
- Medusa: Simple LLM Inference Acceleration Framework with Multiple Decoding Heads (Cai et al., 2024)
- FasterDecoding — hiện thực chính thức Medusa
- EAGLE: Speculative Sampling Requires Rethinking Feature Uncertainty (Li et al., 2024)
- EAGLE-2: Faster Inference of Language Models with Dynamic Draft Trees (Li et al., 2024)
- EAGLE-3: Scaling up Inference Acceleration of Large Language Models via Training-Time Test (Li et al., 2025)
- SafeAILab — hiện thực chính thức EAGLE
- DeepSeek-V3 Technical Report (DeepSeek-AI, 2024)
- DFlash: Block Diffusion for Flash Speculative Decoding (Chen et al., 2026)
- Block Verification Accelerates Speculative Decoding (Sun et al., 2024)
- vLLM — EAGLE Draft Models
- vLLM — Multi-Token Prediction (MTP)
- SGLang — Speculative Decoding