"src/vscode:/vscode.git/clone" did not exist on "71f4230a8bec1cfb22ed76b3e48b448d282d67e1"
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
# 如果需要测试服务的并发性能,可以使用openai-client.py,修改其中的prompt和concurrencys变量值后执行:
python openai-client.py
```


## result

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

### 精度



## 应用场景

### 算法类别

`对话问答`

### 热点应用行业

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

## 源码仓库及问题反馈

chenzk's avatar
chenzk committed
143
https://developer.sourcefind.cn/codes/modelzoo/chatglm3_fastllm
zhouxiang's avatar
zhouxiang committed
144
145
146
147

## 参考资料

https://github.com/THUDM/ChatGLM3