Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
Serving
提交
52b885a6
S
Serving
项目概览
PaddlePaddle
/
Serving
1 年多 前同步成功
通知
186
Star
833
Fork
253
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
105
列表
看板
标记
里程碑
合并请求
10
Wiki
2
Wiki
分析
仓库
DevOps
项目成员
Pages
S
Serving
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
105
Issue
105
列表
看板
标记
里程碑
合并请求
10
合并请求
10
Pages
分析
分析
仓库分析
DevOps
Wiki
2
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
52b885a6
编写于
3月 24, 2020
作者:
D
Dong Daxiang
提交者:
GitHub
3月 24, 2020
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #326 from barrierye/combine_compile_and_install_doc
Merge COMPILE.md and INSTALL.md
上级
d6e73a73
f5a4d544
变更
2
显示空白变更内容
内联
并排
Showing
2 changed file
with
90 addition
and
132 deletion
+90
-132
doc/COMPILE.md
doc/COMPILE.md
+90
-15
doc/INSTALL.md
doc/INSTALL.md
+0
-117
未找到文件。
doc/COMPILE.md
浏览文件 @
52b885a6
# 如何编译PaddleServing
### 编译环境设置
## 编译环境设置
-
os: CentOS 6u3
-
gcc: 4.8.2及以上
-
go: 1.9.2及以上
...
...
@@ -8,42 +9,116 @@
-
cmake:3.2.2及以上
-
python:2.7.2及以上
### 获取代码
推荐使用Docker准备Paddle Serving编译环境:
[
CPU Dockerfile.devel
](
../tools/Dockerfile.devel
)
,
[
GPU Dockerfile.gpu.devel
](
../tools/Dockerfile.gpu.devel
)
## 获取代码
```
python
git
clone
https
:
//
github
.
com
/
PaddlePaddle
/
Serving
cd
Serving
&&
git
submodule
update
--
init
--
recursive
```
##
# 编译Server部分
##
PYTHONROOT设置
#### PYTHONROOT设置
```
shell
```
shell
# 例如python的路径为/usr/bin/python,可以设置PYTHONROOT
export
PYTHONROOT
=
/usr/
```
#### 集成CPU版本Paddle Inference Library
## 编译Server部分
### 集成CPU版本Paddle Inference Library
```
shell
cmake
-DPYTHON_INCLUDE_DIR
=
$PYTHONROOT
/include/python2.7/
-DPYTHON_LIBRARIES
=
$PYTHONROOT
/lib/libpython2.7.so
-DPYTHON_EXECUTABLE
=
$PYTHONROOT
/bin/python
-DCLIENT_ONLY
=
OFF ..
mkdir
build
&&
cd
build
cmake
-DPYTHON_INCLUDE_DIR
=
$PYTHONROOT
/include/python2.7/
-DPYTHON_LIBRARIES
=
$PYTHONROOT
/lib/libpython2.7.so
-DPYTHON_EXECUTABLE
=
$PYTHONROOT
/bin/python
-DSERVER
=
ON ..
make
-j10
```
#### 集成GPU版本Paddle Inference Library
可以执行
`make install`
把目标产出放在
`./output`
目录下,cmake阶段需添加
`-DCMAKE_INSTALL_PREFIX=./output`
选项来指定存放路径。
### 集成GPU版本Paddle Inference Library
```
shell
cmake
-DPYTHON_INCLUDE_DIR
=
$PYTHONROOT
/include/python2.7/
-DPYTHON_LIBRARIES
=
$PYTHONROOT
/lib/libpython2.7.so
-DPYTHON_EXECUTABLE
=
$PYTHONROOT
/bin/python
-DCLIENT_ONLY
=
OFF
-DWITH_GPU
=
ON ..
mkdir
build
&&
cd
build
cmake
-DPYTHON_INCLUDE_DIR
=
$PYTHONROOT
/include/python2.7/
-DPYTHON_LIBRARIES
=
$PYTHONROOT
/lib/libpython2.7.so
-DPYTHON_EXECUTABLE
=
$PYTHONROOT
/bin/python
-DSERVER
=
ON
-DWITH_GPU
=
ON ..
make
-j10
```
### 编译Client部分
执行
`make install`
可以把目标产出放在
`./output`
目录下。
## 编译Client部分
```
shell
cmake
-DPYTHON_INCLUDE_DIR
=
$PYTHONROOT
/include/python2.7/
-DPYTHON_LIBRARIES
=
$PYTHONROOT
/lib/libpython2.7.so
-DPYTHON_EXECUTABLE
=
$PYTHONROOT
/bin/python
-DCLIENT_ONLY
=
ON ..
mkdir
build
&&
cd
build
cmake
-DPYTHON_INCLUDE_DIR
=
$PYTHONROOT
/include/python2.7/
-DPYTHON_LIBRARIES
=
$PYTHONROOT
/lib/libpython2.7.so
-DPYTHON_EXECUTABLE
=
$PYTHONROOT
/bin/python
-DCLIENT
=
ON ..
make
-j10
```
### 安装wheel包
无论是client端还是server端,编译完成后,安装python/dist/下的whl包即可
执行
`make install`
可以把目标产出放在
`./output`
目录下。
## 编译App部分
```
bash
mkdir
build
&&
cd
build
cmake
-DPYTHON_INCLUDE_DIR
=
$PYTHONROOT
/include/python2.7/
-DPYTHON_LIBRARIES
=
$PYTHONROOT
/lib/libpython2.7.so
-DPYTHON_EXECUTABLE
=
$PYTHONROOT
/bin/python
-DCMAKE_INSTALL_PREFIX
=
./output
-DAPP
=
ON ..
make
```
## 安装wheel包
无论是Client端,Server端还是App部分,编译完成后,安装
`python/dist/`
下的whl包即可。
## 注意事项
运行python端Server时,会检查
`SERVING_BIN`
环境变量,如果想使用自己编译的二进制文件,请将设置该环境变量为对应二进制文件的路径,通常是
`export SERVING_BIN=${BUILD_DIR}/core/general-server/serving`
。
### 注意事项
运行python端server时,会检查
`SERVING_BIN`
环境变量,如果想使用自己编译的二进制文件,请将设置该环境变量为对应二进制文件的路径,通常是
`export SERVING_BIN=${BUILD_PATH}/core/general-server/serving`
。
## CMake选项说明
| 编译选项 | 说明 | 默认 |
| :--------------: | :----------------------------------------: | :--: |
| WITH_AVX | Compile Paddle Serving with AVX intrinsics | OFF |
| WITH_MKL | Compile Paddle Serving with MKL support | OFF |
| WITH_GPU | Compile Paddle Serving with NVIDIA GPU | OFF |
| CUDNN_ROOT | Define CuDNN library and header path | |
| CLIENT | Compile Paddle Serving Client | OFF |
| SERVER | Compile Paddle Serving Server | OFF |
| APP | Compile Paddle Serving App package | OFF |
| WITH_ELASTIC_CTR | Compile ELASITC-CTR solution | OFF |
| PACK | Compile for whl | OFF |
### WITH_GPU选项
Paddle Serving通过PaddlePaddle预测库支持在GPU上做预测。WITH_GPU选项用于检测系统上CUDA/CUDNN等基础库,如检测到合适版本,在编译PaddlePaddle时就会编译出GPU版本的OP Kernel。
在裸机上编译Paddle Serving GPU版本,需要安装这些基础库:
-
CUDA
-
CuDNN
-
NCCL2
这里要注意的是:
1.
编译Serving所在的系统上所安装的CUDA/CUDNN等基础库版本,需要兼容实际的GPU设备。例如,Tesla V100卡至少要CUDA 9.0。如果编译时所用CUDA等基础库版本过低,由于生成的GPU代码和实际硬件设备不兼容,会导致Serving进程无法启动,或出现coredump等严重问题。
2.
运行Paddle Serving的系统上安装与实际GPU设备兼容的CUDA driver,并安装与编译期所用的CUDA/CuDNN等版本兼容的基础库。如运行Paddle Serving的系统上安装的CUDA/CuDNN的版本低于编译时所用版本,可能会导致奇怪的cuda函数调用失败等问题。
以下是PaddlePaddle发布版本所使用的基础库版本匹配关系,供参考:
| | CUDA | CuDNN | NCCL2 |
| :----: | :-----: | :----------------------: | :----: |
| CUDA 8 | 8.0.61 | CuDNN 7.1.2 for CUDA 8.0 | 2.1.4 |
| CUDA 9 | 9.0.176 | CuDNN 7.3.1 for CUDA 9.0 | 2.2.12 |
### 如何让Paddle Serving编译系统探测到CuDNN库
从NVIDIA developer官网下载对应版本CuDNN并在本地解压后,在cmake编译命令中增加
`-DCUDNN_ROOT`
参数,指定CuDNN库所在路径。
### 如何让Paddle Serving编译系统探测到nccl库
从NVIDIA developer官网下载对应版本nccl2库并解压后,增加如下环境变量 (以nccl2.1.4为例):
```
shell
export
C_INCLUDE_PATH
=
/path/to/nccl2/cuda8/nccl_2.1.4-1+cuda8.0_x86_64/include:
$C_INCLUDE_PATH
export
CPLUS_INCLUDE_PATH
=
/path/to/nccl2/cuda8/nccl_2.1.4-1+cuda8.0_x86_64/include:
$CPLUS_INCLUDE_PATH
export
LD_LIBRARY_PATH
=
/path/to/nccl2/cuda8/nccl_2.1.4-1+cuda8.0_x86_64/lib/:
$LD_LIBRARY_PATH
```
doc/INSTALL.md
已删除
100644 → 0
浏览文件 @
d6e73a73
# Install
## 系统需求
OS: Linux
CMake: (验证过的版本:3.2/3.5.2)
C++编译器 (验证过的版本:GCC 4.8.2/5.4.0)
python (验证过的版本:2.7)
Go编译器 (>=1.8 验证过的版本:1.9.2/1.12.0)
openssl & openssl-devel
curl-devel
bzip2-devel
## 编译
推荐使用Docker准备Paddle Serving编译环境。
[
Docker编译使用说明
](
./DOCKER.md
)
以下命令将会下载Paddle Serving最新代码,并执行编译。
```
shell
$
git clone https://github.com/PaddlePaddle/Serving.git
$
cd
Serving
$
mkdir
build
$
cd
build
$
cmake ..
$
make
-j4
$
make
install
```
`make install`
将把目标产出放在/path/to/Paddle-Serving/build/output/目录下,目录结构:
```
.
|-- bin # Paddle Serving工具和protobuf编译插件pdcodegen所在目录
|-- conf
|-- demo # demo总目录
| |-- client # Demo client端
| | |-- bert # bert模型客户端
| | |-- ctr_prediction # CTR prediction模型客户端
| | |-- dense_format # dense_format客户端
| | |-- echo # 最简单的echo service客户端
| | |-- echo_kvdb # local KV读取demo客户端
| | |-- image_classification # 图像分类任务客户端
| | |-- int64tensor_format # int64tensor_format示例客户端
| | |-- sparse_format # sparse_format示例客户端
| | `-- text_classification # 文本分类任务示例客户端
| |-- db_func
| |-- db_thread
| |-- kvdb_test
| `-- serving # Demo serving端;该serving可同时响应所有demo client请求
|-- include # Paddle Serving发布的头文件
|-- lib # Paddle Serving发布的libs
`-- tool # Paddle Serving发布的工具目录
```
如要编写新的预测服务,请参考
[
从零开始写一个预测服务
](
CREATING.md
)
# CMake编译选项说明
| 编译选项 | 说明 |
|----------|------|
| WITH_AVX | For configuring PaddlePaddle. Compile PaddlePaddle with AVX intrinsics |
| WITH_MKL | For configuring PaddlePaddle. Compile PaddlePaddle with MKLML library |
| WITH_GPU | For configuring PaddlePaddle. Compile PaddlePaddle with NVIDIA GPU |
| CUDNN_ROOT| For configuring PaddlePaddle. Define CuDNN library and header path |
| CLINET_ONLY | Compile client libraries and demos only |
## WITH_GPU选项
Paddle Serving通过PaddlePaddle预测库支持在GPU上做预测。WITH_GPU选项用于检测系统上CUDA/CUDNN等基础库,如检测到合适版本,在编译PaddlePaddle时就会编译出GPU版本的OP Kernel。
在裸机上编译Paddle Serving GPU版本,需要安装这些基础库:
-
CUDA
-
CuDNN
-
NCCL2
这里要注意的是:
1) 编译Serving所在的系统上所安装的CUDA/CUDNN等基础库版本,需要兼容实际的GPU设备。例如,Tesla V100卡至少要CUDA 9.0。如果编译时所用CUDA等基础库版本过低,由于生成的GPU代码和实际硬件设备不兼容,会导致Serving进程无法启动,或出现coredump等严重问题。
2) 运行Paddle Serving的系统上安装与实际GPU设备兼容的CUDA driver,并安装与编译期所用的CUDA/CuDNN等版本兼容的基础库。如运行Paddle Serving的系统上安装的CUDA/CuDNN的版本低于编译时所用版本,可能会导致奇怪的cuda函数调用失败等问题。
以下是PaddlePaddle发布版本所使用的基础库版本匹配关系,供参考:
| | CUDA | CuDNN | NCCL2 |
|-|-------|--------------------------|-------|
| CUDA 8 | 8.0.61 | CuDNN 7.1.2 for CUDA 8.0 | 2.1.4 |
| CUDA 9 | 9.0.176 | CuDNN 7.3.1 for CUDA 9.0| 2.2.12 |
### 如何让Paddle Serving编译系统探测到CuDNN库
从NVIDIA developer官网下载对应版本CuDNN并在本地解压后,在cmake编译命令中增加-DCUDNN_ROOT参数,指定CuDNN库所在路径:
```
$ pwd
/path/to/paddle-serving
$ mkdir build && cd build
$ cmake -DWITH_GPU=ON -DCUDNN_ROOT=/path/to/cudnn/cudnn_v7/cuda ..
```
### 如何让Paddle Serving编译系统探测到nccl库
从NVIDIA developer官网下载对应版本nccl2库并解压后,增加如下环境变量 (以nccl2.1.4为例):
```
$ export C_INCLUDE_PATH=/path/to/nccl2/cuda8/nccl_2.1.4-1+cuda8.0_x86_64/include:$C_INCLUDE_PATH
$ export CPLUS_INCLUDE_PATH=/path/to/nccl2/cuda8/nccl_2.1.4-1+cuda8.0_x86_64/include:$CPLUS_INCLUDE_PATH
$ export LD_LIBRARY_PATH=/path/to/nccl2/cuda8/nccl_2.1.4-1+cuda8.0_x86_64/lib/:$LD_LIBRARY_PATH
```
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录