本文将介绍源码编译安装以及在服务搭建流程。编译前确保PaddleServing的依赖项安装完毕。依赖安装教程请前往PaddleSegServing 依赖安装.
下列步骤介绍CPU版本以及GPU版本的PaddleServing编译安装过程。
# Step 1. 在~目录下下载paddle-serving代码
cd ~
git clone https://github.com/PaddlePaddle/serving.git
# Step 2. 进入serving目录,创建build目录编译、安装
cd serving
mkdir build
cd build
# Step 3. 以下为生成GPU版本的makefile,生成CPU版本的makefile执行 cmake -DWITH_GPU=OFF ..
cmake -DWITH_GPU=ON -DCUDNN_ROOT=/usr/local/cuda/lib64 ..
# Step 4. nproc 可以输出当前机器的核心数,利用多核进行编译。如果make时候报错退出,可以多执行几次make解决
make -j$(nproc)
# Step 5. 安装
make install
# Step 6. 安装后可以看PaddleServing的目录结构如下
serving
├── build
├── cmake
├── CMakeLists.txt
├── configure
├── CONTRIBUTING.md
├── cube
├── demo-client
├── demo-serving
│ ├── CMakeLists.txt
│ ├── conf # demo-serving 的配置文件目录
│ ├── data # 模型文件以及参数文件的目录
│ ├── op # 数据处理的源文件目录
│ ├── proto # 数据传输的proto文件目录
│ └── scripts
├── doc
├── inferencer-fluid-cpu
├── inferencer-fluid-gpu
├── kvdb
├── LICENSE
├── pdcodegen
├── predictor
├── README.md
├── sdk-cpp
└── tools
# Step 1. 在~目录下下载PaddleSeg代码
git clone http://gitlab.baidu.com/Paddle/PaddleSeg.git
# Step 2. 进入PaddleSeg的serving目录(注意区分PaddleServing的serving目录),并将seg-serving目录复制到PaddleServing的serving目录下
cd PaddleSeg/serving
cp -r seg-serving ~/serving
# 复制后PaddleServing的目录结构如下
serving
├── build
├── cmake
├── CMakeLists.txt
├── configure
├── CONTRIBUTING.md
├── cube
├── demo-client
├── demo-serving
├── doc
├── inferencer-fluid-cpu
├── inferencer-fluid-gpu
├── kvdb
├── LICENSE
├── pdcodegen
├── predictor
├── README.md
├── sdk-cpp
├── seg-serving # 此为新增的目录
└── tools
# Step 3. 修改PaddleServing的serving目录下的CMakeLists.txt
cd ~/serving
vim CMakeLists.txt
# Step 4. 倒数第二行加入代码,使得seg-serving下的代码可与PaddleServing一起编译
add_subdirectory(seg-serving)
# Step 5. 进入PaddleServing的build目录,编译安装PaddleSegServing
cd ~/serving/build
make -j$(nproc)
make install
# Step 6. 完成安装后,可以看到执行文件的目录结构如下
build
├── boost_dummy.c
├── CMakeCache.txt
├── CMakeFiles
├── cmake_install.cmake
├── configure
├── demo-client
├── error
├── human-seg-serving
├── inferencer-fluid-cpu
├── inferencer-fluid-gpu
├── info
├── install_manifest.txt
├── kvdb
├── libboost.a
├── log
├── Makefile
├── output # 所有服务端的执行文件、配置文件、数据文件均安装到此目录下
│ ├── bin
│ ├── demo
│ │ ├── client
│ │ ├── db_func
│ │ ├── db_thread
│ │ ├── seg-serving
│ │ │ └── bin
│ │ │ ├── conf # 配置文件目录
│ │ │ ├── data # 数据模型文件、参数文件目录
│ │ │ ├── seg-serving #可执行文件
│ │ │ ├── kvdb
│ │ │ ├── libiomp5.so
│ │ │ ├── libmklml_gnu.so
│ │ │ ├── libmklml_intel.so
│ │ │ └── log
│ │ ├── kvdb_test
│ │ └── serving
│ ├── include
│ └── lib
├── Paddle
├── pdcodegen
├── predictor
├── sdk-cpp
├── seg-serving
└── third_party
搭建人脸分割服务只需完成一些配置文件的编写即可。与预编译版本的搭建大致相同,但模型文件、参数文件放置的目录略有不同。
可参考预编译安装流程中2.2.1.1节。模型文件放置的目录在 ~/serving/seg-serving/data/model/paddle/fluid/。
可参考预编译安装流程中2.2.1.2节。配置文件的目录在~/serving/seg-serving/conf。
cd ~/serving/build
make install
可参考预编译安装流程中2.2.2节。可执行文件在该目录下:~/serving/build/output/demo/seg-serving/bin/。
可参考预编译安装流程中2.2.3节。