Run_On_XPU_CN.md 5.3 KB
Newer Older
T
TeslaZhao 已提交
1 2
## Paddle Serving使用百度昆仑芯片部署
(简体中文|[English](./Run_On_XPU_EN.md))
Z
zhangjun 已提交
3

Z
zhangjun 已提交
4
Paddle Serving支持使用百度昆仑芯片进行预测部署。目前支持在百度昆仑芯片和arm服务器(如飞腾 FT-2000+/64), 或者百度昆仑芯片和Intel CPU服务器,上进行部署,后续完善对其他异构硬件服务器部署能力。
Z
zhangjun 已提交
5

T
TeslaZhao 已提交
6
## 安装Docker镜像
T
TeslaZhao 已提交
7 8
我们推荐使用docker部署Serving服务,在xpu环境下可参考[Docker镜像](Docker_Images_CN.md)文档安装xpu镜像,并进一步完成编译、安装和部署等任务。

T
TeslaZhao 已提交
9 10 11
## 编译、安装
基本环境配置可参考[该文档](Compile_CN.md)进行配置。下面以飞腾FT-2000+/64机器为例进行介绍。
### 编译
Z
zhangjun 已提交
12 13 14 15 16 17 18 19 20 21 22 23 24 25
* 编译server部分
```
cd Serving
mkdir -p server-build-arm && cd server-build-arm

cmake -DPYTHON_INCLUDE_DIR=/usr/include/python3.7m/ \
    -DPYTHON_LIBRARIES=/usr/lib64/libpython3.7m.so \
    -DPYTHON_EXECUTABLE=/usr/bin/python \
    -DWITH_PYTHON=ON \
    -DWITH_LITE=ON \
    -DWITH_XPU=ON \
    -DSERVER=ON ..
make -j10
```
Z
zhangjun 已提交
26
可以执行`make install`把目标产出放在`./output`目录下,cmake阶段需添加`-DCMAKE_INSTALL_PREFIX=./output`选项来指定存放路径。在支持AVX2指令集的Intel CPU平台上请指定```-DWITH_MKL=ON```编译选项。
Z
zhangjun 已提交
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
* 编译client部分
```
mkdir -p client-build-arm && cd client-build-arm

cmake -DPYTHON_INCLUDE_DIR=/usr/include/python3.7m/ \
    -DPYTHON_LIBRARIES=/usr/lib64/libpython3.7m.so \
    -DPYTHON_EXECUTABLE=/usr/bin/python \
    -DWITH_PYTHON=ON \
    -DWITH_LITE=ON \
    -DWITH_XPU=ON \
    -DCLIENT=ON ..

make -j10
```
* 编译app部分
```
cd Serving 
mkdir -p app-build-arm && cd app-build-arm

cmake -DPYTHON_INCLUDE_DIR=/usr/include/python3.7m/ \
    -DPYTHON_LIBRARIES=/usr/lib64/libpython3.7m.so \
    -DPYTHON_EXECUTABLE=/usr/bin/python \
    -DWITH_PYTHON=ON \
    -DWITH_LITE=ON \
    -DWITH_XPU=ON \
    -DAPP=ON ..

make -j10
```
T
TeslaZhao 已提交
56
### 安装wheel包
Z
zhangjun 已提交
57 58
以上编译步骤完成后,会在各自编译目录$build_dir/python/dist生成whl包,分别安装即可。例如server步骤,会在server-build-arm/python/dist目录下生成whl包, 使用命令```pip install -u xxx.whl```进行安装。

T
TeslaZhao 已提交
59
## 请求参数说明
Z
zhangjun 已提交
60
为了支持arm+xpu服务部署,使用Paddle-Lite加速能力,请求时需使用以下参数。
Z
zhangjun 已提交
61 62 63 64 65
| 参数     | 参数说明                    | 备注                                                             |
| :------- | :-------------------------- | :--------------------------------------------------------------- |
| use_lite | 使用Paddle-Lite Engine      | 使用Paddle-Lite cpu预测能力                                      |
| use_xpu  | 使用Baidu Kunlun进行预测    | 该选项需要与use_lite配合使用                                     |
| ir_optim | 开启Paddle-Lite计算子图优化 | 详细见[Paddle-Lite](https://github.com/PaddlePaddle/Paddle-Lite) |
T
TeslaZhao 已提交
66 67
## 部署使用示例
### 下载模型
Z
zhangjun 已提交
68 69 70 71
```
wget --no-check-certificate https://paddle-serving.bj.bcebos.com/uci_housing.tar.gz
tar -xzf uci_housing.tar.gz
```
T
TeslaZhao 已提交
72
### 启动rpc服务
Z
zhangjun 已提交
73
主要有三种启动配置:
Z
zhangjun 已提交
74 75 76
* 使用cpu+xpu部署,使用Paddle-Lite xpu优化加速能力;
* 单独使用cpu部署,使用Paddle-Lite优化加速能力;
* 使用cpu部署,不使用Paddle-Lite加速。
Z
zhangjun 已提交
77 78 79
    
推荐使用前两种部署方式。

Z
zhangjun 已提交
80
启动rpc服务,使用cpu+xpu部署,使用Paddle-Lite xpu优化加速能力
Z
zhangjun 已提交
81
```
82
python3 -m paddle_serving_server.serve --model uci_housing_model --thread 6 --port 9292 --use_lite --use_xpu --ir_optim
Z
zhangjun 已提交
83
```
Z
zhangjun 已提交
84
启动rpc服务,使用cpu部署, 使用Paddle-Lite加速能力
Z
zhangjun 已提交
85
```
86
python3 -m paddle_serving_server.serve --model uci_housing_model --thread 6 --port 9292 --use_lite --ir_optim
Z
zhangjun 已提交
87
```
Z
zhangjun 已提交
88
启动rpc服务,使用cpu部署, 不使用Paddle-Lite加速能力
Z
zhangjun 已提交
89
```
90
python3 -m paddle_serving_server.serve --model uci_housing_model --thread 6 --port 9292
Z
zhangjun 已提交
91
```
T
TeslaZhao 已提交
92
### client调用
Z
zhangjun 已提交
93 94 95 96 97 98 99 100 101 102 103
```
from paddle_serving_client import Client
import numpy as np
client = Client()
client.load_client_config("uci_housing_client/serving_client_conf.prototxt")
client.connect(["127.0.0.1:9292"])
data = [0.0137, -0.1136, 0.2553, -0.0692, 0.0582, -0.0727,
        -0.1583, -0.0584, 0.6283, 0.4919, 0.1856, 0.0795, -0.0332]
fetch_map = client.predict(feed={"x": np.array(data).reshape(1,13,1)}, fetch=["price"])
print(fetch_map)
```
T
TeslaZhao 已提交
104
## 其他说明
Z
zhangjun 已提交
105

T
TeslaZhao 已提交
106
### 模型实例及说明
Z
zhangjun 已提交
107
以下提供部分样例,其他模型可参照进行修改。
Z
zhangjun 已提交
108 109
| 示例名称   | 示例链接                                                    |
| :--------- | :---------------------------------------------------------- |
H
huangjianhui 已提交
110 111
| fit_a_line | [fit_a_line_xpu](../examples/C++/xpu/resnet_v2_50_xpu)     |
| resnet     | [resnet_v2_50_xpu](../examples/C++/xpu/resnet_v2_50_xpu) |
Z
zhangjun 已提交
112 113

注:支持昆仑芯片部署模型列表见[链接](https://paddlelite.paddlepaddle.org.cn/introduction/support_model_list.html)。不同模型适配上存在差异,可能存在不支持的情况,部署使用存在问题时,欢迎以[Github issue](https://github.com/PaddlePaddle/Serving/issues),我们会实时跟进。
T
TeslaZhao 已提交
114 115

### 昆仑芯片支持相关参考资料
Z
zhangjun 已提交
116 117
* [昆仑XPU芯片运行飞桨](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/guides/xpu_docs/index_cn.html)
* [PaddleLite使用百度XPU预测部署](https://paddlelite.paddlepaddle.org.cn/demo_guides/baidu_xpu.html)