Khóa học
Group Relative Policy Optimization (GRPO) là một kỹ thuật học tăng cường (RL) tiên tiến đứng sau hiệu năng ấn tượng của các mô hình ngôn ngữ lớn (LLM) mới nhất. Dù chỉ thực sự được chú ý rộng rãi sau khi DeepSeek-R1 ra mắt, GRPO lần đầu được giới thiệu trong DeepSeekMath, một LLM được tinh chỉnh cho tư duy toán học nâng cao. GRPO ban đầu được thiết kế để cải thiện hiệu quả trong tinh chỉnh và đã chứng minh là một phương pháp tiết kiệm chi phí, linh hoạt, được cộng đồng đón nhận.
Trong bài viết này, chúng ta sẽ đi sâu vào GRPO: nó là gì, cách hoạt động, các thành phần thiết yếu để triển khai, và khi nào phù hợp nhất để sử dụng. Mục tiêu là đưa bạn qua những điểm then chốt đứng đằng sau GRPO, lý giải vì sao nó ngày càng phổ biến.
Nếu bạn muốn tìm hiểu thêm về DeepSeek, đừng bỏ lỡ khóa học Làm việc với DeepSeek trong Python.
Giới thiệu về Học Tăng Cường
Như chúng tôi trình bày trong hướng dẫn tinh chỉnh LLM, tinh chỉnh có giám sát (SFT) là kỹ thuật huấn luyện truyền thống sử dụng dữ liệu gán nhãn. Tức là dùng các ví dụ cho thấy phần hoàn thành hoặc đầu ra kỳ vọng cho một đầu vào nhất định.
Một hạn chế của SFT là phụ thuộc nhiều vào các bộ dữ liệu gán nhãn lớn, vốn tốn kém và mất thời gian để tạo. Hơn nữa, các mô hình huấn luyện bằng SFT có nguy cơ quá khớp với ví dụ huấn luyện, nghĩa là hoạt động tốt trên dữ liệu đã thấy nhưng kém tổng quát hóa cho tình huống mới hoặc bất ngờ.
Một lựa chọn thay thế cho SFT là học tăng cường, theo đó, thay vì học từ các ví dụ cố định, một tác nhân học bằng cách tương tác với môi trường và thử các hành động khác nhau để hoàn thành nhiệm vụ. Sau mỗi hành động, tác nhân nhận phản hồi dưới dạng thưởng hoặc phạt. Mục tiêu là tối đa hóa tổng phần thưởng theo thời gian bằng cách khám phá các chiến lược hiệu quả nhất.
Ta có thể mô tả một quy trình RL đơn giản như sau:

Sơ đồ quy trình RL đơn giản.
Nếu bạn muốn thực hành RL trong Python, hãy xem hướng dẫn Học Tăng Cường: Nhập môn với ví dụ Python!
Học tăng cường dễ hiểu
Để minh họa khái niệm học tăng cường, hãy tưởng tượng bạn đang dạy em họ đi xe đạp. Lúc đầu, bé gặp khó khăn khi đạp và giữ thăng bằng, thường chao đảo hoặc ngã.
Mỗi lần bé đi được xa hơn một chút, bạn cổ vũ. Phản hồi tích cực này khích lệ bé tiếp tục. Nhưng khi bé thử lao xuống cầu thang, bạn lập tức ngăn lại và giải thích rủi ro. Đó là tín hiệu tiêu cực nhằm ngăn hành vi như vậy.
Tương tự, học tăng cường cho phép mô hình khám phá các hành động khác nhau. Phần thưởng dương củng cố kết quả mong muốn, còn phần thưởng âm ngăn hành vi không mong muốn. Theo thời gian, mô hình học cách ra quyết định tốt hơn nhờ phản hồi này.
Các cách tiếp cận học tăng cường
Có nhiều kỹ thuật áp dụng học tăng cường cho mô hình. Cụ thể, GRPO được xem là sự phát triển từ proximal policy optimization (PPO) và direct policy optimization (DPO).
Bạn đã từng nghe về PPO và DPO chưa?
Tối ưu hóa chính sách lân cận
PPO là một thuật toán RL được dùng rộng rãi nhằm tối ưu hành vi mô hình bằng cách tối đa hóa phần thưởng thông qua một mô hình thưởng tách biệt. Ví dụ điển hình của PPO là học tăng cường từ phản hồi của con người (RLHF) của OpenAI. Trong RLHF, phản hồi của con người được thu thập trên đầu ra mô hình, rồi dùng để huấn luyện một mô hình thưởng dự đoán phản hồi. Việc có mô hình thưởng là cách mở rộng phản hồi của con người mà không cần con người trực tiếp.
Cuối cùng, PPO sử dụng mô hình thưởng trong quá trình huấn luyện để điều chỉnh tham số của mô hình, khuyến khích tạo phản hồi phù hợp hơn với sở thích của con người. Sơ đồ sau minh họa quy trình PPO:

Sơ đồ quy trình PPO.
Nếu bạn muốn triển khai quy trình PPO bằng Python, hãy xem hướng dẫn Proximal Policy Optimization với PyTorch và Gymnasium.
Tối ưu hóa chính sách trực tiếp
Huấn luyện một mô hình thưởng riêng là phức tạp và tốn tài nguyên. Để đơn giản hóa, DPO được giới thiệu, thay đổi cách thu thập phản hồi từ con người.
Thay vì yêu cầu con người chấm điểm bằng số, DPO dựa vào so sánh sở thích. Người gán nhãn được hiển thị hai phản hồi và chọn phản hồi họ thích hơn. Điều này tạo ra bộ dữ liệu gồm ví dụ được ưa thích và kém ưa thích.
Sau đó, mô hình được tinh chỉnh trực tiếp trên các cặp ưu tiên này, thay vì dựa vào mô hình thưởng. Với cách tiếp cận này, mô hình học cách tăng xác suất sinh phản hồi được ưa thích và giảm xác suất phản hồi kém ưa thích.
Cách làm này giúp mô hình phù hợp với sở thích của con người mà không cần mô hình thưởng riêng. Hãy xem quy trình mới này:

Sơ đồ quy trình DPO.
Hướng dẫn OpenAI's Preference Fine-Tuning: A Guide With Examples sẽ giúp bạn triển khai DPO trong thực tế.
Thách thức của PPO và DPO
DPO mang lại nhiều lợi ích so với PPO. Về dữ liệu, PPO cần thu thập dữ liệu để huấn luyện mô hình thưởng, rồi phải huấn luyện mô hình phụ này (kèm mọi thách thức kỹ thuật), trước cả khi bắt đầu huấn luyện mô hình đích. DPO đơn giản hóa bằng cách bỏ nhu cầu có mô hình thưởng riêng. Tuy nhiên, cách này vẫn cần lượng lớn dữ liệu sở thích.
Đến đây, bạn có hình dung ra cách loại bỏ các hạn chế này không?
Điều gì sẽ xảy ra nếu thay vì dựa vào phản hồi bên ngoài, ta có thể tự động kiểm định và chấm điểm phản hồi của mô hình?
Đó chính là điều GRPO mang lại!
GRPO là gì?
Group Relative Policy Optimization là một kỹ thuật RL không cần dữ liệu gán nhãn, chỉ cần một cơ chế để “xác minh” tính đúng đắn và sắp xếp phản hồi tương ứng. Việc xác minh thường được thực hiện bằng các hàm thưởng lập trình được, ví dụ các hàm nhận phản hồi của mô hình làm đầu vào và xuất ra điểm số đánh giá theo một khía cạnh nào đó.
Một số cách tiếp cận GRPO dùng LLM-đóng-vai-trọng-tài để kiểm định và chấm điểm phản hồi, nhưng cốt lõi của GRPO có thể khai thác mà không cần mô hình bên ngoài trong các lĩnh vực như phát triển phần mềm, vì nhiều khía cạnh của mã sinh ra có thể được kiểm tra bằng công cụ ngoài. Chẳng hạn,
- Mã có biên dịch được không? Chỉ cần dùng trình biên dịch.
- Có lỗi khi chạy không? Chỉ cần chạy mã.
- Có vượt qua unit test không? Chỉ cần unit test.
- Kết quả trình linter có sạch không? Chỉ cần một linter.
Như bạn thấy, không cần con người hay dữ liệu sở thích!
Hàm thưởng
Trong bài báo gốc của DeepSeek-Math, các hàm thưởng được thiết kế để đánh giá tính đúng đắn và định dạng của lời giải toán. Nếu bạn từng yêu cầu LLM trả về đầu ra có cấu trúc, hẳn bạn đã nhận ra mô hình có thể tuân thủ định dạng phần lớn thời gian, nhưng luôn có một trường hợp góc gây vỡ pipeline, đúng không?
Trong trường hợp DeepSeek-Math, các hàm thưởng tập trung vào độ đúng và định dạng:
- Thưởng độ chính xác đánh giá liệu đáp án cuối cùng của mô hình có đúng không. Với bài toán toán học xác định, mô hình phải trình bày đáp án cuối cùng theo định dạng quy định (ví dụ, đặt trong khung), cho phép tự động đối chiếu với đáp án chuẩn.
- Thưởng định dạng đảm bảo phản hồi của mô hình tuân theo cấu trúc định sẵn. Cụ thể, mô hình được khuyến khích bao ô quy trình suy luận trong các thẻ chỉ định (ví dụ,
<think>và</think>). Định dạng này giúp trích xuất và phân tích mạch suy nghĩ của mô hình, thúc đẩy sự rõ ràng và nhất quán trong đầu ra.
Quy trình GRPO
Lúc này, bạn có thể tự hỏi, GRPO nằm ở đâu trong quy trình huấn luyện của một mô hình?
Hãy xem từng bước!
- Gửi một prompt tới LLM và lấy mẫu nhiều phản hồi ứng viên.
- Viết một hoặc nhiều hàm lập trình được nhận cặp prompt–phản hồi và gán điểm cho từng cặp.
- Dùng các điểm số này để cập nhật trọng số LLM, tăng xác suất tạo phản hồi có điểm trên trung bình và giảm với phản hồi dưới trung bình.
Bằng cách lặp vòng này, GRPO tinh chỉnh mô hình trực tiếp dựa trên đầu ra của các hàm thưởng, không cần thu thập dữ liệu sở thích.

Sơ đồ quy trình GRPO với điểm thưởng được tính bởi tác nhân bên ngoài.
Cuối cùng, đáng chú ý là GRPO còn có lợi thế dạy mô hình các nhiệm vụ mới, thay vì chỉ điều chỉnh học tập theo sở thích như trong PPO hoặc DPO.
Lợi ích của GRPO
Như có thể thấy từ sơ đồ trên, lợi ích lớn nhất của GRPO là không cần dữ liệu gán nhãn, chỉ cần cơ chế “xác minh” tính đúng đắn thông qua các hàm thưởng lập trình được.
Một lợi ích khác là cần ít ví dụ hơn nhiều so với tinh chỉnh, giúp kỹ thuật này tiết kiệm chi phí.
Ngoài ra, mô hình học chủ động từ phản hồi thay vì các ví dụ gán nhãn cố định, giảm rủi ro quá khớp. Huấn luyện mô hình với GRPO giúp chúng tự nhiên khám phá chiến lược tốt hơn và cải thiện chuỗi suy luận.
Các trường hợp sử dụng GRPO
Như đã thảo luận, trường hợp sử dụng chính của GRPO xuất hiện khi bạn không có dữ liệu gán nhãn nhưng có thể xác minh tính đúng đắn của đầu ra. Nó cũng hiệu quả khi bạn có dữ liệu gán nhãn hạn chế, không đủ để tinh chỉnh có giám sát truyền thống. Điều này khiến GRPO đặc biệt hữu ích khi việc gán nhãn tốn kém hoặc không khả thi.
Một số lĩnh vực GRPO cho thấy ưu thế rõ rệt gồm:
- Kỹ năng toán học: Ví dụ, với mô hình DeepSeek-Math, GRPO đã nâng cao khả năng giải toán phức tạp mà không cần bộ dữ liệu gán nhãn lớn.
- Sinh mã: GRPO giúp cải thiện độ chính xác và độ tin cậy của mã sinh ra bằng cách cho hệ thống tự kiểm định đầu ra và tinh chỉnh lặp lại.
- Lập luận nhiều bước: GRPO được chứng minh tăng hiệu năng trong các nhiệm vụ đòi hỏi lập luận tuần tự và tích hợp nhiều bước logic.
GRPO nâng cao
Có một số mẹo và kỹ thuật nâng cao khi triển khai GRPO trong thực tế mà bạn nên biết.
Hàm thưởng nâng cao
Hàm thưởng cung cấp phản hồi cho mô hình về mức độ đạt mục tiêu. Có vài thành phần then chốt:
- Đa dạng trong phản hồi: Sinh ra nhiều ứng viên đầu ra làm tăng khả năng tìm ra lời giải hay hơn hoặc chiến lược tốt hơn.
- Đa dạng trong thưởng: Thiết kế hàm thưởng có khả năng phân biệt các mức độ thành công khác nhau hoặc đạt một phần, thay vì chỉ tín hiệu đỗ/trượt nhị phân. Điều này gọi là thưởng tín chỉ một phần, cung cấp phản hồi tinh tế hơn bằng cách cho điểm từng phần cho các khía cạnh khác nhau của phản hồi. Ví dụ gồm: kiểm tra ít nhất định dạng đầu ra đúng, mã sinh ra biên dịch thành công, hoặc mã vượt qua một phần bộ unit test. Kiểu thưởng theo thang này khuyến khích mô hình cải thiện dần, ngay cả khi phản hồi chưa hoàn toàn đúng.
Ngoài ra, đặt đường cơ sở cho toàn nhóm có vai trò quan trọng trong việc ổn định và cải thiện huấn luyện. Bằng cách trừ đường cơ sở này khỏi thưởng cá nhân, mô hình nhận phản hồi tương đối so với hiệu năng chung của nhóm, giúp giảm phương sai trong ước lượng thưởng và khuyến khích cải thiện dần dần so với mức trung bình.
Nhiệt độ
Trong LLM, tham số nhiệt độ kiểm soát độ ngẫu nhiên của quá trình lấy mẫu khi sinh đầu ra. Đặt nhiệt độ bằng 0 dẫn đến lấy mẫu tất định, tức mô hình luôn chọn token kế tiếp có xác suất cao nhất.
Dù đảm bảo tính nhất quán, điều này thường khiến đầu ra lặp lại, hạn chế sự đa dạng trong phản hồi.
Ngược lại, tăng nhiệt độ đưa thêm ngẫu nhiên, cho phép mô hình khám phá dải khả năng rộng hơn. Sự đa dạng này hữu ích để phát hiện lời giải khác biệt hoặc bất ngờ.
Tuy nhiên, nhiệt độ cao đi kèm đánh đổi: chất lượng từng lần đoán có xu hướng thấp hơn vì mô hình chọn các token kém xác suất thường xuyên hơn. Do đó, quá trình học tổng thể có thể chậm lại.
Chọn nhiệt độ phù hợp đôi khi là một nghệ thuật!
Lách thưởng (reward hacking)
Các mô hình đôi khi “tinh quái” và lợi dụng hàm thưởng theo cách ngoài ý muốn để tối đa hóa điểm mà không thực sự đạt mục tiêu.
Ví dụ, giả sử mô hình được thưởng khi tạo test cho một đoạn mã. Mô hình có thể cung cấp một hàm test nhưng không kiểm thử gì cả, lách mục tiêu xác thực tính đúng của mã và vẫn nhận thưởng.
Cần lưu ý những chiêu này khi viết hàm thưởng. Chẳng hạn, trong bài toán sinh test, thường yêu cầu mô hình tạo ít nhất một câu lệnh ‘assert’ trong test. Nếu không sẽ bị phạt.
Kết luận
Để kết lại, tôi muốn áp dụng GRPO vào một kịch bản đời thực để đảm bảo mọi khái niệm đều được nắm vững.
Hãy tưởng tượng bạn và bạn bè tham gia một cuộc thi thể lực, nơi các phần thưởng được trao dựa trên thành tích chạy, chống đẩy và chèo. Ban đầu, phòng gym chỉ thưởng cho người có kết quả tuyệt đối tốt nhất.
Theo cách này, nếu Alice chạy xa hơn và chống đẩy nhiều hơn Ben, cô ấy luôn thắng, dù Ben đã tiến bộ đáng kể.
Điều này có vẻ không công bằng với Ben, phải không?
Để khắc phục, phòng gym thử cách tiếp cận khác: mục tiêu cá nhân dựa trên thành tích trước đây.
Giờ đây, bạn chỉ được thưởng nếu vượt kỷ lục cá nhân. Tuy công bằng hơn, cách này phát sinh vấn đề mới. Thành viên mới như Charlie không có dữ liệu quá khứ để so sánh, khó tham gia. Thêm nữa, huấn luyện viên phải theo dõi tiến độ từng người liên tục, kém hiệu quả.
Cuối cùng, phòng gym đưa ra giải pháp tốt hơn: GRPO.
Trước buổi tập, huấn luyện viên bật hệ thống phân tích đặc điểm người tham gia và phân nhóm theo điều kiện tương đồng. Trong buổi tập, hệ thống theo dõi hiệu năng từng người và tính điểm trung bình trong mỗi nhóm làm đường cơ sở. Sau đó, phần thưởng được trao dựa trên mức độ mỗi người vượt qua mức trung bình của nhóm trong chính ngày hôm đó.
Vì thế, nếu Ben thể hiện vượt trội so với những người trong nhóm mình, anh sẽ được thưởng, ngay cả khi Alice vẫn có điểm tổng thể cao nhất. Cách này cũng công bằng với người mới như Charlie, vì họ được đánh giá tương đối với bạn bè trong cùng buổi, không dựa trên lịch sử trước đó.
Một yếu tố quan trọng trong quy trình này là nhiệt độ, điều chỉnh mức độ nghiêm ngặt khi ghi nhận cải thiện. Nếu nhiệt độ quá thấp, chỉ những cải thiện lớn so với đường cơ sở mới được tính. Nếu quá cao, cả cải thiện nhỏ cũng được thưởng, khuyến khích thử nghiệm nhưng dễ dẫn tới tiến bộ thất thường.
GRPO hướng tới cân bằng hợp lý, đảm bảo tiến bộ ổn định đồng thời cho phép khám phá.
Cuối cùng, có rủi ro lách thưởng: người tham gia tìm cách “chơi hệ thống” mà không thực sự tiến bộ. Ví dụ, Ben có thể chỉ tập trung vào bài dễ để thổi phồng điểm số mà không nỗ lực thực.
Để ngăn chặn, phòng gym thêm rào chắn, như yêu cầu phối hợp cân bằng các bài tập hoặc phạt các bài lặp lại, ít nỗ lực. Những ràng buộc này đảm bảo phần thưởng phản ánh tiến bộ thực sự.
Nếu bạn muốn tìm hiểu sâu hơn về cách LLM hoạt động và cách tự phát triển, hãy xem khóa học Phát triển Mô hình Ngôn ngữ Lớn.
Câu hỏi thường gặp về GRPO
GRPO cần bao nhiêu dữ liệu?
Thường là dưới 1000 ví dụ gán nhãn.
GRPO có cần theo dõi hiệu năng trong quá khứ không?
Không. GRPO chỉ dùng thông tin từ bước huấn luyện hiện tại.
Nhóm (Group) trong GRPO là gì?
Nhóm là tập hợp các phản hồi của mô hình cho cùng một prompt.
GRPO ngăn lách thưởng như thế nào?
Bằng cách đưa vào các ràng buộc, GRPO ngăn mô hình lợi dụng những con đường dễ để thổi phồng phần thưởng.
Phần thưởng trong GRPO được gán như thế nào?
Mỗi phản hồi được thưởng dựa trên mức độ vượt đường cơ sở của nhóm, không phải điểm tuyệt đối.
Andrea Valenzuela hiện đang làm việc cho thí nghiệm CMS tại máy gia tốc hạt (CERN) ở Geneva, Thụy Sĩ. Với sáu năm kinh nghiệm về kỹ thuật dữ liệu và phân tích, công việc của cô bao gồm phân tích dữ liệu và phát triển phần mềm. Hiện cô đang nỗ lực dân chủ hóa việc học các công nghệ liên quan đến dữ liệu thông qua ấn phẩm Medium ForCode'Sake.
Cô có bằng Cử nhân Vật lý Kỹ thuật từ Đại học Bách khoa Catalonia, cũng như bằng Thạc sĩ Hệ thống Tương tác Thông minh từ Đại học Pompeu Fabra. Kinh nghiệm nghiên cứu của cô bao gồm công việc chuyên môn với các thuật toán trước đây của OpenAI cho tạo sinh hình ảnh, chẳng hạn như Normalizing Flows.
