README.md 2.95 KB
Newer Older
1
2
3
4
5
6
7
8
# Generative Pre-Training2(GPT2)

## 模型介绍
GPT2模型:第二代生成式预训练模型(Generative Pre-Training2)。

## 模型结构
GPT2主要使用Transformer的Decoder模块为特征提取器,并对Transformer Decoder进行了一些改动,原本的Decoder包含了两个Multi-Head Attention结构,而GPT2只保留了Mask Multi-Head Attention。

9
## 构建安装
10
11
12
13

在光源可拉取推理的docker镜像,GPT2模型推理的镜像如下: 

```python
14
docker pull image.sourcefind.cn:5000/dcu/admin/base/custom:ort1.14.0_migraphx3.0.0-dtk22.10.1
15
16
```

17
### 安装Opencv依赖
18
19

```python
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
cd <path_to_migraphx_samples>
sh ./3rdParty/InstallOpenCVDependences.sh
```

### 修改CMakeLists.txt

- 如果使用ubuntu系统,需要修改CMakeLists.txt中依赖库路径:
  将"${CMAKE_CURRENT_SOURCE_DIR}/depend/lib64/"修改为"${CMAKE_CURRENT_SOURCE_DIR}/depend/lib/"

- **MIGraphX2.3.0及以上版本需要c++17**


### 安装OpenCV并构建工程

```
rbuild build -d depend
```

### 设置环境变量

将依赖库依赖加入环境变量LD_LIBRARY_PATH,在~/.bashrc中添加如下语句:

**Centos**:

```
export LD_LIBRARY_PATH=<path_to_migraphx_samples>/depend/lib64/:$LD_LIBRARY_PATH
```

**Ubuntu**:

```
export LD_LIBRARY_PATH=<path_to_migraphx_samples>/depend/lib/:$LD_LIBRARY_PATH
```

然后执行:

```
source ~/.bashrc
58
59
```

60
61
62
63
64
## 推理

本次采用GPT-2模型进行诗词生成任务,模型文件下载链接:https://pan.baidu.com/s/1KWeoUuakCZ5dualK69qCcw , 提取码:4pmh ,并将GPT2_shici.onnx模型文件保存在model文件夹下。下面介绍如何运行python代码和C++代码示例,具体推理代码解析,在Doc目录中有详细说明。

### python版本推理
liucong's avatar
liucong committed
65

66
67
68
69
70
71
72
1.参考《MIGraphX教程》中的安装方法安装MIGraphX并设置好PYTHONPATH

2.安装依赖:

```python
# 进入migraphx samples工程根目录
cd <path_to_migraphx_samples> 
73

74
75
# 进入示例程序目录
cd Python/NLP/GPT2
76

77
78
79
# 安装依赖
pip install -r requirements.txt
```
80

81
3.设置环境变量:
82
83
84
85

```python
# 设置动态shape模式
export MIGRAPHX_DYNAMIC_SHAPE=1
86
87
88
```

4.在Python/NLP/GPT2目录下执行如下命令运行该示例程序:
89

90
```python
91
92
93
python gpt2.py
```

94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
如下所示,采用交互式界面,通过输入开头诗词,GPT2模型可以生成后续的诗句。

<img src="./Doc/Images/GPT_03.png" style="zoom:80%;" align=middle>

### C++版本推理

切换到build目录中,执行如下命令:

```python
cd ./build/
./MIGraphX_Samples
```

根据提示选择运行GPT2模型的示例程序

```python
# 设置动态shape模式
export MIGRAPHX_DYNAMIC_SHAPE=1

# 运行示例
./MIGraphX_Samples 0
```

如下所示,采用交互式界面,通过输入开头诗词,GPT2模型可以推理出后续的诗句。
118

119
<img src="./Doc/Images/GPT_04.png" style="zoom:90%;" align=middle>
120
121
122
123
124
125
126
127
128
129

## 历史版本

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

## 参考资料

https://github.com/yangjianxin1/GPT2-chitchat

https://github.com/Morizeyao/GPT2-Chinese