148 lines
4.3 KiB
Markdown
148 lines
4.3 KiB
Markdown
---
|
||
language:
|
||
- zh
|
||
license: mit
|
||
tags:
|
||
- 7b
|
||
- chinese
|
||
- rlhf
|
||
pipeline_tag: text-generation
|
||
base_model:
|
||
- Qwen/Qwen2.5-7B-Instruct
|
||
---
|
||
|
||
# Qwen2.5-7B-RLRefine
|
||
|
||
**基于 SFT → DPO → GRPO 三阶段 RL 训练的中文电商评论关键词提取模型**
|
||
|
||
该模型由 [RLRefine](https://github.com/xinyuran/RLRefine) 项目产出,以 Qwen2.5-7B-Instruct 为基座,经过完整的强化学习训练流水线微调,专注于从中文电商评论中提取结构化关键词。
|
||
|
||
---
|
||
|
||
## 模型简介
|
||
|
||
| 项目 | 详情 |
|
||
|------|------|
|
||
| 基座模型 | Qwen/Qwen2.5-7B-Instruct |
|
||
| 训练阶段 | SFT → DPO → GRPO |
|
||
| 主要任务 | 中文电商评论关键词提取 |
|
||
| 输出格式 | 结构化 JSON(含推理过程) |
|
||
| 语言 | 中文 |
|
||
| 许可证 | MIT |
|
||
|
||
---
|
||
|
||
## 训练方案
|
||
|
||
### 三阶段训练流程
|
||
|
||
```
|
||
Qwen2.5-7B-Instruct(基座)
|
||
│
|
||
▼ SFT ── 3329 条示范数据,5 epochs,lr=1e-5,LoRA rank=16
|
||
│ 训练时长 ~1h 9min,2× H100 80GB,token_acc=79%
|
||
│
|
||
▼ DPO ── ~3697 条偏好对,1 epoch,lr=5e-7,LoRA rank=8
|
||
│ 教会模型区分原子化正确提取 vs. 粗糙提取
|
||
│
|
||
▼ GRPO ── Schema 驱动奖励函数(F1 50% + 格式 20% + Schema 20% + 推理 10%)
|
||
924 steps,训练时长 ~4h 35min,最终 reward=0.9375,KL=0.00045
|
||
```
|
||
|
||
### 硬件环境
|
||
|
||
- GPU:2× NVIDIA H100 80GB HBM3
|
||
- 框架:ms-swift 3.11.2 + vLLM 0.13.0
|
||
- 分布式:DeepSpeed Zero2(GRPO 阶段)
|
||
|
||
---
|
||
|
||
## 模型能力
|
||
|
||
相比原始 Qwen2.5-7B-Instruct(Zero-shot),本模型的提升:
|
||
|
||
| 维度 | 原始模型 | 本模型 |
|
||
|------|---------|--------|
|
||
| 推理结构 | 简单 Markdown 列表 | 系统化五步分析 |
|
||
| 关键词原子化 | 常含多词短语 | 严格≤4字原子级 |
|
||
| 置信度类型 | 字符串 `"0.95"`(类型错误) | 数字 `0.95`(正确) |
|
||
| 覆盖率 | 易遗漏核心词 | 系统性覆盖 |
|
||
| 幻觉率 | 较高 | 受奖励函数约束,显著降低 |
|
||
|
||
---
|
||
|
||
## 使用方法
|
||
|
||
### 直接推理(vLLM)
|
||
|
||
```bash
|
||
vllm serve xinyuran/Qwen2.5-7B-RLRefine --port 8000
|
||
```
|
||
|
||
### 配合 RLRefine 框架使用
|
||
|
||
```python
|
||
from core.processor import RLRefineProcessor
|
||
from prompts.prompt_builder import PromptBuilder
|
||
from core.config import Config
|
||
from core.schema import ExtractionTask
|
||
|
||
# 使用项目内置关键词提取配置
|
||
prompt_builder = PromptBuilder.create_keyword_extraction_builder()
|
||
config = Config(...)
|
||
processor = RLRefineProcessor(config=config, task=task, prompt_builder=prompt_builder)
|
||
|
||
results = processor.process_batch([
|
||
{"id": "001", "describe": "电视非常好,画面清晰,系统很智能,更多功能还在摸索中"}
|
||
])
|
||
```
|
||
|
||
### 输出格式示例
|
||
|
||
```json
|
||
{
|
||
"keywords": [
|
||
["核心商品主体,评论围绕电视展开", "电视", 0.95],
|
||
["电视的关键视觉属性,被明确评价为清晰", "画面", 0.85],
|
||
["直接描述画面质量的正面评价词", "清晰", 0.80],
|
||
["电视的操作系统,被描述为智能", "系统", 0.85],
|
||
["直接描述系统特性的正面评价词", "智能", 0.80],
|
||
["提及但未评价的具体属性", "功能", 0.70]
|
||
]
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 提取规则
|
||
|
||
模型经过训练后遵循以下关键词提取规范:
|
||
|
||
1. **忠于原文**:关键词必须逐字对齐原文,不得改写或归纳
|
||
2. **原子化**:每个关键词 ≤ 4 个汉字,对象词和描述词分别输出
|
||
3. **先推理再提取**:输出包含完整推理过程后跟 JSON 结果
|
||
4. **幻觉抑制**:关键词必须在原文中出现,不得编造
|
||
5. **数量上限**:最多输出 15 个关键词,按重要性降序
|
||
|
||
---
|
||
|
||
## 局限性
|
||
|
||
- 当前训练数据聚焦于**中文电商评论**领域,其他领域(新闻、医疗等)效果未经验证
|
||
- 关键词提取任务存在一定主观性,不同场景下规则可能需要调整
|
||
- GRPO 训练时 `frac_reward_zero_std=0.75`,存在一定程度的奖励饱和,详见 [reward_design.md](https://github.com/xinyuran/RLRefine/blob/main/docs/reward_design.md)
|
||
|
||
---
|
||
|
||
## 引用
|
||
|
||
如果本模型对你的工作有帮助,欢迎 Star 项目仓库:
|
||
|
||
- GitHub: [xinyuran/RLRefine](https://github.com/xinyuran/RLRefine)
|
||
- HuggingFace: [xinyuran/Qwen2.5-7B-RLRefine](https://huggingface.co/xinyuran/Qwen2.5-7B-RLRefine)
|
||
|
||
---
|
||
|
||
## License
|
||
|
||
MIT License — Copyright (c) 2026 xinyuran |