1 Star 0 Fork 15

zyunzlong / Serving

forked from PaddlePaddle / Serving 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
Run_On_XPU_CN.md 5.25 KB
一键复制 编辑 原始数据 按行查看 历史
TeslaZhao 提交于 2021-12-14 11:14 . Update Run_On_XPU_CN.md

Paddle Serving使用百度昆仑芯片部署

(简体中文|English)

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

安装Docker镜像

我们推荐使用docker部署Serving服务,在xpu环境下可参考Docker镜像文档安装xpu镜像,并进一步完成编译、安装和部署等任务。

编译、安装

基本环境配置可参考该文档进行配置。下面以飞腾FT-2000+/64机器为例进行介绍。

编译

  • 编译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

可以执行make install把目标产出放在./output目录下,cmake阶段需添加-DCMAKE_INSTALL_PREFIX=./output选项来指定存放路径。在支持AVX2指令集的Intel CPU平台上请指定-DWITH_MKL=ON编译选项。

  • 编译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

安装wheel包

以上编译步骤完成后,会在各自编译目录$build_dir/python/dist生成whl包,分别安装即可。例如server步骤,会在server-build-arm/python/dist目录下生成whl包, 使用命令pip install -u xxx.whl进行安装。

请求参数说明

为了支持arm+xpu服务部署,使用Paddle-Lite加速能力,请求时需使用以下参数。

参数 参数说明 备注
use_lite 使用Paddle-Lite Engine 使用Paddle-Lite cpu预测能力
use_xpu 使用Baidu Kunlun进行预测 该选项需要与use_lite配合使用
ir_optim 开启Paddle-Lite计算子图优化 详细见Paddle-Lite

部署使用示例

下载模型

wget --no-check-certificate https://paddle-serving.bj.bcebos.com/uci_housing.tar.gz
tar -xzf uci_housing.tar.gz

启动rpc服务

主要有三种启动配置:

  • 使用cpu+xpu部署,使用Paddle-Lite xpu优化加速能力;
  • 单独使用cpu部署,使用Paddle-Lite优化加速能力;
  • 使用cpu部署,不使用Paddle-Lite加速。

推荐使用前两种部署方式。

启动rpc服务,使用cpu+xpu部署,使用Paddle-Lite xpu优化加速能力

python3 -m paddle_serving_server.serve --model uci_housing_model --thread 6 --port 9292 --use_lite --use_xpu --ir_optim

启动rpc服务,使用cpu部署, 使用Paddle-Lite加速能力

python3 -m paddle_serving_server.serve --model uci_housing_model --thread 6 --port 9292 --use_lite --ir_optim

启动rpc服务,使用cpu部署, 不使用Paddle-Lite加速能力

python3 -m paddle_serving_server.serve --model uci_housing_model --thread 6 --port 9292

client调用

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)

其他说明

模型实例及说明

以下提供部分样例,其他模型可参照进行修改。

示例名称 示例链接
fit_a_line fit_a_line_xpu
resnet resnet_v2_50_xpu

注:支持昆仑芯片部署模型列表见链接。不同模型适配上存在差异,可能存在不支持的情况,部署使用存在问题时,欢迎以Github issue,我们会实时跟进。

昆仑芯片支持相关参考资料

C++
1
https://gitee.com/zyunzlong/Serving.git
git@gitee.com:zyunzlong/Serving.git
zyunzlong
Serving
Serving
v0.8.2

搜索帮助