NOW LET US
NOW LET US
Digital Product Studio
Quay lại trang tin
DEV-TOOLS10 tháng 3, 20265 phút đọc

Giữ dòng chảy token liên tục: Bài học từ 16 thư viện Học Tăng cường mã nguồn mở

Giữ dòng chảy token liên tục: Bài học từ 16 thư viện Học Tăng cường mã nguồn mở

Trong huấn luyện Học Tăng cường (RL) đồng bộ, quá trình tạo dữ liệu tốn nhiều thời gian khiến các GPU huấn luyện phải chờ đợi, gây lãng phí tài nguyên. Giải pháp được đồng thuận là kiến trúc bất đồng bộ, tách biệt hai quá trình suy luận và huấn luyện để tối đa hóa hiệu suất và giữ cho các GPU luôn hoạt động.

Vấn đề: Nút thắt cổ chai trong huấn luyện Học Tăng cường

Trong lĩnh vực huấn luyện các mô hình ngôn ngữ lớn, Học Tăng cường (Reinforcement Learning - RL) đã trở thành một phương pháp chủ đạo. Tuy nhiên, quy trình huấn luyện RL đồng bộ truyền thống đang gặp phải một vấn đề nghiêm trọng về hiệu suất: thời gian tạo dữ liệu (suy luận mô hình để tạo mẫu) chiếm phần lớn thời gian thực thi. Chẳng hạn, việc tạo một lô dữ liệu (rollout) chỉ 32K token trên một mô hình 32 tỷ tham số có thể mất hàng giờ, và trong suốt thời gian đó, các GPU dành cho việc huấn luyện lại hoàn toàn nhàn rỗi.

Sự lãng phí tài nguyên này càng trở nên trầm trọng hơn với các xu hướng hiện đại:

  • Các mô hình suy luận chuỗi dài (Chain-of-thought): Các mô hình này tạo ra các lượt tạo dữ liệu rất dài, khiến thời gian chờ đợi càng kéo dài.
  • Các thuật toán không dùng hàm giá trị (Value-function-free): Các thuật toán như GRPO yêu cầu tạo ra số lượng lượt tạo dữ liệu lớn hơn nhiều lần cho mỗi câu lệnh (prompt), và cả lô dữ liệu bị chặn lại bởi mẫu hoàn thành chậm nhất.
  • Huấn luyện RL dạng tác tử (Agentic RL): Khi mô hình tương tác với các công cụ và môi trường bên ngoài, độ dài và độ trễ của quá trình tạo dữ liệu trở nên rất biến thiên. Một lệnh gọi API đơn giản có thể trả về trong vài giây, nhưng một chuỗi suy luận phức tạp có thể mất hàng phút hoặc hàng giờ. Vấn đề "kẻ tụt hậu" (straggler problem) - nơi một vài lượt tạo dữ liệu chậm chạp làm tắc nghẽn toàn bộ lô - có thể khiến hàng trăm GPU phải "ngồi chơi".

Giải pháp đồng thuận: Kiến trúc bất đồng bộ

Để giải quyết nút thắt cổ chai này, cộng đồng mã nguồn mở đã hội tụ về một giải pháp kiến trúc chung: tách biệt (disaggregate) quá trình suy luận và huấn luyện vào các nhóm GPU riêng biệt. Hai nhóm này được kết nối thông qua một bộ đệm (rollout buffer) - nơi lưu trữ tạm thời các kết quả từ mô hình. Quan trọng nhất, việc chuyển giao trọng số (weights) giữa hai nhóm diễn ra một cách bất đồng bộ, đảm bảo không bên nào phải chờ đợi bên nào, từ đó tối đa hóa hiệu suất phần cứng.

Để hiểu rõ hơn về cách triển khai mô hình này, một cuộc khảo sát đã được thực hiện trên 16 thư viện mã nguồn mở được xây dựng dựa trên kiến trúc bất đồng bộ. Chúng được so sánh dựa trên 7 tiêu chí chính:

  1. Cơ chế điều phối (Orchestration primitives)
  2. Thiết kế bộ đệm (Buffer design)
  3. Giao thức đồng bộ trọng số (Weight sync protocols)
  4. Quản lý độ trễ dữ liệu (Staleness management)
  5. Xử lý lượt tạo dữ liệu chưa hoàn chỉnh (Partial rollout handling)
  6. Hỗ trợ LoRA (LoRA support)
  7. Các backend huấn luyện phân tán (Distributed training backends)

Một số kết quả chính từ khảo sát:

  • Ray là nền tảng điều phối chiếm ưu thế (được sử dụng trong 8/16 thư viện).
  • NCCL broadcast (Thư viện Giao tiếp Tập thể của NVIDIA) là phương thức mặc định để truyền trọng số mô hình.
  • Quản lý độ trễ dữ liệu có nhiều cách tiếp cận, từ việc loại bỏ các mẫu cũ đến sử dụng các phương pháp hiệu chỉnh phức tạp hơn.
  • Hỗ trợ huấn luyện LoRA (Low-Rank Adaptation) còn khá hạn chế.
  • Hỗ trợ MoE (Mixture of Experts) phân tán đang nổi lên như một yếu tố tạo nên sự khác biệt.

Các mô hình triển khai trong thực tế

Trước khi đi sâu vào huấn luyện bất đồng bộ, cần phải hiểu hai cấu trúc triển khai chính khi sử dụng một engine suy luận riêng biệt:

  • Chế độ đồng vị (Colocated mode): Đặt cả quá trình suy luận và huấn luyện trên cùng một nhóm GPU. Một GPU (hoặc một nhóm) sẽ chứa cả mô hình huấn luyện và engine suy luận (như vLLM). Tại một thời điểm, chỉ một tác vụ được thực thi. Ưu điểm của chế độ này là đơn giản và tiết kiệm chi phí, nhưng hạn chế cơ bản là suy luận và huấn luyện không thể chồng chéo lên nhau.

  • Chế độ tách biệt (Disaggregated mode): Đặt suy luận và huấn luyện trên các nhóm GPU riêng biệt. Nhóm suy luận chạy liên tục, và nhóm huấn luyện cũng chạy liên tục. Hai nhóm giao tiếp với nhau thông qua các giao thức đồng bộ trọng số và cơ chế truyền dữ liệu. Đây chính là mô hình cho phép tối đa hóa hiệu suất bằng cách cho phép hai quá trình diễn ra song song.

Tầm nhìn xa hơn

Huấn luyện RL bất đồng bộ đã nổi lên như một mô hình thống trị cho việc hậu huấn luyện (post-training) ở quy mô lớn. Hơn nữa, nhu cầu về hạ tầng bất đồng bộ ngày càng trở nên rõ ràng trong các lĩnh vực khác. Ví dụ, chưng cất trên-chính-sách (on-policy distillation), nơi một mô hình "học sinh" tạo ra chuỗi và một mô hình "giáo viên" chấm điểm chúng, có cấu trúc tương tự như các thuật toán RL hiện đại. Điều này cho thấy các nguyên tắc thiết kế được đúc kết từ khảo sát này có thể được áp dụng rộng rãi, không chỉ giới hạn trong lĩnh vực Học Tăng cường.

Nguồn: Hugging Face Blog

Các tin tức khác cùng danh mục

EXPLORE TOPICS

Khám phá mọi danh mục

Theo dõi sâu sát từng lĩnh vực công nghệ bạn quan tâm nhất.