File size: 3,689 Bytes
6e79895
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7cc868d
6e79895
3f3e1d1
6e79895
7cc868d
6e79895
 
866edb9
c88923b
6e79895
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9c0aaf5
 
 
6e79895
 
 
 
 
 
866edb9
6e79895
 
 
 
c88b8d9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
---
license: apache-2.0
metrics:
- rouge
base_model:
- Qwen/Qwen2.5-0.5B
pipeline_tag: text2text-generation
tags:
- law
---
# qwen2.5-law-summary

## 模型概述
模型名称:qwen2.5-law-summary  
模型类型:指令微调版本  
基础模型:qwen2.5系列,参数量为0.5B  
训练数据:3400余条法律判决书及人工摘要  
数据来源:法研杯2020年法律文书摘要大赛  
参考文献:[BRIO 论文](https://arxiv.org/abs/2203.16804)
## 训练细节
- **训练类型**:全量指令微调   
- **训练任务**:采用最大似然估计与对比排序学习的多任务算法。
- **损失函数**  - `loss_likelihood``loss_contrast`的比例基本保持在9:1至8:2之间,根据原论文的实验,这可能并未是最佳配比。
- **排序对比数据**:从原训练集中采样,使用双底座模型qwen-plus及ENIRE-128K生成。
- **排序评估**:使用传统的ROUGE-F,计算`ROUGE_1``ROUGE_2``ROUGE_L`的平均值进行排序。

## 训练硬件配置
- **硬件环境**:H20-96G
- **训练轮次**:共训练4轮
- **补充说明**  - 采用flash-attention与deepspeed以适应长序列数据和对比损失带来的额外显存需求。

## 模型性能
模型训练完成后的回答风格与原模型存在明显差异,更偏好业内人员书写风格。使用方法与原模型相同,但提示词需稍作修改以与训练指令对齐。
```python
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "jiangchengchengNLP/qwen_0.5B_instruct_law_summarize"
model = AutoModelForCausalLM.from_pretrained(
    model_name,
    torch_dtype="auto",
    device_map="auto",
)
tokenizer = AutoTokenizer.from_pretrained(model_name)
with open("河北宁晋农村商业银行股份有限公司小刘村支行与杨保会、杨立田等借款合同纠纷一审民事判决书.txt", "r", encoding="utf-8") as f:
    prompt = f.read()
messages = [
    {"role": "system", "content": "你是法律小助手,你的任务是将用户输入的内容整理成一份摘要"},
    {"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(
    messages,
    tokenize=False,
    add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
generated_ids =model.generate(
    **model_inputs,
    max_new_tokens=512
)
generated_ids = [
    output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]
response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
print(response)
```
```
原被告系借款合同关系。原告提出诉求:1、请求法院依法判令被告偿还借款本金2000元及利息4912.6元;2、本案诉讼费用由被告承担。经审理查明,双方签订的借款合同和保证担保借款合同合法有效,被告未按约定偿还原告借款本息,应负违约责任。依据《中华人民共和国合同法》第八条、第六十条、第二百零五条、第二百零六条、二百零七条,《中华人民共和国担保法》第十八条、第二十一条以及《中华人民共和国民事诉讼法》第一百四十四条之规定,判决:1、被告偿还借款本息24912.6元;2、被告承担连带清偿责任。
```

## 测试效果
在200条测试数据集上的ROUGE评分如下:
- `ROUGE_1`:0.5703008654122925  
- `ROUGE_2`:0.4040075748793321
- `ROUGE_L`:0.47319922532178305



## 总结
qwen2.5-law-summary模型针对法律文本的摘要生成进行了优化训练,适用于法律领域的研究与应用。通过高效的训练策略与强大的硬件支持,模型在特定领域的性能上有了显著提升。