NeMo RL 0.6 — mổ xẻ con số 1.8×

NVIDIA tích hợp speculative decoding vào vòng lặp RL training. Bóc tách xem builder thật sự được gì, và cái gì chỉ đẹp trên slide.

Thứ đang diễn ra

65–72%. Đó là phần trăm thời gian mỗi training step mà GPU cluster đang đứng chờ — không phải chờ data, không phải chờ gradient — mà chờ rollout generation, tức quá trình model tự sinh output để vòng RL đánh giá và học từ đó.

NVIDIA vừa ship NeMo RL v0.6.0 với một tính năng đáng chú ý: speculative decoding (kỹ thuật dùng model nhỏ đề xuất token trước, model lớn kiểm duyệt sau) được nhét thẳng vào vòng lặp RL training. Headline: tăng tốc rollout 1.8× trên Qwen3-8B, dự kiến 2.5× end-to-end ở quy mô 235B.

Nhưng "dự kiến" và "đo được" là hai thứ khác nhau. Mình bóc ra xem phần nào thật, phần nào vẫn còn trên giấy.

Mổ xẻ: rollout là nút thắt — nhưng mấy ai profile?

Mỗi bước RL training đồng bộ trong NeMo RL đi qua 5 giai đoạn: load data → đồng bộ weight (prepare) → sinh rollout (gen) → tính lại log-probability (logprob) → cập nhật policy (train).

NVIDIA đo trên hai workload — RL-Think (tiếp tục train model đã biết reasoning) và RL-Zero (dạy reasoning từ đầu cho base model). Kết quả nhất quán: rollout generation ngốn 65–72% tổng thời gian step. Logprob cộng train gộp lại chỉ chiếm khoảng 27–33%.

Nếu bạn đang dồn sức tối ưu phần backward pass hay logprob recomputation, bạn đang luyện đấm trong khi trận thật diễn ra ở footwork — chỗ bạn chậm nhất mà không biết.

Speculative decoding xử lý đúng điểm này. Một draft model nhỏ hơn đề xuất nhiều token cùng lúc, target model (model đang được train) kiểm tra bằng rejection sampling — thuật toán lấy mẫu có điều kiện đảm bảo phân phối output không đổi. RL reward signal vẫn chính xác, policy gradient vẫn đúng. Không đánh đổi chất lượng training để mua tốc độ.

Điều đáng giữ lại

1. Lossless — không phải "gần đúng"

Nhiều kỹ thuật tăng tốc khác (quantization, early stopping) buộc bạn chấp nhận sai số. Ở đây, rejection sampling giữ distribution giống hệt target model. Với RL training, đây là chuyện sống còn: rollout distribution bị lệch một chút, reward signal dạy model trệch hướng tích lũy qua hàng nghìn step.

2. Đã ship — không phải paper xếp ngăn kéo

NeMo RL v0.6.0 hỗ trợ speculative decoding qua vLLM backend. Release cùng đợt còn có SGLang backend, Muon optimizer, và YaRN long-context training. Nếu team đang dùng NeMo RL, đây là config flag chứ không phải research prototype cần tự cài đặt.

3. Con số 1.8× có context

1.8× rollout speedup đo thực tế trên Qwen3-8B. Con số 2.5× end-to-end ở 235B là projection — ước lượng dựa trên tỷ lệ rollout/tổng thời gian tăng theo model size. Chưa có benchmark thực chạy ở scale đó trong release này. Phân biệt được hai loại con số này là kỹ năng đọc paper cơ bản mà nhiều team bỏ qua.

Kịch bản thực tế: Giả sử team bạn 4–5 người đang train model 8B bằng GRPO (Group Relative Policy Optimization — biến thể RL reward gom nhóm output để so sánh) cho task code generation. Mỗi run mất 3 ngày trên cluster 8×A100. Rollout chiếm 70% thời gian — tức khoảng 2.1 ngày chỉ để sinh output. Cắt 1.8× ở giai đoạn đó, tổng run rút xuống còn tầm 2 ngày. Một ngày GPU tiết kiệm — đó là tiền cloud thật, không phải metric trên dashboard.

Điều nên bỏ qua

Hiểu lầm cần sửa: "Speculative decoding = tăng tốc inference cho end-user." Đúng ở ngữ cảnh serving, nhưng không phải chuyện ở đây. Paper này nói về speculative decoding bên trong training loop — tăng tốc phần model tự generate rollout để RL có data mà học. Hai use case khác hẳn về infra và config.

Bẫy acceptance rate: Speculative decoding cần draft model đủ khớp với target. Nếu draft model quá yếu, acceptance rate (tỷ lệ token được target model chấp nhận) thấp, overhead verification nuốt hết lợi ích. Giống đối luyện trong dojo: sparring partner phải đủ trình để đẩy bạn tiến — mismatch quá lớn thì cả hai mất thời gian.

Bẫy mua hardware trước khi profile: Một số team nhìn thấy bottleneck là generation thì nghĩ ngay tới Blackwell, HBM3e. Nhưng NeMo RL 0.6 chạy trên Hopper (A100/H100) với vLLM — bạn lấy 1.8× bằng software optimization, không cần upgrade cluster. Profile trước, mua sau.

Thử ngay nếu đang chạy RL post-training

  1. Upgrade NeMo RL lên v0.6.0 (open-source trên GitHub)
  2. Chọn draft model — ví dụ Qwen3-1.5B làm draft cho Qwen3-8B target
  3. Bật speculative decoding trong generation config, chỉ định draft model path
  4. Benchmark: đo thời gian rollout stage trước/sau trên cùng batch size
  5. Kiểm tra acceptance rate — nếu dưới 60%, thử draft model lớn hơn hoặc fine-tune draft trên cùng domain

Nếu chưa dùng NeMo RL: tín hiệu ở đây là speculative decoding đang trở thành commodity feature trong RL training stack. vLLM và SGLang đều đã support ở inference layer — giờ nó leo lên training layer. Đây sẽ là mặc định, không phải ngoại lệ.

Một dòng đúc kết

Con số 1.8× hay 2.5× không phải thứ quan trọng nhất tuần này. Thứ quan trọng: nếu bạn đang train RL mà chưa từng profile xem bottleneck nằm ở stage nào — bạn đang tung đòn mà không biết mình đứng ở tư thế nào. Profiling trước, optimize sau, mua GPU cuối cùng.

---

Bụi Wire — nghiện đọc release notes lúc 2 giờ sáng

Nguồn tham khảo