README.md 6.22 KB
Newer Older
wanglch's avatar
wanglch committed
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
# XuanYuan

轩辕大模型是度小满推出的大模型系列,持续贡献开源生态。

## 论文

- [CGCE: A Chinese Generative Chat Evaluation Benchmark for General and Financial Domains](https://arxiv.org/abs/2305.14471)

## 模型结构

最懂金融领域的开源大模型“轩辕”系列,继176B、70B之后推出更小参数版本——XuanYuan-13B。这一版本在保持强大功能的同时,采用了更小的参数配置,专注于提升在不同场景下的应用效果。同时,我们也开源了XuanYuan-13B-Chat模型的4bit和8bit量化版本,降低了硬件需求,方便在不同的设备上部署。

<div align="center">
    <img src="./imgs/transformer.jpg"/>
</div>

## 算法原理

在模型训练中,团队在模型预训练阶段动态调整不同语种与领域知识的比例,融入了大量的专业金融语料,并在指令微调中灵活运用之前提出的Self-QA和混合训练方法,显著提升了模型在对话中的性能表现。此外,本次“轩辕13B”还通过强化学习训练,与人类偏好进行对齐。相比于原始模型,RLHF对齐后的模型,在文本创作、内容生成 、指令理解与遵循、安全性等方面都有较大的提升。

<div align=center>
    <img src="./imgs/transformer.png"/>
</div>


## 环境配置
### Docker(方法一)
[光源](https://www.sourcefind.cn/#/service-details)拉取docker镜像的地址与使用步骤

```
docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:2.1.0-ubuntu20.04-dtk24.04.1-py3.10

docker run -it -v /path/your_code_data/:/path/your_code_data/ -v /opt/hyhal/:/opt/hyhal/:ro --shm-size=64G --privileged=true --device=/dev/kfd --device=/dev/dri/ --group-add video --name xuanyuan <your imageID> bash

cd /path/your_code_data/

pip install -r requirements.txt -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com

git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git

cd LLaMA-Factory

pip install -e ".[torch,metrics]"
```

### Dockerfile(方法二)
```
cd /path/your_code_data/docker

docker build --no-cache -t  xuanyuan:latest .

docker run --shm-size=64G --name  xuanyuan -v /opt/hyhal:/opt/hyhal:ro --privileged=true --device=/dev/kfd --device=/dev/dri/ --group-add video -v /path/your_code_data/:/path/your_code_data/ -it  xuanyuan bash

git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git

cd LLaMA-Factory

pip install -e ".[torch,metrics]"
```
### Anaconda(方法三)

关于本项目DCU显卡所需的特殊深度学习库可从[光合](https://developer.hpccube.com/tool/)开发者社区下载安装。
```
DTK驱动:dtk24.04
python:python3.10
torch:2.1
torchvision: 0.16.0
deepspped: 0.12.3
```
`Tips:以上dtk驱动、python、paddle等DCU相关工具版本需要严格一一对应`

关于本项目DCU显卡所需的特殊深度学习库可从[光合](https://developer.hpccube.com/tool/)开发者社区下载安装。
```
conda create -n  xuanyuan python=3.10

conda activate  xuanyuan

cd /path/your_code_data/

pip install -r requirements.txt -i http://mirrors.aliyun.com/pypi/simple

git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git

cd LLaMA-Factory

pip install -e ".[torch,metrics]"
```

## 数据集

迷你数据集 [fingpt_sentiment](./LLaMA-Factory/data/fingpt_sentiment.json) 

预训练需要准备你的训练数据,需要将所有样本放到一个列表中并存入json文件中。每个样本对应一个字典,包含以下信息,示例如下所示:用于正常训练的完整数据集请按此目录结构进行制备:

```
  {
    "instruction": "描述原子的结构。",
    "input": "",
    "output": "原子是物质的基本单位,它由三种基本粒子组成:质子、中子和电子。质子和中子形成原子核,位于原子中心,核外的电子围绕着原子核运动。\n\n原子结构具有层次性。原子核中,质子带正电,中子不带电(中性)。原子核非常小且致密,占据了原子总质量的绝大部分。电子带负电,通常围绕核运动,形成若干层次,称为壳层或电子层。电子数量与质子数量相等,使原子呈电中性。\n\n电子在每个壳层中都呈规律分布,并且不同壳层所能容纳的电子数也不同。在最里面的壳层一般只能容纳2个电子,其次一层最多可容纳8个电子,再往外的壳层可容纳的电子数逐层递增。\n\n原子核主要受到两种相互作用力的影响:强力和电磁力。强力的作用范围非常小,主要限制在原子核内,具有极强的吸引作用,使核子(质子和中子)紧密结合在一起。电磁力的作用范围较大,主要通过核外的电子与原子核相互作用,发挥作用。\n\n这就是原子的基本结构。原子内部结构复杂多样,不同元素的原子核中质子、中子数量不同,核外电子排布分布也不同,形成了丰富多彩的化学世界。"
  },

```

## 训练

训练需要使用Llama-Factory包,需要将本仓库中Llama-Factory的data数据替换git clone的Llama-Factory的data文件,替换后只保留git clone的Llama-Factory文件夹。

根据实际情况在脚本中修改权重相关路径

### 单机多卡

```
sh ds_zero3_work_dtk.sh
```

## 推理

### 单机单卡

```
sh Xuanyuan_inference.sh
```
## result

### 问答

<div align=center>
    <img src="./imgs/result.png"/>
</div>


### 精度
测试数据: [fingpt_sentiment](./LLaMA-Factory/data/fingpt_sentiment.json)  ,使用的加速卡:K100。

| device | train_loss | eval_loss
| :------: | :------: |  :------: | 
| K100 | 0.7087 | 0.1019 | 

## 应用场景

### 算法类别
`问答`

### 热点应用行业
`金融,教育`

## 预训练权重
- [Duxiaoman-DI/XuanYuan-13B-Chat](https://modelscope.cn/models/Duxiaoman-DI/XuanYuan-13B-Chat/files)

预训练权重快速下载中心:[SCNet AIModels](http://113.200.138.88:18080/aimodels)
项目中的预训练权重可从快速下载通道下载: [XuanYuan-13B-Chat](http://113.200.138.88:18080/aimodels/XuanYuan-13B-Chat)

## 源码仓库及问题反馈
- https://developer.hpccube.com/codes/modelzoo/xuanyuan_pytorch

## 参考资料
- [轩辕大模型-魔搭](https://modelscope.cn/models/Duxiaoman-DI/XuanYuan-13B-Chat/summary)
- [Xuanyuan github](https://github.com/Duxiaoman-DI/XuanYuan)