README.md 3.83 KB
Newer Older
dcuai's avatar
dcuai committed
1
# Qwen-7B
zhouxiang's avatar
zhouxiang committed
2
3
4
5
6
7
8
9

## 论文

`Qwen-VL: A Frontier Large Vision-Language Model with Versatile Abilities`

https://arxiv.org/pdf/2308.12966.pdf

## 模型结构
zhouxiang's avatar
zhouxiang committed
10
11
12

通义千问-7B(Qwen-7B) 是阿里云研发的通义千问大模型系列的70亿参数规模的模型。Qwen-7B是基于Transformer的大语言模型, 在超大规模的预训练数据上进行训练得到。预训练数据类型多样,覆盖广泛,包括大量网络文本、专业书籍、代码等。同时,在Qwen-7B的基础上,使用对齐机制打造了基于大语言模型的AI助手Qwen-7B-Chat。

13
本项目主要针对Qwen-7B-Chat在DCU平台的推理性能优化,达到DCU平台较快的对话效果。
zhouxiang's avatar
zhouxiang committed
14

zhouxiang's avatar
zhouxiang committed
15
![qwen](doc/transformer.jpg)
zhouxiang's avatar
zhouxiang committed
16
17
18
19



## 算法原理
zhouxiang's avatar
zhouxiang committed
20
21
22

Qwen-7B的构建采用了类似LLaMA的架构。与标准transformer的主要差异有:1)使用非连接嵌入、2)使用旋转位置嵌入、3)在注意力中除了QKV外不使用偏置、4)使用RMSNorm代替LayerNorm、5)使用SwiGLU代替ReLU、以及6)采用快速注意力来加速训练。该模型共有32层,嵌入维度为4096,注意力头数为32。

zhouxiang's avatar
zhouxiang committed
23
![qwen](doc/qwen.png)
zhouxiang's avatar
zhouxiang committed
24
25


zhouxiang's avatar
zhouxiang committed
26
## 环境配置
zhouxiang's avatar
zhouxiang committed
27

zhouxiang's avatar
zhouxiang committed
28
### 环境准备
zhouxiang's avatar
zhouxiang committed
29
30
31
32

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

```
zhouxiang's avatar
zhouxiang committed
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:1.13.1-centos7.6-dtk-23.04-py38-latest
```

### 容器启动

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

```
# <container_name> 自定义容器名
# <project_path> 当前工程所在路径
docker run -it --name=<container_name> -v <project_path>:/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/pytorch:1.13.1-centos7.6-dtk-23.04-py38-latest /bin/bash
```

### 加载环境

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

```
source /opt/dtk-23.04/cuda/env.sh
zhouxiang's avatar
zhouxiang committed
52
53
54
55
56
57
58
```

### 安装方法

```
#进入本工程目录
cd package
59
python setup.py install
zhouxiang's avatar
zhouxiang committed
60
61
```

zhouxiang's avatar
zhouxiang committed
62
63
64
65
66
67
68
69
## 数据集

## 推理

### 原版模型下载

[原版Qwen模型下载](https://huggingface.co/Qwen/Qwen-7B-Chat/tree/main)

zhouxiang's avatar
zhouxiang committed
70
### 模型转换
zhouxiang's avatar
zhouxiang committed
71
72

```
zhouxiang's avatar
zhouxiang committed
73
74
75
# 为了精简镜像,光源镜像中未包含模型推理时不需要的原版qwen模型运行所需要的依赖,
# 如果有现成的原版qwen-7b的运行环境中,可以将模型转换脚本qwen2flm.py移动到原版qwen-7b的运行环境中,
# 也可以通过执行pip install -r requirements.txt安装模型转换所需依赖;
zhouxiang's avatar
zhouxiang committed
76
# 如果使用已经下载完成的模型或者自己finetune的模型需要修改qwen2flm.py文件中创建tokenizer, model时的模型存放路径
zhouxiang's avatar
zhouxiang committed
77
# 在本工程目录下执行:
zhouxiang's avatar
zhouxiang committed
78
79
80
81
82
python3 qwen2flm.py qwen-7b-fp16.bin float16 # 导出fp16模型,参数为导出的模型路径
python3 qwen2flm.py qwen-7b-int8.bin int8 #    导出int8模型,参数为导出的模型路径
```


zhouxiang's avatar
zhouxiang committed
83
### 模型推理
zhouxiang's avatar
zhouxiang committed
84
85
86
87
88

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

89
90
91
92
# batch推理示例程序
python cli_demo_batch.py -p qwen-7b-fp16.bin

# 简易webui,需要先安装streamlit-chat,并且需要在容器启动时映射streamlit的端口到外部网络
zhouxiang's avatar
zhouxiang committed
93
streamlit run web_demo.py qwen-7b-int8.bin 
zhouxiang's avatar
zhouxiang committed
94
95
96
97

# 可以使用benchmark程序进行性能测试,根据./benchmark -h描述进行配置和测试
# 测试示例如下:
./benchmark -p qwen-7b-int8.bin -f prompts/beijing.txt -b 1
98
./benchmark -p qwen-7b-int8.bin -f prompts/beijing.txt -b 8
zhouxiang's avatar
zhouxiang committed
99
100
# 如果benchmark没有可执行权限,需要手动添加后执行性能测试
chmod +x benchmark
zhouxiang's avatar
zhouxiang committed
101
102
```

zhouxiang's avatar
zhouxiang committed
103
## result
zhouxiang's avatar
zhouxiang committed
104

zhouxiang's avatar
zhouxiang committed
105
![qwen推理](doc/qwen推理.gif)
zhouxiang's avatar
zhouxiang committed
106

zhouxiang's avatar
zhouxiang committed
107
108
109
110
### 精度



zhouxiang's avatar
zhouxiang committed
111
112
113
114
## 应用场景

### 算法类别

zhouxiang's avatar
zhouxiang committed
115
116
`对话问答`

zhouxiang's avatar
zhouxiang committed
117
118
119

### 热点应用行业

zhouxiang's avatar
zhouxiang committed
120
121
`医疗,科研,金融,教育`

zhouxiang's avatar
zhouxiang committed
122

zhouxiang's avatar
zhouxiang committed
123
124
## 源码仓库及问题反馈

chenzk's avatar
chenzk committed
125
https://developer.sourcefind.cn/codes/modelzoo/qwen-7b_fastllm
zhouxiang's avatar
zhouxiang committed
126

127
## 参考资料
zhouxiang's avatar
zhouxiang committed
128
129

https://github.com/QwenLM/Qwen-7B