README_CN.md 2.6 KB
Newer Older
J
Jiawei Wang 已提交
1
## 带稀疏参数索引服务的CTR预测服务
J
Jiawei Wang 已提交
2 3
(简体中文|[English](./README.md))

J
Jiawei Wang 已提交
4 5 6 7 8 9 10 11 12 13
### 编译源代码
在本项目的根目录下,执行
```
mkdir build_server
cd build_server
cmake -DPYTHON_INCLUDE_DIR=$PYTHONROOT/include/python2.7/  -DPYTHON_LIBRARIES=$PYTHONROOT/lib/libpython2.7.so  -DPYTHON_EXECUTABLE=$PYTHONROOT/bin/python  -DCLIENT_ONLY=OFF ..
make -j10
make install -j10
```

J
Jiawei Wang 已提交
14
### 获取样例数据
J
Jiawei Wang 已提交
15
进入目录 `python/examples/criteo_ctr_with_cube`
J
Jiawei Wang 已提交
16 17 18 19
```
sh get_data.sh
```

J
Jiawei Wang 已提交
20
### 下载模型和稀疏参数序列文件
J
Jiawei Wang 已提交
21
```
J
Jiawei Wang 已提交
22 23 24 25 26
wget https://paddle-serving.bj.bcebos.com/unittest/ctr_cube_unittest.tar.gz"
tar xf ctr_cube_unittest.tar.gz
mv models/ctr_client_conf ./
mv models/ctr_serving_model_kv ./
mv models/data ./cube/
J
Jiawei Wang 已提交
27 28 29
```
执行脚本后会在当前目录生成ctr_server_model和ctr_client_config文件夹,以及ctr_server_model_kv, ctr_client_conf_kv。

J
Jiawei Wang 已提交
30
### 启动稀疏参数索引服务
J
Jiawei Wang 已提交
31 32 33 34 35 36
```
cp ../../../build_server/core/predictor/seq_generator seq_generator
cp ../../../build_server/output/bin/cube* ./cube/
sh cube_prepare.sh &
```

J
Jiawei Wang 已提交
37
此处,模型当中的稀疏参数会被存放在稀疏参数索引服务Cube当中,关于稀疏参数索引服务Cube的介绍,请阅读[稀疏参数索引服务Cube单机版使用指南](../../../doc/CUBE_LOCAL_CN.md)
J
Jiawei Wang 已提交
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79

### 启动RPC预测服务,服务端线程数为4(可在test_server.py配置)

```
python test_server.py ctr_serving_model_kv 
```

### 执行预测

```
python test_client.py ctr_client_conf/serving_client_conf.prototxt ./raw_data
```

### Benchmark

设备 :Intel(R) Xeon(R) CPU 6148 @ 2.40GHz 

模型 :[Criteo CTR](https://github.com/PaddlePaddle/Serving/blob/develop/python/examples/ctr_criteo_with_cube/network_conf.py)

server core/thread num : 4/8

执行
```
bash benchmark.sh
```
客户端每个线程会发送1000个batch

| client  thread num | prepro | client infer | op0    | op1   | op2    | postpro | avg_latency | qps   |
| ------------------ | ------ | ------------ | ------ | ----- | ------ | ------- | ----- | ----- |
| 1                  | 0.035  | 1.596        | 0.021  | 0.518 | 0.0024 | 0.0025  | 6.774 | 147.7 |
| 2                  | 0.034  | 1.780        | 0.027  | 0.463 | 0.0020 | 0.0023  | 6.931 | 288.3 |
| 4                  | 0.038  | 2.954        | 0.025  | 0.455 | 0.0019 | 0.0027  | 8.378 | 477.5 |
| 8                  | 0.044  | 8.230        | 0.028  | 0.464 | 0.0023 | 0.0034  | 14.191 | 563.8 |
| 16                 | 0.048  | 21.037       | 0.028  | 0.455 | 0.0025 | 0.0041  | 27.236 | 587.5 |

平均每个线程耗时图如下

![avg cost](../../../doc/criteo-cube-benchmark-avgcost.png)

每个线程QPS耗时如下

![qps](../../../doc/criteo-cube-benchmark-qps.png)