Install_CN.md 11.4 KB
Newer Older
T
TeslaZhao 已提交
1 2
# 使用Docker安装Paddle Serving

T
TeslaZhao 已提交
3
(简体中文|[English](./Install_EN.md))
T
TeslaZhao 已提交
4

T
TeslaZhao 已提交
5 6 7 8 9 10 11 12 13
- [1.使用开发镜像](#1)
    - [Serving 开发镜像](#1.1)
    - [Paddle 开发镜像](#1.2)
- [2.安装 Wheel 包](#2)
    - [在线安装](#2.1)
    - [离线安装](#2.2)
- [3.环境检查](#3)


B
bjjwwang 已提交
14
**强烈建议**您在**Docker内构建**Paddle Serving,更多镜像请查看[Docker镜像列表](Docker_Images_CN.md)
T
TeslaZhao 已提交
15

T
TeslaZhao 已提交
16
**提示-1**:本项目仅支持<mark>**Python3.6/3.7/3.8/3.9**</mark>,接下来所有的与Python/Pip相关的操作都需要选择正确的Python版本。
B
bjjwwang 已提交
17

T
TeslaZhao 已提交
18
**提示-2**:以下示例中GPU环境均为cuda11.2-cudnn8,如果您使用Python Pipeline来部署,并需要Nvidia TensorRT来优化预测性能,请参考[支持的镜像环境和说明](#4支持的镜像环境和说明)来选择其他版本。
T
TeslaZhao 已提交
19

T
TeslaZhao 已提交
20 21 22
<a name="1"></a>

## 1.使用开发镜像
B
bjjwwang 已提交
23

T
TeslaZhao 已提交
24
<mark>**同时支持使用Serving镜像和Paddle镜像,1.1和1.2章节中的操作2选1即可。**</mark> 在Paddle docker镜像上部署Serving服务需要安装额外依赖库,因此,我们直接使用Serving开发镜像。
T
TeslaZhao 已提交
25 26 27 28 29 30 31 32 33 34 35 36 37

|  环境                         |   Serving开发镜像Tag               |    操作系统      | Paddle开发镜像Tag       |  操作系统            |
| :--------------------------: | :-------------------------------: | :-------------: | :-------------------: | :----------------: |
|  CPU                         | 0.9.0-devel                       |  Ubuntu 16.04   | 2.3.0                | Ubuntu 18.04.       |
|  CUDA10.1 + CUDNN7           | 0.9.0-cuda10.1-cudnn7-devel       |  Ubuntu 16.04   | 无                   | 无                 |
|  CUDA10.2 + CUDNN8           | 0.9.0-cuda10.2-cudnn8-devel       |  Ubuntu 16.04   | 无                   | Ubuntu 18.04   |
|  CUDA11.2 + CUDNN8           | 0.9.0-cuda11.2-cudnn8-devel       |  Ubuntu 16.04   | 2.3.0-gpu-cuda11.2-cudnn8 | Ubuntu 18.04   | 

对于**Windows 10 用户**,请参考文档[Windows平台使用Paddle Serving指导](Windows_Tutorial_CN.md)


<a name="1.1"></a>

T
fixdoc1  
Thomas Young 已提交
38 39
### 1.1 Serving开发镜像(CPU/GPU 2选1)
**CPU:**
T
TeslaZhao 已提交
40 41
```
# 启动 CPU Docker
T
TeslaZhao 已提交
42 43
docker pull registry.baidubce.com/paddlepaddle/serving:0.9.0-devel
docker run -p 9292:9292 --name test -dit registry.baidubce.com/paddlepaddle/serving:0.9.0-devel bash
T
TeslaZhao 已提交
44 45 46
docker exec -it test bash
git clone https://github.com/PaddlePaddle/Serving
```
T
fixdoc1  
Thomas Young 已提交
47
**GPU:**
T
TeslaZhao 已提交
48 49
```
# 启动 GPU Docker
T
TeslaZhao 已提交
50 51
docker pull registry.baidubce.com/paddlepaddle/serving:0.9.0-cuda11.2-cudnn8-devel
nvidia-docker run -p 9292:9292 --name test -dit registry.baidubce.com/paddlepaddle/serving:0.9.0-cuda11.2-cudnn8-devel bash
T
TeslaZhao 已提交
52 53
nvidia-docker exec -it test bash
git clone https://github.com/PaddlePaddle/Serving
B
bjjwwang 已提交
54
```
T
TeslaZhao 已提交
55 56 57

<a name="1.2"></a>

T
fixdoc1  
Thomas Young 已提交
58 59
### 1.2 Paddle开发镜像(CPU/GPU 2选1)
**CPU:**
T
TeslaZhao 已提交
60
```
T
TeslaZhao 已提交
61
### 启动 CPU Docker
T
TeslaZhao 已提交
62 63
nvidia-docker pull registry.baidubce.com/paddlepaddle/paddle:2.3.0
docker run -p 9292:9292 --name test -dit registry.baidubce.com/paddlepaddle/paddle:2.3.0 bash
B
bjjwwang 已提交
64 65
docker exec -it test bash
git clone https://github.com/PaddlePaddle/Serving
T
fixdoc1  
Thomas Young 已提交
66

T
TeslaZhao 已提交
67
### Paddle开发镜像需要执行以下脚本增加Serving所需依赖项
T
fixdoc1  
Thomas Young 已提交
68
bash Serving/tools/paddle_env_install.sh
B
bjjwwang 已提交
69
```
T
fixdoc1  
Thomas Young 已提交
70
**GPU:**
B
bjjwwang 已提交
71
```
T
TeslaZhao 已提交
72
### 启动 GPU Docker
T
TeslaZhao 已提交
73 74 75

nvidia-docker pull registry.baidubce.com/paddlepaddle/paddle:2.3.0-gpu-cuda11.2-cudnn8
nvidia-docker run -p 9292:9292 --name test -dit registry.baidubce.com/paddlepaddle/paddle:2.3.0-gpu-cuda11.2-cudnn8 bash
B
bjjwwang 已提交
76 77 78
nvidia-docker exec -it test bash
git clone https://github.com/PaddlePaddle/Serving

T
TeslaZhao 已提交
79
### Paddle开发镜像需要执行以下脚本增加Serving所需依赖项
T
fixdoc1  
Thomas Young 已提交
80 81
bash Serving/tools/paddle_env_install.sh
```
T
TeslaZhao 已提交
82 83 84 85

<a name="2"></a>

## 2.安装 Wheel 包
T
TeslaZhao 已提交
86 87 88 89 90 91 92

安装所需的pip依赖
```
cd Serving
pip3 install -r python/requirements.txt
```

T
TeslaZhao 已提交
93
安装服务whl包,共有3种client、app、server,Server分为CPU和GPU,GPU包根据您的环境选择一种安装
T
TeslaZhao 已提交
94
- post112 = CUDA11.2 + cuDNN8 + TensorRT8(推荐)
T
TeslaZhao 已提交
95
- post101 = CUDA10.1 + cuDNN7 + TensorRT6
T
TeslaZhao 已提交
96 97
- post102 = CUDA10.2 + cuDNN7 + TensorRT6 (与Paddle 镜像一致)
- post1028 = CUDA10.2 + cuDNN8 + TensorRT7
T
TeslaZhao 已提交
98

T
TeslaZhao 已提交
99 100 101
<a name="2.1"></a>

### 2.1 在线安装
T
TeslaZhao 已提交
102

T
TeslaZhao 已提交
103
```shell
T
TeslaZhao 已提交
104 105
pip3 install paddle-serving-client==0.9.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip3 install paddle-serving-app==0.9.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
T
TeslaZhao 已提交
106 107

# CPU Server
T
TeslaZhao 已提交
108
pip3 install paddle-serving-server==0.9.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
T
TeslaZhao 已提交
109

T
TeslaZhao 已提交
110 111
# GPU Server,需要确认环境再选择执行哪一条,推荐使用CUDA 11.2的包
pip3 install paddle-serving-server-gpu==0.9.0.post112 -i https://pypi.tuna.tsinghua.edu.cn/simple
T
TeslaZhao 已提交
112 113
```

T
TeslaZhao 已提交
114
默认开启国内清华镜像源来加速下载,如果您使用HTTP代理可以关闭(`-i https://pypi.tuna.tsinghua.edu.cn/simple`)
T
TeslaZhao 已提交
115

116
如果需要使用develop分支编译的安装包,请从[下载Wheel包](./Latest_Packages_CN.md)中获取下载地址进行下载,使用`pip install`命令进行安装。如果您想自行编译,请参照[Paddle Serving编译文档](./Compile_CN.md)
T
TeslaZhao 已提交
117

T
TeslaZhao 已提交
118
`paddle-serving-server``paddle-serving-server-gpu` 安装包支持Centos 6/7, Ubuntu 16/18和Windows 10。
T
TeslaZhao 已提交
119

T
TeslaZhao 已提交
120
`paddle-serving-client``paddle-serving-app` 安装包支持 Linux 和 Windows,其中 `paddle-serving-client` 仅支持 python3.6/3.7/3.8/3.9。
T
TeslaZhao 已提交
121

T
TeslaZhao 已提交
122

T
fixdoc1  
Thomas Young 已提交
123
**当您使用`paddle_serving_client.convert`命令或者`Python Pipeline框架`时才需要安装。**
T
TeslaZhao 已提交
124 125
```
# CPU环境请执行
T
TeslaZhao 已提交
126
pip3 install paddlepaddle==2.3.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
T
TeslaZhao 已提交
127

T
TeslaZhao 已提交
128 129
# GPU CUDA 11.2环境请执行
pip3 install paddlepaddle-gpu==2.3.0.post112 -i https://pypi.tuna.tsinghua.edu.cn/simple
T
TeslaZhao 已提交
130
```
T
TeslaZhao 已提交
131
**注意**: 其他版本请参考[Paddle-Inference官方文档-下载安装Linux预测库](https://paddleinference.paddlepaddle.org.cn/master/user_guides/download_lib.html#python) 选择相应的GPU环境的 URL 链接并进行安装。
132 133

```
T
TeslaZhao 已提交
134 135 136 137 138
# CUDA11.2 + CUDNN8 + TensorRT8 + Python(3.6-3.9)
pip3 install https://paddle-inference-lib.bj.bcebos.com/2.3.0/python/Linux/GPU/x86-64_gcc8.2_avx_mkl_cuda11.2_cudnn8.2.1_trt8.0.3.4/paddlepaddle_gpu-2.3.0.post112-cp36-cp36m-linux_x86_64.whl
pip3 install https://paddle-inference-lib.bj.bcebos.com/2.3.0/python/Linux/GPU/x86-64_gcc8.2_avx_mkl_cuda11.2_cudnn8.2.1_trt8.0.3.4/paddlepaddle_gpu-2.3.0.post112-cp37-cp37m-linux_x86_64.whl
pip3 install https://paddle-inference-lib.bj.bcebos.com/2.3.0/python/Linux/GPU/x86-64_gcc8.2_avx_mkl_cuda11.2_cudnn8.2.1_trt8.0.3.4/paddlepaddle_gpu-2.3.0.post112-cp38-cp38-linux_x86_64.whl
pip3 install https://paddle-inference-lib.bj.bcebos.com/2.3.0/python/Linux/GPU/x86-64_gcc8.2_avx_mkl_cuda11.2_cudnn8.2.1_trt8.0.3.4/paddlepaddle_gpu-2.3.0.post112-cp39-cp39-linux_x86_64.whl
139

T
TeslaZhao 已提交
140 141 142 143 144
# CUDA10.1 + CUDNN7 + TensorRT6 + Python(3.6-3.9)
pip3 install https://paddle-inference-lib.bj.bcebos.com/2.3.0/python/Linux/GPU/x86-64_gcc8.2_avx_mkl_cuda10.1_cudnn7.6.5_trt6.0.1.5/paddlepaddle_gpu-2.3.0.post101-cp36-cp36m-linux_x86_64.whl
pip3 install https://paddle-inference-lib.bj.bcebos.com/2.3.0/python/Linux/GPU/x86-64_gcc8.2_avx_mkl_cuda10.1_cudnn7.6.5_trt6.0.1.5/paddlepaddle_gpu-2.3.0.post101-cp37-cp37m-linux_x86_64.whl
pip3 install https://paddle-inference-lib.bj.bcebos.com/2.3.0/python/Linux/GPU/x86-64_gcc8.2_avx_mkl_cuda10.1_cudnn7.6.5_trt6.0.1.5/paddlepaddle_gpu-2.3.0.post101-cp38-cp38-linux_x86_64.whl
pip3 install https://paddle-inference-lib.bj.bcebos.com/2.3.0/python/Linux/GPU/x86-64_gcc8.2_avx_mkl_cuda10.1_cudnn7.6.5_trt6.0.1.5/paddlepaddle_gpu-2.3.0.post101-cp39-cp39-linux_x86_64.whl
145

T
TeslaZhao 已提交
146 147 148 149 150
# CUDA10.2 + CUDNN8 + TensorRT7 + Python(3.6-3.9)
pip3 install https://paddle-inference-lib.bj.bcebos.com/2.3.0/python/Linux/GPU/x86-64_gcc8.2_avx_mkl_cuda10.2_cudnn8.1.1_trt7.2.3.4/paddlepaddle_gpu-2.3.0-cp36-cp36m-linux_x86_64.whl
pip3 install https://paddle-inference-lib.bj.bcebos.com/2.3.0/python/Linux/GPU/x86-64_gcc8.2_avx_mkl_cuda10.2_cudnn8.1.1_trt7.2.3.4/paddlepaddle_gpu-2.3.0-cp37-cp37m-linux_x86_64.whl
pip3 install https://paddle-inference-lib.bj.bcebos.com/2.3.0/python/Linux/GPU/x86-64_gcc8.2_avx_mkl_cuda10.2_cudnn8.1.1_trt7.2.3.4/paddlepaddle_gpu-2.3.0-cp38-cp38-linux_x86_64.whl
pip3 install https://paddle-inference-lib.bj.bcebos.com/2.3.0/python/Linux/GPU/x86-64_gcc8.2_avx_mkl_cuda10.2_cudnn8.1.1_trt7.2.3.4/paddlepaddle_gpu-2.3.0-cp39-cp39-linux_x86_64.whl
151 152

```
T
TeslaZhao 已提交
153

T
TeslaZhao 已提交
154
<a name="2.2"></a>
T
TeslaZhao 已提交
155

T
TeslaZhao 已提交
156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215
### 2.2 离线安装

**1.安装离线 Wheel 包**

Serving 和 Paddle Wheel包的离线依赖包下载在 `py3x_offline_whls` 目录下 `serving_dependent_wheels/``paddle_dependent_wheels/`

通过运行 `install.py` 脚本可本地安装 Serving 和 Paddle Wheel 包。`install.py` 脚本的参数列表如下:
```
python3 install.py
  --python_version : Python version for installing wheels, one of [py36, py37, py38, py39], py37 default.
  --device : Type of devices, one of [cpu, gpu], cpu default.
  --cuda_version : CUDA version for GPU, one of [101, 102, 112, empty], empty default.
  --serving_version : Verson of Serving, one of [0.8.3, no_install], 0.8.3 default.
  --paddle_version Verson of Paddle, one of [2.2.2, no_install], 2.2.2 default.
```

**2.在环境变量中指定 `SERVING_BIN` 路径**

完成第1步安装后,若仅使用 python pipeline 模式可忽略此步骤。

如使用 C++ Serving 使用命令行方式启动服务,示例如下。则需要在命令行窗口或服务启动程序中导出环境变量 `SERVING_BIN`,使用本地的 serving 二进制程序运行服务。

C++ Serving 命令行启动服务示例:
```
python3 -m paddle_serving_server.serve --model serving_model --thread 10 --port 9292 --gpu_ids 0,1,2
```

由于所有版本的二进制程序包有 20 GB,非常大。因此提供多个版本的下载链接,通过手动 `wget` 下载指定版本到 `serving_bin` 目录下,解压后导出到环境变量中。

- cpu-avx-mkl: https://paddle-serving.bj.bcebos.com/test-dev/bin/serving-cpu-avx-mkl-0.8.3.tar.gz
- cpu-avx-openblas: https://paddle-serving.bj.bcebos.com/test-dev/bin/serving-cpu-avx-openblas-0.8.3.tar.gz
- cpu-noavx-openblas: https://paddle-serving.bj.bcebos.com/test-dev/bin/serving-cpu-noavx-openblas-0.8.3.tar.gz
- cuda10.1-cudnn7-TensorRT6: https://paddle-serving.bj.bcebos.com/test-dev/bin/serving-gpu-101-0.8.3.tar.gz
- cuda10.2-cudnn7-TensorRT6: https://paddle-serving.bj.bcebos.com/test-dev/bin/serving-gpu-102-0.8.3.tar.gz
- cuda10.2-cudnn8-TensorRT7: https://paddle-serving.bj.bcebos.com/test-dev/bin/serving-gpu-1028-0.8.3.tar.gz
- cuda11.2-cudnn8-TensorRT8: https://paddle-serving.bj.bcebos.com/test-dev/bin/serving-gpu-112-0.8.3.tar.gz

以 GPU CUDA 10.2 为例,在命令行或启动程序中设置环境变量如下:
```
export SERVING_BIN = $PWD/serving_bin/serving-gpu-102-0.8.3/serving
```

**3.运行 `install.py` 安装 Wheel 包**

1.同时安装 Serving 和 Paddle 的 py38 版本 GPU wheel 包:
```
python3 install.py --cuda_version="102" --python_version="py38" --device="GPU" --serving_version="0.8.3" --paddle_version="2.2.2"
```

2.仅安装 Serving 的 py39 版本 CPU wheel 包,设置 `--paddle_version="no_install"` 表示不安装 Paddle 预测库,设置 `--device="cpu"` 表示 cpu 版本
```
python3 install.py --cuda_version="" --python_version="py39" --device="cpu" --serving_version="0.8.3" --paddle_version="no_install"
```

3.仅安装 Paddle 的 py36 版本`cuda=11.2` 的 GPU wheel 包,
```
python3 install.py --cuda_version="112" --python_version="py36" --device="GPU" --serving_version="no_install" --paddle_version="2.2.2"
```

<a name="3"></a>
H
huangjianhui 已提交
216

T
TeslaZhao 已提交
217
## 3.环境检查
H
huangjianhui 已提交
218 219 220 221
当以上步骤均完成后可使用命令行运行环境检查功能,自动运行Paddle Serving相关示例,进行环境相关配置校验。
```
python3 -m paddle_serving_server.serve check
```
T
TeslaZhao 已提交
222
详情请参考[环境检查文档](./Check_Env_CN.md)