DAPO & Dr-GRPO — Fix entropy collapse và variance trong RL dài
Giải mã hai bản vá của ByteDance cho GRPO: Clip-Higher chống entropy collapse, Dr-GRPO loại bỏ định thức độ dài, giúp train reasoning dài ổn định hơn.
Khi DeepSeek-R1 chứng minh GRPO có thể dạy LLM "suy nghĩ" mà không cần dữ liệu labeled, cộng đồng đã lao vào thử nghiệm — và nhanh chóng gặp phải ba vấn đề kinh điển: policy sụp đổ entropy sau vài chục bước, batch toàn câu đúng hoặc toàn câu sai gây lãng phí compute, và model "lười" suy luận dài vì bị phạt theo độ dài. DAPO và Dr-GRPO từ ByteDance Seed là hai bản vá chính xác cho những lỗi này, biến GRPO từ "chạy được" thành "chạy ổn định ở quy mô lớn".
Vấn đề
Vanilla GRPO (Group Relative Policy Optimization) lấy ý tưởng cốt lõi từ PPO nhưng bỏ Critic model, thay bằng cách so sánh nhóm response để tính advantage. Nghe thì hay, nhưng trên thực tế production, nó mắc ba chứng bệnh nghiêm trọng:
1. Entropy collapse nhanh chóng: Chỉ sau ~50 bước training, entropy của policy (độ ngẫu nhiên trong sampling) sụp đổ về gần zero. Model trở nên "bảo thủ", luôn chọn cùng một pattern suy luận, bỏ qua các lối tắt sáng tạo có thể tồn tại. Điều này xảy ra vì clipping đối xứng trong GRPO đặt "trần" cứng cho advantage, khiến gradient biến mất ngay khi policy vượt quá ngưỡng .
2. Zero-gradient batches: GRPO dựa vào variance trong nhóm để tính advantage. Nếu cả 8 response đều đúng (reward=1) hoặc đều sai (reward=0), advantage của tất cả bằng 0 — không có gradient để update. Trong thực tế, ~30-40% batch rơi vào trường hợp này sau khi model đạt độ chính xác nhất định, biến training thành việc đốt GPU để chạy forward vô ích.
3. Length-normalization bias: Công thức GRPO chia loss cho độ dài sequence . Điều này có nghĩa là một câu trả lời đúng dài 1000 token sẽ có gradient yếu hơn 10 lần so với câu trả lời đúng ngắn 100 token. Kết quả: model học cách "nói ít thôi" thay vì "suy nghĩ kỹ", phá hỏng chất lượng reasoning dài hạn (long CoT) mà chúng ta đang cần.
Ý tưởng cốt lõi
DAPO (Decoupled Advantage Policy Optimization) và Dr-GRPO (Debiased GRPO) giải quyết bằng ba thay đổi nghe có vẻ kỹ thuật nhưng thực chất là "nới tay" cho những behavior tốt và "siết chặt" với behavior xấu, đồng thời loại bỏ định thức phạt độ dài.
Clip-Higher: Asymmetric Clipping
Thay vì dùng một ngưỡng duy nhất (ví dụ 0.2) cho cả trên và dưới, DAPO tách thành và .
- Với token có advantage âm (xấu), ta vẫn clip chặt tại để ngăn nó phát triển.
- Với token có advantage dương (tốt), ta cho phép ratio policy lên tới , cao hơn nhiều so với chuẩn.
Điều này tạo ra "trần nhà cao hơn" cho những gì model đang làm đúng. Nếu một lối suy luận tốt được phát hiện, nó có thể được tăng cường mạnh mẽ hơn trước khi bị cắt gradient, tránh hiện tượng "vừa tìm ra cách hay đã bị bóp nghẹt".
Dynamic Sampling: Lọc bỏ "dễ quá" và "khó quá"
DAPO giới thiệu bộ lọc động: trước khi backward, kiểm tra nhóm response. Nếu tất cả đều đúng (all-correct) hoặc tất cả đều sai (all-wrong), batch bị loại bỏ ngay. Chỉ những nhóm có "phân hóa" — vừa có đúng vừa có sai — mới được giữ lại để tính gradient.
Đây là sự thừa nhận rằng: khi model đã giỏi đến mức trả lời đúng mọi lúc trên một prompt, prompt đó không còn giá trị huấn luyện nữa. Hãy tập trung compute vào "biên" năng lực nơi model còn phân vân.
Dr-GRPO: Bỏ định thức độ dài
Dr-GRPO loại bỏ hoàn toàn thừa số trong công thức loss. Thay vì tính trung bình per-token loss, nó dùng tổng hoặc các định thức khác không phụ thuộc tuyến tính vào độ dài.
Hệ quả trực tiếp: một chuỗi suy luận dài 2000 token đúng hoàn toàn không còn bị phạt so với câu trả lời ngắn 200 token. Model không còn động lực "cắt bớt" reasoning để tiết kiệm token, cho phép phát triển các chiến lược suy nghĩ phức tạp, đa bước cần thiết cho toán học và lập trình nâng cao.
Tại sao nó hoạt động
Toán học của Asymmetric Clipping:
Trong PPO/GRPO chuẩn, khi policy cải thiện, probability ratio tiến gần 1. Với clipping đối xứng , miền gradient hữu ích là . Khi vượt quá , gradient bị cắt về 0 — đây là "trần kính".
DAPO nâng trần lên cho hướng tích cực, tạo miền rộng hơn về phía trên. Điều này cho phép các token "tốt" tiếp tục được nâng cấp ngay cả khi chúng đã trở nên khá phổ biến, tránh sụp đổ entropy sớm. Về phía âm, việc giữ nhỏ đảm bảo các token xấu bị đè xuống nhanh chóng, duy trì sự phân biệt rõ ràng.
Hiệu quả của Dynamic Sampling:
GRPO dựa trên giả định rằng variance trong nhóm tạo ra signal. Nếu variance = 0 (all same reward), signal = 0. Trong thực tế, việc training trên các batch này không khác gì random walk. Bằng cách lọc chúng đi, DAPO đảm bảo mỗi bước gradient descent đều mang thông tin có ích, tăng sample efficiency lên ~40% theo báo cáo từ ByteDance.
Debiasing độ dài:
Công thức GRPO gốc có dạng:
Thừa số là nguồn gốc của length bias. Dr-GRPO thay bằng cách normalize theo batch hoặc bỏ hoàn toàn, giữ nguyên magnitude gradient cho dù câu trả lời dài hay ngắn. Điều này cực kỳ quan trọng cho reasoning dài (long CoT) nơi chain-of-thought có thể kéo dài hàng nghìn token.
Ý nghĩa thực tế
Impact thực tế: DAPO và Dr-GRPO cho phép huấn luyện các mô hình reasoning (như DeepSeek-R1) với context window dài (32K-128K) mà không gặp hiện tượng model "ngừng học" sau vài epoch. Điều này mở đường cho việc scale test-time compute — dùng RL để tạo ra các chuỗi suy luận dài, phức tạp, giống "System 2" thinking.
So sánh với baseline:
| Metric | Vanilla GRPO | DAPO | Dr-GRPO |
|---|---|---|---|
| Entropy collapse | ~50 steps | >500 steps | >500 steps |
| Zero-gradient rate | ~35% | < 5% | < 5% |
| Length bias | Có (phạt dài) | Có (phạt dài) | Không |
| Sample efficiency | Thấp | Cao | Cao |
Ai đang dùng: ByteDance Seed (tác giả DAPO), các nhóm nghiên cứu open-source đang áp dụng cho Qwen và Llama fine-tuning, đặc biệt trong các tác vụ math/code cần reasoning dài.
Các giới hạn:
- Vẫn yêu cầu reward verifiable (math, code, logic) — không giải quyết được creative writing.
- Hyperparameter cần tuning cẩn thận; quá cao có thể gây instability.
- Dynamic sampling yêu cầu batch size đủ lớn để có thể lọc bỏ mà vẫn còn đủ sample để train.
Đào sâu hơn
Paper gốc:
- DAPO: An Open-Source LLM Reinforcement Learning System at Scale (ByteDance Seed, 2025) — mô tả đầy đủ Clip-Higher và Dynamic Sampling.
- Unifying the GRPO Frameworks with Learnable Token Preferences (2025) — thống nhất các biến thể GRPO bao gồm Dr-GRPO qua trọng số tổng hợp .
Bài liên quan TroiSinh:
Cùng cụm (Reasoning & RL):
- GRPO — Nền tảng của DAPO: loại bỏ Critic model bằng so sánh nhóm.
- RLVR — Context rộng hơn về việc dùng reward xác minh được cho reasoning.
- Test-Time Compute Scaling — Tại sao cần train model suy nghĩ dài, và DAPO/Dr-GRPO giúp điều đó khả thi.
- Process Reward Models — Bổ sung cho GRPO khi cần thưởng từng bước thay vì chỉ kết quả cuối.
Đọc tiếp:
- DPO — So sánh với phương pháp alignment offline không cần RL loop.
- RLHF — Prerequisites về reinforcement learning cơ bản cho LLM.
Mở rộng:
- GRPO Tricks — Cameron R. Wolfe, phân tích thực nghiệm về các vấn đề của vanilla GRPO.
- From GRPO to DAPO and GSPO — HuggingFace blog, phân tích sự tiến hóa từ GRPO qua DAPO.
Reasoning Distillation — Model nhỏ 'học cách nghĩ' từ model lớn
Reasoning distillation truyền không chỉ đáp án mà cả quy trình suy luận từ model lớn sang model nhỏ, biến 7B thành 'cỗ máy tư duy' chỉ với 17k ví dụ.
RLVR — Reward từ kết quả verify được (math, code), không hack được
RLVR dùng verifier xác định (unit test, math checker) thay vì reward model học được, loại bỏ reward hacking và tạo nên DeepSeek-R1 chỉ với RL thuần túy