File size: 5,083 Bytes
01e5ad3
f88f2ae
 
 
 
 
 
 
 
 
01e5ad3
 
f88f2ae
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
81
82
83
84
85
86
87
88
89
---
language:
- zh
pipeline_tag: conversational
tags:
- conversational
- generation
- qlora
- dpo
- rlhf
license: apache-2.0
---

# 开源QLoRA版本的低成本DPO实现

Github: <a href="https://github.com/lyogavin/Anima/stargazers">![GitHub Repo stars](https://img.shields.io/github/stars/lyogavin/Anima?style=social)</a>

我们开源了基于QLoRA的DPO训练方法的实现。

注意:此model为PEFT adaptor版本,merged的版本在[这里](https://huggingface.co/lyogavin/Anima33B-DPO-Belle-1k-merged)。

# LICENSE

Apache 2.0

### 如何使用Anima QLoRA DPO训练?

**准备数据:**我们采用类似于[hh-rlhf数据集](https://huggingface.co/datasets/Anthropic/hh-rlhf)的格式:训练数据的格式为每一条数据有两个key:chosen和rejected。用于对比针对同一个prompt,什么是标注认为好的输出和不好的输出。可以修改--dataset参数指向本地数据集或者huggingface数据集。

**训练模型:**

```bash
# 1. install dependencies
pip install -r requirements.txt
# 2. run DPO training
cd rlhf
./run_dpo_training.sh
```

# 开源Anima 33B的DPO alignment版本模型

我们针对我们开源的Anima 33B训练了DPO alignment的版本。我们使用了[Belle开源的1k评测集](https://github.com/LianjiaTech/BELLE)。(感谢Belle的开源贡献!)这个评测集针对每一个问题都给出了标准答案,可以用来作为高质量的正向样本,而原来模型的输出就作为负向样本。这样训练会鼓励模型尽量输出接近于Belle评测集中的正确答案的回答方式。

训练采用了一台80G的H100,一共100个step,用时5小时,训练过程丝滑稳定:

![training wandb chart](https://github.com/lyogavin/Anima/blob/main/rlhf/wandb_eval_loss_chart.png?raw=true)

以下是经过DPO训练的模型前后输出变化的举例:

* **问题1**: 世界上最长的河流是什么?	

  * **原模型回答** :尼罗河。

  * **DPO训练模型回答**:世界上最长的河流是尼罗河。它从非洲西部开始,经过苏丹、埃及、肯尼亚、坦桑尼亚和肯尼亚等国家,向东方流入 Mediterranean Sea 海。它有约6650公里长度,是地球上第二长的河流之一(次于亚马逊川)。尼罗河源头位于拉比山群中心,流经多个湖泊,包括天池、白 Nilometer 、布加利亚湖、瓦拉湖、贾格纳湖、太古湖、阿尔卑斯湖、亚当湖、亚特提克湖、亚历山大湖、亚喀拉沙湖、亚威拉湖、亚姆拉湖

* **问题2**: 水的化学式是什么?

  * **原模型回答** :H2O

  * **DPO训练模型回答** :水的化学式为H₂O。其中“H”代表氢原子、“О”代表氧原子。水分解成两个氢原子和一个氧原子,形成了水分子

* **问题3**:  根据提供的关键词列表,生成一篇描述这些关键词的段落。
秋天、枫叶、北方、清寒

  * **原模型回答** :秋天是北方地区最美好的季节之一,枫叶变色时间到了,整个城市都被染上了橙黄红色的斑点。清寒的空气中弥漫着淡淡的香气,人们可以感受到自然的平和与温暖。

  * **DPO训练模型回答** :秋天是一个美丽的季节,特别是在北方地区。秋天时,枫叶变色为红黄和橙色,形成了奇妙的景象。人们可以到森林中漫步,欣赏那份自然的靓亮和平静。清寒的空气使得旅行更加舒适,同时也让人体会到秋日的神情。清寒的气候不仅让人感受到秋日的冷凉,还让人感受到秋日的沉思。清寒的气候让人感受到秋日的厚重,让人想起过去的回忆,并对未来有希望。

* **问题4**: 哪些国家是永久理事国?

  * **原模型回答** :五大核能武器持有国(中国、俄罗斯、法国、英国和美国),以及萨摩耶、意大利、日本、西班牙和德国。	

  * **DPO训练模型回答** :有五个国家被认为是永久理事国,他们分别是:中华人民共和国、法国、俄罗斯、英国和美国。这五个国家在联合国成立时就获得了永久理事国身份,并且不需要通过大会选举来保持其位。永久理事国拥有特权,例如可以提起安全性问题或者参加讨论与决定关于安全性问题的行动。

(完整数据在[这里](https://github.com/lyogavin/Anima/blob/main/rlhf/pre_post_dpo_model_output_belle_eval_1k.csv)。)可见,DPO训练会非常有效的调校模型输出更接近于GPT4喜好的方式。输出更为详尽的信息和回答的思维过程。输出更为详细的思维过程也有助于帮助模型提升正确率。

我们认为提升模型的基础推理能力和编码基础的knowledge储备更适合通过大规模与训练进行。而DPO和RLHF更适合进行模型的输出控制,或者领域知识的训练。

# 参与贡献

欢迎大家参与贡献本项目 🙏

**如果你喜欢我们的项目,请帮忙点个⭐吧!**

[!["Buy Me A Coffee"](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://bmc.link/lyogavinQ)