"tests/distributed/synced_batchnorm/unit_test.sh" did not exist on "e12c1ec300c6b7369e17ba733996eacefae462a9"
README.md 4.26 KB
Newer Older
zhouxiang's avatar
zhouxiang 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
# ChatGLM3

## 论文

`GLM: General Language Model Pretraining with Autoregressive Blank Infilling`

- [https://arxiv.org/abs/2103.10360](https://arxiv.org/abs/2103.10360)

## 模型结构

ChatGLM3 是智谱AI和清华大学 KEG 实验室联合发布的新一代对话预训练模型。ChatGLM3-6B 是 ChatGLM3 系列中的开源模型,在保留了前两代模型对话流畅、部署门槛低等众多优秀特性的基础上,ChatGLM3-6B 具有更强大的基础模型、更完整的功能支持、更全面的开源序列。

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




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


| 模型名称    | 隐含层维度 | 层数 | 头数 | 词表大小 | 位置编码 | 最大序列长度 |
| ----------- | ---------- | ---- | ---- | -------- | -------- | ------------ |
| ChatGLM3-6B | 4096       | 28   | 32   | 65024    | RoPE     | 8192         |

## 算法原理

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

<div align="center">
<img src="doc/GLM.png" width="550" height="200">
</div>

zhouxiang's avatar
zhouxiang committed
35
本项目主要针对ChatGLM3-6B推理性能优化,达到DCU平台较快的对话效果
zhouxiang's avatar
zhouxiang committed
36
37
38
39
40
41
42
43

## 环境配置

### 环境准备

在光源可拉取推理的docker镜像,拉取方式如下:

```
zhouxiang's avatar
zhouxiang committed
44
docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:2.1.0-centos7.6-dtk23.10.1-py38
zhouxiang's avatar
zhouxiang committed
45
46
47
48
49
50
51
52
53
```

### 容器启动

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

```
# <container_name> 自定义容器名
# <project_path> 当前工程所在路径
zhouxiang's avatar
zhouxiang committed
54
55
56
57
58
59
60
61
62
docker run -it --name=<container_name> -v <project_path>:/work -w /work --privileged -v /opt/hyhal:/opt/hyhal --device=/dev/kfd --device=/dev/dri --security-opt seccomp=unconfined --cap-add=SYS_PTRACE --ipc=host --network host --shm-size=16G --group-add video image.sourcefind.cn:5000/dcu/admin/base/pytorch:2.1.0-centos7.6-dtk23.10.1-py38 /bin/bash
```

### 加载环境

进入容器后执行如下命令,加载运行环境变量

```
source /opt/dtk/cuda/env.sh
zhouxiang's avatar
zhouxiang committed
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
```

### 安装方法

```
#进入本工程目录
cd package
python setup.py install
```

## 数据集



## 推理

### 原版模型下载
chenzk's avatar
chenzk committed
80
81
82
83
84
85
86
预训练权重快速下载中心:

[SCNet AIModels](https://www.scnet.cn/ui/aihub/datasets)

项目中的预训练权重快速通道下载地址:

[chatglm3-6b](https://www.scnet.cn/ui/aihub/models/icszy_zs_ai/ChatGLM-3-6B)
zhouxiang's avatar
zhouxiang committed
87

dengjb's avatar
update  
dengjb committed
88
89
官方下载地址:

zhouxiang's avatar
zhouxiang committed
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
[原版模型下载]([THUDM/chatglm3-6b · Hugging Face](https://huggingface.co/THUDM/chatglm3-6b))

### ChatGLM3原版模型转换

```
# 将模型转换脚本chatglm_export.py移动到原版ChatGLM3-6B环境中,也可以使用"pip3 install -r requirements.txt"命令根据工程自带的requirements.txt安装相关依赖
# 如果使用自己finetune的模型需要修改chatglm_export.py文件中创建tokenizer, model时的模型存放路径
# 执行:
python3 chatglm_export.py chatglm3-6b-fp16.bin float16 # 导出fp16模型,参数为导出的模型路径
python3 chatglm_export.py chatglm3-6b-int8.bin int8 #    导出int8模型,参数为导出的模型路径
```


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

```
# 命令行聊天程序,使用了模型创建以及流式对话效果
python cli_demo.py -p chatglm3-6b-fp16.bin

# 简易webui,需要先安装streamlit-chat,并且需要在容器启动时映射streamlit的端口到外部网络
streamlit run web_demo.py chatglm3-6b-fp16.bin 

# 按照openai接口实现的api_server的实例:
# 需要先进入api_server_demo,安装所需依赖:
cd api_server_demo
pip install -r requirements.txt
# 运行api_server服务,使用-p指定转换后的模型文件,客户端代码可以参考openai-client.py实现:
zhouxiang's avatar
zhouxiang committed
117
python fastllm-openai.py -p ../chatglm3-6b-fp16.bin 
zhouxiang's avatar
zhouxiang committed
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
# 如果需要测试服务的并发性能,可以使用openai-client.py,修改其中的prompt和concurrencys变量值后执行:
python openai-client.py
```


## result

![chatglm3-6b推理](doc/chatglm3-6b.gif)

### 精度



## 应用场景

### 算法类别

`对话问答`

### 热点应用行业

`医疗,科研,金融,教育`

## 源码仓库及问题反馈

https://developer.hpccube.com/codes/modelzoo/chatglm3_fastllm

## 参考资料

https://github.com/THUDM/ChatGLM3