README_CN.md 3.4 KB
Newer Older
M
MRXLT 已提交
1 2
## 语义理解预测服务

3 4
(简体中文|[English](./README.md))

M
MRXLT 已提交
5 6
示例中采用BERT模型进行语义理解预测,将文本表示为向量的形式,可以用来做进一步的分析和预测。

7
若使用python的版本为3.X, 将以下命令中的pip 替换为pip3, python替换为python3.
M
MRXLT 已提交
8
### 获取模型
9
方法1:
M
MRXLT 已提交
10
示例中采用[Paddlehub](https://github.com/PaddlePaddle/PaddleHub)中的[BERT中文模型](https://www.paddlepaddle.org.cn/hubdetail?name=bert_chinese_L-12_H-768_A-12&en_category=SemanticModel)
M
fix doc  
MRXLT 已提交
11 12
请先安装paddlehub
```
W
wangjiawei04 已提交
13
pip3 install paddlehub
M
fix doc  
MRXLT 已提交
14
```
M
MRXLT 已提交
15 16
执行
```
W
wangjiawei04 已提交
17
python3 prepare_model.py 128
18 19 20 21
```
参数128表示BERT模型中的max_seq_len,即预处理后的样本长度。
生成server端配置文件与模型文件,存放在bert_seq128_model文件夹。
生成client端配置文件,存放在bert_seq128_client文件夹。
B
barrierye 已提交
22

23
方法2:
24 25 26 27
您也可以从bos上直接下载上述模型(max_seq_len=128),解压后server端配置文件与模型文件存放在bert_chinese_L-12_H-768_A-12_model文件夹,client端配置文件存放在bert_chinese_L-12_H-768_A-12_client文件夹:
```shell
wget https://paddle-serving.bj.bcebos.com/paddle_hub_models/text/SemanticModel/bert_chinese_L-12_H-768_A-12.tar.gz
tar -xzf bert_chinese_L-12_H-768_A-12.tar.gz
W
wangjiawei04 已提交
28 29
mv bert_chinese_L-12_H-768_A-12_model bert_seq128_model
mv bert_chinese_L-12_H-768_A-12_client bert_seq128_client
M
MRXLT 已提交
30
```
31 32 33
若使用bert_chinese_L-12_H-768_A-12_model模型,将下面命令中的bert_seq128_model字段替换为bert_chinese_L-12_H-768_A-12_model,bert_seq128_client字段替换为bert_chinese_L-12_H-768_A-12_client.


34

M
MRXLT 已提交
35

M
MRXLT 已提交
36 37 38 39 40 41 42 43
### 获取词典和样例数据

```
sh get_data.sh
```
脚本将下载中文词典vocab.txt和中文样例数据data-c.txt

### 启动RPC预测服务
44
启动cpu预测服务,执行
M
MRXLT 已提交
45
```
46
python -m paddle_serving_server.serve --model bert_seq128_model/ --port 9292  #启动cpu预测服务
47

M
MRXLT 已提交
48
```
49
或者,启动gpu预测服务,执行
M
MRXLT 已提交
50
```
Z
zhangjun 已提交
51
python -m paddle_serving_server.serve --model bert_seq128_model/ --port 9292 --gpu_ids 0 #在gpu 0上启动gpu预测服务
52

M
MRXLT 已提交
53 54 55 56
```

### 执行预测

M
MRXLT 已提交
57 58 59 60 61
执行预测前需要安装paddle_serving_app,模块中提供了BERT模型的数据预处理方法。
```
pip install paddle_serving_app
```
执行
M
MRXLT 已提交
62
```
63
head data-c.txt | python bert_client.py --model bert_seq128_client/serving_client_conf.prototxt
64

M
MRXLT 已提交
65
```
M
MRXLT 已提交
66
启动client读取data-c.txt中的数据进行预测,预测结果为文本的向量表示(由于数据较多,脚本中没有将输出进行打印),server端的地址在脚本中修改。
M
MRXLT 已提交
67

68 69


M
MRXLT 已提交
70
### 启动HTTP预测服务
71 72
启动cpu HTTP预测服务,执行
```
T
TeslaZhao 已提交
73
python bert_web_service.py bert_seq128_model/ 9292 #启动CPU预测服务
74 75 76 77

```

或者,启动gpu HTTP预测服务,执行
M
MRXLT 已提交
78 79 80 81 82
```
 export CUDA_VISIBLE_DEVICES=0,1
```
通过环境变量指定gpu预测服务使用的gpu,示例中指定索引为0和1的两块gpu
```
83
python bert_web_service_gpu.py bert_seq128_model/ 9292 #启动gpu预测服务
M
MRXLT 已提交
84
```
85

M
MRXLT 已提交
86
### 执行预测
M
MRXLT 已提交
87 88

```
M
MRXLT 已提交
89
curl -H "Content-Type:application/json" -X POST -d '{"feed":[{"words": "hello"}], "fetch":["pooled_output"]}' http://127.0.0.1:9292/bert/prediction
M
MRXLT 已提交
90
```
H
HexToString 已提交
91 92 93 94 95 96

## 性能测试
``` shell
bash benchmark.sh bert_seq128_model bert_seq128_client
```
性能测试的日志文件为profile_log_bert_seq128_model
H
HexToString 已提交
97

H
HexToString 已提交
98
如需修改性能测试用例的参数,请修改benchmark.sh中的配置信息。
H
HexToString 已提交
99 100

注意:bert_seq128_model和bert_seq128_client路径后不要加'/'符号,示例需要在GPU机器上运行。