🚀 GLOCON-Reasoning: Qwen2.5-3B結合GRPO強化學習
本項目是基於Qwen2.5-3B模型,結合GRPO強化學習的衝突事件分類模型。它能按照特定的結構化推理格式對沖突事件進行分類,適用於學術研究、事件分析等場景。
🚀 快速開始
在使用此模型時,必須按照以下方式設置提示,以確保模型遵循所需的結構化推理格式。若未明確設置提示,模型的輸出可能不符合預期的XML結構和推理準則。
在推理代碼中加入以下提示:
prompt = """
You are identifying conflict events and assigning them to one of five predefined categories. Think carefully and reason deeply, but when giving the final answer, provide only minimal, fixed-format outputs without any extra words.
Format your response:
<reasoning>
- Carefully analyze the text and explain:
1. What action(s) triggered the event.
2. Who are the participants or organizers.
3. Where the event happened (city and country).
4. Whether the event was violent or non-violent.
5. Which of the five event categories fits best, and why.
</reasoning>
<answer>
1. Trigger: <exact phrase>
2. Participants: <actor1, actor2,...>
3. Location: <city, country>
4. Violence: <Violent / Non-violent>
5. Category: <one of: Demonstration / Armed Militancy / Group Clash / Industrial Action / Other>
</answer>
"""
✨ 主要特性
強化學習亮點
與傳統的監督微調(如ConflLlama中使用的方法)不同,此模型使用GRPO實現以下功能:
- 同時優化多個獎勵信號
- 通過強化信號強制採用結構化推理格式
- 通過格式化的XML響應提高輸出一致性
- 通過強化而非直接模仿實現自我提升
訓練數據
屬性 |
詳情 |
數據集 |
GLOCON事件分類數據集 |
時間範圍 |
當代國內衝突事件 |
格式 |
帶有相關事件類別的新聞文章 |
標籤 |
五個主要事件類別:示威、武裝激進活動、群體衝突、工業行動、其他 |
數據處理
- 訓練/測試劃分:
- 80%用於訓練,20%用於測試
- 使用一致的隨機種子(42)以確保可重複性
- 格式標準化:
- 帶有結構化推理要求的系統提示
- 一致的XML輸出格式
- 答案提取:
訓練格式
- 輸入:描述潛在衝突事件的新聞文章
- 輸出:帶有推理和最終類別的結構化XML
關鍵數學概念
多獎勵策略梯度
GRPO方法使用以下公式優化策略參數:
$$\nabla_\theta J(\theta) = \mathbb{E} \left[ \sum_{i=1}^{N} w_i R_i(x, y) \nabla_\theta \log \pi_\theta(y|x) \right]$$
獎勵函數
本實現使用五個專門的獎勵函數:
- 正確性獎勵:準確分類可得2.0分
- 類別格式獎勵:有效選擇類別可得0.5分
- 格式獎勵:正確的XML結構可得1.0分
- XML微獎勵:標籤放置和結構的小激勵
訓練細節
屬性 |
詳情 |
框架 |
Unsloth GRPO |
硬件 |
單塊NVIDIA GPU,使用vLLM加速 |
訓練配置 |
批量大小:每個設備1;梯度累積步數:4;學習率:5e-6;最大步數:1,000;保存步數:500;日誌記錄步數:1;每個提示的樣本數:6;內存利用率:60% |
LoRA配置 |
秩:64(遠大於ConflLlama的秩8);目標模塊:q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj;Alpha縮放:64;量化:4位訓練;梯度檢查點:啟用(“unsloth”模式) |
生成參數 |
溫度:0.8;Top-p:0.95;最大令牌數:256;最大提示長度:512 |
模型架構
訓練架構將強化學習與高效的大語言模型微調相結合。
強化學習優勢
此模型相較於監督微調具有以下關鍵優勢:
- 強制結構化輸出:
<reasoning>
1. Triggers detected: [...]
2. Participants and organizers: [...]
3. Location details: [...]
4. Violence assessment: [...]
5. Event category determination: [...]
</reasoning>
<answer>
[Final category]
</answer>
- 提高推理能力:
- 在最終分類前進行明確的逐步推理
- 考慮多個因素(暴力程度、參與者、地點)
- 透明的決策過程
- 基於獎勵的改進:
- 通過多個獎勵信號實現自我糾正行為
- 在格式遵循和分類準確性之間取得平衡
- 在不犧牲正確性的前提下激勵正確的結構
實現細節
獎勵函數使用高效的向量化操作實現:
def correctness_reward_func(prompts, completions, answer, **kwargs) -> list[float]:
responses = [completion[0]['content'] for completion in completions]
extracted_responses = [extract_xml_answer(r) for r in responses]
return [2.0 if r.strip() == a.strip() else 0.0
for r, a in zip(extracted_responses, answer)]
內存優化
- 使用4位量化
- 梯度累積步數:4
- 內存高效的梯度檢查點
- 最大序列長度減少到1024
- GPU內存利用率限制在60%
- 使用vLLM進行快速推理
📚 詳細文檔
預期用途
此模型旨在用於:
- 帶有推理的國內衝突事件分類
- 需要透明決策過程的學術研究
- 結構化輸出的事件分析
- 基於強化學習的分類的教育演示
侷限性
- 固定的輸出結構可能限制靈活性
- 性能取決於獎勵函數的質量
- 最大序列長度限制為1024個令牌
- 強化可能會過度優化獎勵信號而不是真正的理解
- 僅限於五個預定義的事件類別
- 對於訓練分佈之外的衝突事件可能泛化能力不佳
倫理考慮
- 模型在衝突事件數據上進行訓練
- 應僅用於研究目的,負責任地使用
- 不用於運營安全決策
- 結果應結合適當的上下文進行解釋
- 可能包含訓練數據中存在的偏差
引用
@misc{glocon-reasoning,
author = {Meher, Shreyas},
title = {GLOCON-Reasoning: Qwen2.5-3B with GRPO Reinforcement Learning},
year = {2024},
publisher = {HuggingFace},
note = {Based on Qwen2.5-3B-Instruct and GRPO framework}
}
致謝
- Unsloth提供GRPO實現和優化框架
- Qwen團隊提供基礎模型
- Hugging Face提供transformers基礎設施
- vLLM團隊提供快速推理能力
- 本研究得到NSF獎項2311142的支持
📄 許可證
本項目採用Apache 2.0許可證。 