README.md 4.11 KB
Newer Older
dcuai's avatar
dcuai committed
1
# ChatGLM-6B
2

zhouxiang's avatar
zhouxiang committed
3
## 论文
zhouxiang's avatar
zhouxiang committed
4

zhouxiang's avatar
zhouxiang committed
5
`GLM: General Language Model Pretraining with Autoregressive Blank Infilling`
zhouxiang's avatar
zhouxiang committed
6

zhouxiang's avatar
zhouxiang committed
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
- [https://arxiv.org/abs/2103.10360](https://arxiv.org/abs/2103.10360)

## 模型结构

ChatGLM-6B 是清华大学开源的开源的、支持中英双语的对话语言模型,基于 [General Language Model (GLM)](https://github.com/THUDM/GLM) 架构,具有 62 亿参数。ChatGLM-6B 使用了和 ChatGPT 相似的技术,针对中文问答和对话进行了优化。经过约 1T 标识符的中英双语训练,辅以监督微调、反馈自助、人类反馈强化学习等技术的加持,62 亿参数的 ChatGLM-6B 已经能生成相当符合人类偏好的回答。ChatGLM-6B采用Transformer模型结构:

<div align="center">
<img src="doc/transformers.jpg" width="300" height="400">
</div>



以下是ChatGLM-6B的主要网络参数配置:


zhouxiang's avatar
zhouxiang committed
22
23
| 模型名称   | 隐含层维度 | 层数 | 头数 | 词表大小 | 位置编码 | 最大序列长度 |
| ---------- | ---------- | ---- | ---- | -------- | -------- | ------------ |
zhouxiang's avatar
zhouxiang committed
24
| ChatGLM-6B | 4096       | 28   | 32   | 130528   | RoPE     | 2048         |
zhouxiang's avatar
zhouxiang committed
25
26
27
28
29
30
31
32

## 算法原理

ChatGLM-6B基于GLM架构开发。GLM是一种基于Transformer的语言模型,以自回归空白填充为训练目标, 同时具备自回归和自编码能力。

<div align="center">
<img src="doc/GLM.png" width="550" height="200">
</div>
33
34
本项目主要针对ChatGLM-6B推理性能优化,达到DCU平台较快的对话效果

zhouxiang's avatar
zhouxiang committed
35
## 环境配置
36

zhouxiang's avatar
zhouxiang committed
37
### 环境准备
38

zhouxiang's avatar
zhouxiang committed
39
在光源可拉取推理的docker镜像,拉取方式如下:
40

zhouxiang's avatar
zhouxiang committed
41
```
42
docker pull image.sourcefind.cn:5000/dcu/admin/base/custom:glm-ft-v1.0
43
44
```

zhouxiang's avatar
zhouxiang committed
45
46
47
48
49
50
51
### 容器启动

模型推理容器启动命令参考如下,用户根据需要修改:

```
# <container_name> 自定义容器名
# <project_path> 当前工程所在路径
52
docker run -it --name=<container_name> -v <project_path>:/work -w /work --device=/dev/kfd --device=/dev/dri --security-opt seccomp=unconfined --cap-add=SYS_PTRACE --shm-size=16G --group-add 39 image.sourcefind.cn:5000/dcu/admin/base/custom:glm-ft-v1.0 /bin/bash
zhouxiang's avatar
zhouxiang committed
53
54
```

55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
### 编译方法

```
mkdir build
cd build
cmake ..
make -j4
```

编译后会在build目录下生成:

1. main: 示例程序

2. quant: 量化程序

3. benchmark: 性能测试程序

zhouxiang's avatar
zhouxiang committed
72
73
74
75
## 数据集



zhouxiang's avatar
zhouxiang committed
76
77
## 推理

zhouxiang's avatar
zhouxiang committed
78
79
80
81
### 原版模型下载

[原版模型下载]([THUDM/chatglm-6b · Hugging Face](https://huggingface.co/THUDM/chatglm-6b))

luopl's avatar
luopl committed
82

83
84
85
### ChatGLM原版模型转换

```
86
# 将模型转换脚本tools/chatglm_export.py移动到python的ChatGLM-6B环境中,也可以使用"pip3 install -r requirements.txt"命令根据工程自带的requirements.txt安装模型转换时需要的相关依赖
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
# 如果使用自己finetune的模型可能需要修改chatglm_export.py文件中创建tokenizer, model的代码
# 执行:
python3 chatglm_export.py ./chatglm-6b.bin # 导出浮点模型,参数为导出的模型路径

# 第二步将导出的模型进行低比特量化,将第一步导出的模型文件放在容器中,以/home/model/为例
# 在容器内执行,其中-p参数指定未量化的模型存放路径,-o指定量化后的模型保存路径
cd build
./quant -p /home/model/chatglm-6b.bin -o chatglm-6b-fp16.bin -b 16 #导出fp16模型
./quant -p /home/model/chatglm-6b.bin -o chatglm-6b-int8.bin -b 8 #导出int8模型
```

### 运行示例程序

```
./main -h 可以查看具体参数信息,以下是一些简单示例:
```

### 运行ChatGLM-6B模型实例

```
./main -p chatglm-6b-int8.bin
```

### 推理性能测试

可以使用benchmark程序进行测速,根据./benchmark -h描述进行配置和测试,不同配置、不同输入,推理速度也会有一些差别
```
./benchmark -p ~/chatglm-6b-int8.bin -f ../benchmark/prompts/beijing.txt -b 1
./benchmark -p ~/chatglm-6b-fp16.bin -f ../benchmark/prompts/hello.txt -b 512 -l 18
```

zhouxiang's avatar
zhouxiang committed
118
## result
zhouxiang's avatar
zhouxiang committed
119
120
121

![chatglm6b推理](doc/chatglm6b.gif)

zhouxiang's avatar
zhouxiang committed
122
123
124
125
### 精度



zhouxiang's avatar
zhouxiang committed
126
127
128
129
## 应用场景

### 算法类别

zhouxiang's avatar
更新  
zhouxiang committed
130
`对话问答`
zhouxiang's avatar
zhouxiang committed
131
132
133

### 热点应用行业

zhouxiang's avatar
zhouxiang committed
134
`医疗,科研,金融,教育`
zhouxiang's avatar
zhouxiang committed
135

136
137
## 源码仓库及问题反馈

chenzk's avatar
chenzk committed
138
https://developer.sourcefind.cn/codes/modelzoo/chatglm6b_fastllm
139

zhouxiang's avatar
zhouxiang committed
140
## 参考资料
141
142

https://github.com/THUDM/ChatGLM-6B