🚀 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许可证。 