4
4
5
5
``` text
6
6
.
7
- ├── sample/ # 基于 Transformer 机器翻译使用样例(beam search)
8
- ├── src/ # 自定义 OP C++ CUDA 代码
9
- └── transformer/ # Python API 封装脚本
7
+ ├── faster_transformer/ # 基于自定义 op Faster Transformer 子路径
8
+ ├── sample/ # 基于 Faster Transformer 使用样例
9
+ ├── src/ # 自定义 OP C++ CUDA 代码
10
+ └── transformer/ # Python API 封装脚本
11
+ └── patches # 自定义 op 第三方库自定义补丁代码
10
12
```
11
13
12
14
## 使用环境说明
@@ -95,7 +97,7 @@ transformer = FasterTransformer(
95
97
use_fp16_decoding = args.use_fp16_decoding)
96
98
```
97
99
98
- 更详细的例子可以参考 ` ./sample/decoding_sample.py ` 以及 ` ./sample/encoder_decoding_sample.py ` ,我们提供了更详细用例。
100
+ 更详细的例子可以参考 ` ./faster_transformer/ sample/decoding_sample.py ` 以及 ` ./sample/encoder_decoding_sample.py ` ,我们提供了更详细用例。
99
101
100
102
#### 执行 Transformer decoding on PaddlePaddle
101
103
@@ -105,7 +107,7 @@ transformer = FasterTransformer(
105
107
export CUDA_VISIBLE_DEVICES=0
106
108
export FLAGS_fraction_of_gpu_memory_to_use=0.1
107
109
./build/third-party/build/bin/decoding_gemm 32 4 8 64 30000 32 512 0
108
- python sample/decoding_sample.py --config ./sample/config/decoding.sample.yaml --decoding_lib ./build/lib/libdecoding_op.so
110
+ python ./faster_transformer/ sample/decoding_sample.py --config ./faster_transformer /sample/config/decoding.sample.yaml --decoding_lib ./build/lib/libdecoding_op.so
109
111
```
110
112
111
113
使用 PaddlePaddle 仅执行 decoding 测试(float16):
@@ -115,7 +117,7 @@ python sample/decoding_sample.py --config ./sample/config/decoding.sample.yaml -
115
117
export CUDA_VISIBLE_DEVICES=0
116
118
export FLAGS_fraction_of_gpu_memory_to_use=0.1
117
119
./build/third-party/build/bin/decoding_gemm 32 4 8 64 30000 32 512 1
118
- python sample/decoding_sample.py --config ./sample/config/decoding.sample.yaml --decoding_lib ./build/lib/libdecoding_op.so --use_fp16_decoding
120
+ python ./faster_transformer/ sample/decoding_sample.py --config ./faster_transformer /sample/config/decoding.sample.yaml --decoding_lib ./build/lib/libdecoding_op.so --use_fp16_decoding
119
121
```
120
122
121
123
其中,` decoding_gemm ` 不同参数的意义可以参考 [ FasterTransformer 文档] ( https://github.com/NVIDIA/FasterTransformer/tree/v3.1#execute-the-decoderdecoding-demos ) 。
@@ -151,15 +153,15 @@ gpt = FasterGPT(
151
153
152
154
目前,GPT-2 的例子仅支持 ` batch size ` 为 ` 1 ` 或是 batch 内输入的序列长度相等的情况。并且,仅支持 topk-sampling 和 topp-sampling,不支持 beam-search。
153
155
154
- 更详细的例子可以参考 ` ./sample/gpt_sample.py ` ,我们提供了更详细用例。
156
+ 更详细的例子可以参考 ` ./faster_transformer/ sample/gpt_sample.py ` ,我们提供了更详细用例。
155
157
156
158
#### 执行 GPT-2 decoding on PaddlePaddle
157
159
158
160
使用 PaddlePaddle 仅执行 decoding 测试(float32):
159
161
160
162
``` sh
161
163
export CUDA_VISIBLE_DEVICES=0
162
- python sample/gpt_sample.py --model_name_or_path gpt2-medium-en --decoding_lib ./build/lib/libdecoding_op.so --batch_size 1 --topk 4 --topp 0.0 --max_out_len 32 --start_token " <|endoftext|>" --end_token " <|endoftext|>" --temperature 1.0
164
+ python ./faster_transformer/ sample/gpt_sample.py --model_name_or_path gpt2-medium-en --decoding_lib ./build/lib/libdecoding_op.so --batch_size 1 --topk 4 --topp 0.0 --max_out_len 32 --start_token " <|endoftext|>" --end_token " <|endoftext|>" --temperature 1.0
163
165
```
164
166
165
167
其中,各个选项的意义如下:
@@ -204,7 +206,7 @@ cd PaddleNLP/paddlenlp/ops/
204
206
``` sh
205
207
mkdir build
206
208
cd build/
207
- cmake .. -DSM=xx -DCMAKE_BUILD_TYPE=Release -DPADDLE_LIB=/path/to/paddle_inference_lib/ -DDEMO=./demo/transformer_e2e.cc -DWITH_STATIC_LIB=OFF -DON_INFER=ON -DWITH_MKL=ON
209
+ cmake .. -DSM=xx -DCMAKE_BUILD_TYPE=Release -DPADDLE_LIB=/path/to/paddle_inference_lib/ -DDEMO=./faster_transformer/src/ demo/transformer_e2e.cc -DWITH_STATIC_LIB=OFF -DON_INFER=ON -DWITH_MKL=ON
208
210
make -j
209
211
cd ../
210
212
```
@@ -224,7 +226,7 @@ cd ../
224
226
└── threadpool/
225
227
└── version.txt
226
228
```
227
- * ` -DDEMO ` 说明预测库使用 demo 的位置。比如指定 -DDEMO=./demo/transformer_e2e.cc 或是 -DDEMO=./demo/gpt.cc。
229
+ * ` -DDEMO ` 说明预测库使用 demo 的位置。比如指定 -DDEMO=./faster_transformer/src/ demo/transformer_e2e.cc 或是 -DDEMO=./faster_transformer/src /demo/gpt.cc。
228
230
* ` -DWITH_GPT ` ,如果是编译 GPT 的预测库可执行文件,需要加上 ` -DWITH_GPT=ON ` 。
229
231
* ** 当使用预测库的自定义 op 的时候,请务必开启 ` -DON_INFER=ON ` 选项,否则,不会得到预测库的可执行文件。**
230
232
@@ -253,10 +255,10 @@ cd bin/
253
255
254
256
#### 执行 GPT decoding on PaddlePaddle
255
257
256
- 如果需要使用 Paddle Inference 预测库针对 GPT 进行预测,首先,需要导出预测模型,可以通过 ` sample/gpt_export_model_sample.py ` 脚本获取预测库用模型,执行方式如下所示:
258
+ 如果需要使用 Paddle Inference 预测库针对 GPT 进行预测,首先,需要导出预测模型,可以通过 ` ./faster_transformer/ sample/gpt_export_model_sample.py` 脚本获取预测库用模型,执行方式如下所示:
257
259
258
260
``` sh
259
- python sample/gpt_export_model_sample.py --model_name_or_path gpt2-medium-en --decoding_lib ./build/lib/libdecoding_op.so --batch_size 1 --topk 4 --topp 0.0 --max_out_len 32 --start_token " <|endoftext|>" --end_token " <|endoftext|>" --temperature 1.0 --inference_model_dir ./infer_model/
261
+ python ./faster_transformer/ sample/gpt_export_model_sample.py --model_name_or_path gpt2-medium-en --decoding_lib ./build/lib/libdecoding_op.so --topk 4 --topp 0.0 --max_out_len 32 --start_token " <|endoftext|>" --end_token " <|endoftext|>" --temperature 1.0 --inference_model_dir ./infer_model/
260
262
```
261
263
262
264
各个选项的意义与上文的 ` gpt_sample.py ` 的选项相同。额外新增一个 ` --inference_model_dir ` 选项用于指定保存的模型文件、词表等文件。若是使用的模型是 gpt2-medium-en,保存之后,` ./infer_model/ ` 目录下组织的结构如下:
0 commit comments