README.md 2.4 KB
Newer Older
J
Jiawei Wang 已提交
1
## Criteo CTR with Sparse Parameter Indexing Service
J
Jiawei Wang 已提交
2

J
Jiawei Wang 已提交
3
([简体中文](./README_CN.md)|English)
J
Jiawei Wang 已提交
4

J
Jiawei Wang 已提交
5 6 7 8 9 10 11 12 13 14
### Compile Source Code
in the root directory of this git project
```
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 已提交
15
### Get Sample Dataset
W
wangjiawei04 已提交
16

J
Jiawei Wang 已提交
17
go to directory `python/examples/criteo_ctr_with_cube`
W
wangjiawei04 已提交
18 19 20 21
```
sh get_data.sh
```

J
Jiawei Wang 已提交
22
### Train and Save Model
W
wangjiawei04 已提交
23 24 25
```
python local_train.py
```
J
Jiawei Wang 已提交
26
the trained model will be in ./ctr_server_model and ./ctr_client_config, and ctr_server_model_kv, ctr_client_conf_kv。
W
wangjiawei04 已提交
27

J
Jiawei Wang 已提交
28
### Start Sparse Parameter Indexing Service
W
wangjiawei04 已提交
29 30 31 32 33 34
```
cp ../../../build_server/core/predictor/seq_generator seq_generator
cp ../../../build_server/output/bin/cube* ./cube/
sh cube_prepare.sh &
```

J
Jiawei Wang 已提交
35
Here, the sparse parameter is loaded by cube sparse parameter indexing service Cube,for more details please read [Cube: Sparse Parameter Indexing Service (Local Mode)](../../../doc/CUBE_LOCAL.md)
J
Jiawei Wang 已提交
36

J
Jiawei Wang 已提交
37
### Start RPC Predictor, the number of serving thread is 4(configurable in test_server.py)
W
wangjiawei04 已提交
38 39 40 41 42

```
python test_server.py ctr_serving_model_kv 
```

J
Jiawei Wang 已提交
43
### Run Prediction
W
wangjiawei04 已提交
44 45 46 47 48 49 50

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

### Benchmark

J
Jiawei Wang 已提交
51
CPU :Intel(R) Xeon(R) CPU 6148 @ 2.40GHz 
W
wangjiawei04 已提交
52

J
Jiawei Wang 已提交
53
Model :[Criteo CTR](https://github.com/PaddlePaddle/Serving/blob/develop/python/examples/ctr_criteo_with_cube/network_conf.py)
W
wangjiawei04 已提交
54

J
Jiawei Wang 已提交
55
server core/thread num : 4/8
W
wangjiawei04 已提交
56

J
Jiawei Wang 已提交
57
Run
W
wangjiawei04 已提交
58 59 60
```
bash benchmark.sh
```
J
Jiawei Wang 已提交
61
1000 batches will be sent by every client
W
wangjiawei04 已提交
62

63
| client  thread num | prepro | client infer | op0    | op1   | op2    | postpro | avg_latency | qps   |
W
wangjiawei04 已提交
64
| ------------------ | ------ | ------------ | ------ | ----- | ------ | ------- | ----- | ----- |
J
Jiawei Wang 已提交
65 66 67 68 69
| 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 |
W
wangjiawei04 已提交
70

J
Jiawei Wang 已提交
71
the average latency of threads
W
wangjiawei04 已提交
72 73 74

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

J
Jiawei Wang 已提交
75
The QPS is 
W
wangjiawei04 已提交
76 77

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