Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
Serving
提交
c363bae8
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看板
未验证
提交
c363bae8
编写于
11月 15, 2021
作者:
J
Jiawei Wang
提交者:
GitHub
11月 15, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update Compile_CN.md
上级
6dde2a34
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
62 addition
and
31 deletion
+62
-31
doc/Compile_CN.md
doc/Compile_CN.md
+62
-31
未找到文件。
doc/Compile_CN.md
浏览文件 @
c363bae8
...
...
@@ -2,7 +2,22 @@
(简体中文|
[
English
](
./Compile_EN.md
)
)
## 编译环境设置
## 总体概述
编译Paddle Serving一共分以下几步
-
编译环境准备:根据模型和运行环境的需要,选择最合适的镜像
-
下载代码库:下载Serving代码库,按需要执行初始化操作
-
环境变量准备:根据运行环境的需要,确定Python各个环境变量,如GPU环境还需要确定Cuda,Cudnn,TensorRT等环境变量。
-
正式编译: 编译
`paddle-serving-server`
,
`paddle-serving-client`
,
`paddle-serving-app`
相关whl包
-
安装相关whl包:安装编译出的三个whl包,并设置SERVING_BIN环境变量
此外,针对某些C++二次开发场景,我们也提供了OPENCV的联编方案。
## 编译环境准备
| 组件 | 版本要求 |
| :--------------------------: | :-------------------------------: |
...
...
@@ -25,42 +40,44 @@
推荐使用Docker编译,我们已经为您准备好了Paddle Serving编译环境并配置好了上述编译依赖,详见
[
该文档
](
DOCKER_IMAGES_CN.md
)
。
我们提供了五个环境的开发镜像,分别是CPU, Cuda10.1+Cudnn7, Cuda10.2+Cudnn7,Cuda10.2+Cudnn8, Cuda11.2+Cudnn
。其中Serving镜像名是 paddlepaddle/serving:${Serving开发镜像Tag}, Paddle开发镜像名是 paddlepaddle/paddle:${Paddle开发镜像Tag}。为了防止用户对两套镜像出现混淆,我们分别解释一下两套镜像的由来
。
我们提供了五个环境的开发镜像,分别是CPU, Cuda10.1+Cudnn7, Cuda10.2+Cudnn7,Cuda10.2+Cudnn8, Cuda11.2+Cudnn
8。我们提供了Serving开发镜像涵盖以上环境。与此同时,我们也支持Paddle开发镜像
。
Serving开发镜像是Serving套件为了支持各个预测环境提供的用于编译、调试预测服务的镜像,Paddle开发镜像是Paddle在官网发布的用于编译、开发、训练模型使用镜像。为了让Paddle开发者能够在同一个容器内直接使用Serving,
其中Serving镜像名是
**paddlepaddle/serving:${Serving开发镜像Tag}**
, Paddle开发镜像名是
**paddlepaddle/paddle:${Paddle开发镜像Tag}**
。为了防止用户对两套镜像出现混淆,我们分别解释一下两套镜像的由来。
Serving开发镜像是Serving套件为了支持各个预测环境提供的用于编译、调试预测服务的镜像,Paddle开发镜像是Paddle在官网发布的用于编译、开发、训练模型使用镜像。为了让Paddle开发者能够在同一个容器内直接使用Serving。对于上个版本就已经使用Serving用户的开发者来说,Serving开发镜像应该不会感到陌生。但对于熟悉Paddle训练框架生态的开发者,目前应该更熟悉已有的Paddle开发镜像。为了适应所有用户的不同习惯,我们对这两套镜像都做了充分的支持。
| 环境 | Serving开发镜像Tag | Paddle开发镜像Tag |
| :--------------------------: | :-------------------------------: | :-------------------------------: |
| CPU | 0.7.0-devel | 2.2.0 |
| Cuda10.1+Cudnn7 | 0.7.0-cuda10.1-cudnn7-devel | 无 |
| Cuda10.2+Cudnn7 | 0.7.0-cuda10.2-cudnn7-devel | 2.2.0-cuda10.2-cudnn7 |
| Cuda10.2+Cudnn8 | 0.7.0-cuda10.2-cudnn8-devel | 无 |
| Cuda11.2+Cudnn8 | 0.7.0-cuda11.2-cudnn8-devel | 2.2.0-cuda11.2-cudnn8 |
我们首先要针对自己所需的环境拉取相关镜像。
| 环境 | Serving开发镜像Tag | 操作系统 | Paddle开发镜像Tag | 操作系统 |
| :--------------------------: | :-------------------------------: | :-------------: | :-------------------: | :----------------: |
| CPU | 0.7.0-devel | Ubuntu 16.04 | 2.2.0 | Ubuntu 18.04. |
| Cuda10.1+Cudnn7 | 0.7.0-cuda10.1-cudnn7-devel | Ubuntu 16.04 | 无 | 无 |
| Cuda10.2+Cudnn7 | 0.7.0-cuda10.2-cudnn7-devel | Ubuntu 16.04 | 2.2.0-cuda10.2-cudnn7 | Ubuntu 16.04 |
| Cuda10.2+Cudnn8 | 0.7.0-cuda10.2-cudnn8-devel | Ubuntu 16.04 | 无 | 无 |
| Cuda11.2+Cudnn8 | 0.7.0-cuda11.2-cudnn8-devel | Ubuntu 16.04 | 2.2.0-cuda11.2-cudnn8 | Ubuntu 18.04 |
我们首先要针对自己所需的环境拉取相关镜像。上表
**环境**
一列下,除了CPU,其余(Cuda
**+Cudnn**
)都属于GPU环境。
您可以使用Serving开发镜像。
```
docker pull paddlepaddle/serving:${Serving开发镜像Tag}
# 如果是GPU镜像
nvidia-docker run --rm -it paddlepaddle/serving:${Serving开发镜像Tag} bash
# 如果是CPU镜像
docker run --rm -it paddlepaddle/serving:${Serving开发镜像Tag} bash
```
也可以使用Paddle开发镜像。
```
docker pull paddlepaddle/paddle:${Paddle开发镜像Tag}
# 如果是GPU镜像
# 如果是GPU镜像,需要使用nvidia-docker
nvidia-docker run --rm -it paddlepaddle/paddle:${Paddle开发镜像Tag} bash
# 如果是CPU镜像
docker run --rm -it paddlepaddle/paddle:${Paddle开发镜像Tag} bash
```
接下来执行相关代码就好,主要的步骤如下。
-
检查并下载相关依赖
-
下载代码库
-
编译paddle-serving-server,paddle-serving-client和paddle-serving-app
-
安装上述python包
## 下载代码库
**注明: 如果您正在使用Paddle开发镜像,需要在下载代码库后手动运行`bash env_install.sh`(如代码框的第三行所示)**
...
...
@@ -72,7 +89,7 @@ cd Serving && git submodule update --init --recursive
bash tools/paddle_env_install.sh
```
##
编译
准备
##
环境变量
准备
**设置PYTHON环境变量**
...
...
@@ -126,19 +143,30 @@ go install google.golang.org/grpc@v1.33.0
go env -w GO111MODULE=auto
```
如果您是GPU用户需要额外执行
如果您是GPU用户需要额外设置
`CUDA_PATH`
,
`CUDNN_LIBRARY`
,
`CUDA_CUDART_LIBRARY`
和
`TENSORRT_LIBRARY_PATH`
。
```
export CUDA_PATH='/usr/local/cuda'
export CUDNN_LIBRARY='/usr/local/cuda/lib64/'
export CUDA_CUDART_LIBRARY="/usr/local/cuda/lib64/"
export TENSORRT_LIBRARY_PATH="/usr/"
```
环境变量的含义如下表所示。
| cmake环境变量 | 含义 | GPU环境注意事项 | Docker环境是否需要 |
|-----------------------|-------------------------------------|-------------------------------|--------------------|
| CUDA_TOOLKIT_ROOT_DIR | cuda安装路径,通常为/usr/local/cuda | 全部GPU环境都需要 | 否(/usr/local/cuda) |
| CUDNN_LIBRARY | libcudnn.so.
*
所在目录,通常为/usr/local/cuda/lib64/ | 全部GPU环境都需要 | 否(/usr/local/cuda/lib64/) |
| CUDA_CUDART_LIBRARY | libcudart.so.
*
所在目录,通常为/usr/local/cuda/lib64/ | 全部GPU环境都需要 | 否(/usr/local/cuda/lib64/) |
| TENSORRT_ROOT | libnvinfer.so.
*
所在目录的上一级目录,取决于TensorRT安装目录 | 全部GPU环境都需要 | 否(/usr) |
## 正式编译
我们一共需要编译三个目标,分别是
`paddle-serving-server`
,
`paddle-serving-client`
,
`paddle-serving-app`
,其中
`paddle-serving-server`
需要区分CPU或者GPU版本。如果是CPU版本请运行,
### 编译paddle-serving-server
```
mkdir build_server
cd build_server
...
...
@@ -168,15 +196,22 @@ make -j20
cd ..
```
### 编译paddle-serving-client 和 paddle-serving-app
接下来,我们继续编译client和app就可以了,这两个包的编译命令在所有平台通用,不区分CPU和GPU的版本。
```
# 编译paddle-serving-client
mkdir build_client
cd build_client
cmake -DPYTHON_INCLUDE_DIR=$PYTHON_INCLUDE_DIR \
-DPYTHON_LIBRARIES=$PYTHON_LIBRARIES \
-DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \
-DCLIENT=ON ..
make -j
20
make -j
10
cd ..
# 编译paddle-serving-app
mkdir build_app
cd build_app
cmake -DPYTHON_INCLUDE_DIR=$PYTHON_INCLUDE_DIR \
-DPYTHON_LIBRARIES=$PYTHON_LIBRARIES \
...
...
@@ -201,7 +236,8 @@ export SERVING_BIN=${PWD}/build_server/core/general-server/serving
可以cd build_server路径下,执行
`export SERVING_BIN=${PWD}/core/general-server/serving`
### 开启WITH_OPENCV选项编译C++ Server
## 开启WITH_OPENCV选项编译C++ Server
**注意:**
只有当您需要对Paddle Serving C++部分进行二次开发,且新增的代码依赖于OpenCV库时,您才需要这样做。
编译Serving C++ Server部分,开启WITH_OPENCV选项时,需要已安装的OpenCV库,若尚未安装,可参考本文档后面的说明编译安装OpenCV库。
...
...
@@ -224,13 +260,8 @@ make -j10
## 如何验证
请使用
`python/examples`
下的例子进行验证。
## CMake选项说明
##
附:
CMake选项说明
| 编译选项 | 说明 | 默认 |
| :--------------: | :----------------------------------------: | :--: |
...
...
@@ -271,11 +302,11 @@ Paddle Serving通过PaddlePaddle预测库支持在GPU上做预测。WITH_GPU选
| post102 | 10.2 | CuDNN 8.0.5 | 7.1.3 |
| post11 | 11.0 | CuDNN 8.0.4 | 7.1.3 |
### 如何让Paddle Serving编译系统探测到CuDNN库
###
附:
如何让Paddle Serving编译系统探测到CuDNN库
从NVIDIA developer官网下载对应版本CuDNN并在本地解压后,在cmake编译命令中增加
`-DCUDNN_LIBRARY`
参数,指定CuDNN库所在路径。
## 编译安装OpenCV库
##
附:
编译安装OpenCV库
**注意:**
只有当您需要在C++代码中引入OpenCV库时,您才需要这样做。
*
首先需要从OpenCV官网上下载在Linux环境下源码编译的包,以OpenCV3.4.7为例,下载命令如下。
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录