diff --git a/doc/Offical_Docs/11_Lookup_CN.md b/doc/Offical_Docs/11_Lookup_CN.md new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/doc/Offical_Docs/2-0_Index_CN.md b/doc/Offical_Docs/2-0_Index_CN.md new file mode 100644 index 0000000000000000000000000000000000000000..83e9309fdea4f04d1995cf004fccdf3ece9084d2 --- /dev/null +++ b/doc/Offical_Docs/2-0_Index_CN.md @@ -0,0 +1,28 @@ +# 安装指南 + +本说明将指导您在编译和安装 Paddle Serving。请根据计算硬件、操作系统和软件驱动版本等环境差异,选择正确的安装程序。 + +| 操作系统 | 计算平台 | CPU架构 | 安装指南 | +|:-------:|:-------:|:-------:|:-------:| +| Linux | CPU | x86 | [镜像安装]() | +| Linux | GPU | x86 | [镜像安装]() | +| Linux | XPU | x86 | [镜像安装]() | +| Linux | XPU | arm64 | [镜像安装]() | +| Linux | ROCM | x86 | [镜像安装]() | +| Linux | NPU | arm64 | [镜像安装]() | +| Windows | CPU | x86 | [原生系统安装]() | +| Windows | GPU | x86 | [原生系统安装]() | + + +## Docker 镜像安装(推荐) + +本章节介绍了基于提供的标准镜像环境进行安装的流程。请参考[镜像安装]() + +## 原生系统环境安装 + +本章节介绍了基于标准的 Linux 环境进行必要的环境配置,并进行安装的流程。请参考[原生系统环境]() + +## 源码编译安装 + +本章节介绍了对于有开发需求例如添加定制代码、定制化算子等的状况下,使用源码编译的流程。请参考[源码编译]() + diff --git a/doc/Offical_Docs/2-1_Docker_Images_CN.md b/doc/Offical_Docs/2-1_Docker_Images_CN.md new file mode 100644 index 0000000000000000000000000000000000000000..97967bf224be952b9496ff4c1a6adb530104584c --- /dev/null +++ b/doc/Offical_Docs/2-1_Docker_Images_CN.md @@ -0,0 +1,199 @@ +# Docker 镜像安装 + +本文档介绍基于标准镜像环境的安装流程。 + + + +## 获取镜像(第一步) + +镜像中包含以下基础组件 + +| 组件 | 版本要求 | +| :--------------------------: | :-------------------------------: | +| OS | Ubuntu16 and 18/CentOS 7 | +| gcc | 5.4.0(Cuda 10.1) and 8.2.0 | +| gcc-c++ | 5.4.0(Cuda 10.1) and 8.2.0 | +| cmake | 3.16.0 and later | +| Python | 3.6.0 and later | +| Go | 1.17.2 and later | +| git | 2.17.1 and later | +| glibc-static | 2.17 | +| openssl-devel | 1.0.2k | +| bzip2-devel | 1.0.6 and later | +| python-devel / python3-devel | 3.6.0 and later | +| sqlite-devel | 3.7.17 and later | +| patchelf | 0.9 | +| libXext | 1.3.3 | +| libSM | 1.2.2 | +| libXrender | 0.9.10 | + +**一. CPU/GPU 镜像:** + +您可以通过两种方式获取镜像。 + +1. 通过 TAG 直接从 dockerhub 或 `registry.baidubce.com` 拉取镜像,具体 TAG 请参见下文的镜像说明章节的表格** + + ```shell + docker pull registry.baidubce.com/paddlepaddle/serving: + ``` + +2. 基于 Dockerfile 构建镜像** + + 建立新目录,复制对应 Dockerfile 内容到该目录下 Dockerfile 文件。执行 + + ```shell + docker build -f tools/${DOCKERFILE} -t : . + ``` + +若需要基于源代码二次开发编译,请使用后缀为 -devel 的版本。 + + +| 镜像选择 | 操作系统 | TAG | Dockerfile | +| :----------------------------------------------------------: | :-----: | :--------------------------: | :----------------------------------------------------------: | +| CPU development | Ubuntu16 | 0.8.0-devel | [Dockerfile.devel](../tools/Dockerfile.devel) | +| GPU (cuda10.1-cudnn7-tensorRT6-gcc54) development | Ubuntu16 | 0.8.0-cuda10.1-cudnn7-gcc54-devel (not ready) | [Dockerfile.cuda10.1-cudnn7-gcc54.devel](../tools/Dockerfile.cuda10.1-cudnn7-gcc54.devel) | +| GPU (cuda10.1-cudnn7-tensorRT6) development | Ubuntu16 | 0.8.0-cuda10.1-cudnn7-devel | [Dockerfile.cuda10.1-cudnn7.devel](../tools/Dockerfile.cuda10.1-cudnn7.devel) | +| GPU (cuda10.2-cudnn7-tensorRT6) development | Ubuntu16 | 0.8.0-cuda10.2-cudnn7-devel | [Dockerfile.cuda10.2-cudnn7.devel](../tools/Dockerfile.cuda10.2-cudnn7.devel) | +| GPU (cuda10.2-cudnn8-tensorRT7) development | Ubuntu16 | 0.8.0-cuda10.2-cudnn8-devel | [Dockerfile.cuda10.2-cudnn8.devel](../tools/Dockerfile.cuda10.2-cudnn8.devel) | +| GPU (cuda11.2-cudnn8-tensorRT8) development | Ubuntu16 | 0.8.0-cuda11.2-cudnn8-devel | [Dockerfile.cuda11.2-cudnn8.devel](../tools/Dockerfile.cuda11.2-cudnn8.devel) | +| CPU Runtime |Ubuntu 16|0.8.0-runtime|| +| GPU (cuda10.1-cudnn7-tensorRT6) Runtime |Ubuntu 16|0.8.0-cuda10.1-cudnn7-runtime|| +| GPU (cuda10.2-cudnn8-tensorRT7) Runtime |Ubuntu 16|0.8.0-cuda10.2-cudnn8-runtime|| +| GPU (cuda11.2-cudnn8-tensorRT8) Runtime |Ubuntu 16|0.8.0-cuda11.2-cudnn8-runtime|| + +**二. Java 镜像:** + +``` +docker pull registry.baidubce.com/paddlepaddle/serving:0.8.0-cuda10.2-java +``` + +| 镜像选择 | 操作系统 | TAG | +| :----------------------------------------------------------: | :-----: | :--------------------------: | +| GPU (cuda10.2-cudnn7-tensorRT6) development for Java | Ubuntu16 | 0.8.0-cuda10.2-java | + +**三. XPU 镜像:** +``` +docker pull registry.baidubce.com/paddlepaddle/serving:xpu-arm # for arm xpu user +docker pull registry.baidubce.com/paddlepaddle/serving:xpu-x86 # for x86 xpu user +``` + +| 镜像选择 | 操作系统 | TAG | +| :----------------------------------------------------------: | :-----: | :--------------------------: | +| XPU (arm64) development | kylin10 | xpu-arm | +| XPU (x86) development | Ubuntu16 | xpu-x86 | + +**四. ROCM 镜像:** +``` +docker pull paddlepaddle/paddle:latest-dev-rocm4.0-miopen2.11 # for x86 rocm user +``` + +| 镜像选择 | 操作系统 | TAG | +| :----------------------------------------------------------: | :-----: | :--------------------------: | +| ROCM4.0 (x86) development | Ubuntu16 | latest-dev-rocm4.0-miopen2.11 | + +**五. NPU 镜像:** +``` +docker pull paddlepaddle/paddle:latest-dev-cann5.0.2.alpha005-gcc82-aarch64 # for arm ascend910 user +docker pull registry.baidubce.com/paddlepaddle/serving:ascend-aarch64-cann3.3.0-paddlelite-devel # for arm ascend310 user +``` + +| 镜像选择 | 操作系统 | TAG | +| :----------------------------------------------------------: | :-----: | :--------------------------: | +| Ascend910 (arm64 cann5.0.2) development | kylin10 | latest-dev-cann5.0.2.alpha005-gcc82-aarch64 | +| Ascend310 (arm64 cann3.3.0) development | kylin10 | ascend-aarch64-cann3.3.0-paddlelite-devel | + +## 使用 pip 安装(第二步) + +本节将介绍使用 pip 安装 Paddle Serving +以下示例中 GPU 环境均为 cuda10.2-cudnn7 + +**一. 启动开发镜像** + + **CPU:** + + ``` + # 启动 CPU Docker + docker pull paddlepaddle/serving:0.8.0-devel + docker run -p 9292:9292 --name test -dit paddlepaddle/serving:0.8.0-devel bash + docker exec -it test bash + git clone https://github.com/PaddlePaddle/Serving + ``` + + **GPU:** + + ``` + # 启动 GPU Docker + docker pull paddlepaddle/serving:0.8.0-cuda10.2-cudnn7-devel + nvidia-docker run -p 9292:9292 --name test -dit paddlepaddle/serving:0.8.0-cuda10.2-cudnn7-devel bash + nvidia-docker exec -it test bash + git clone https://github.com/PaddlePaddle/Serving + ``` + +**二. 安装所需的 pip 依赖** + + ``` + cd Serving + pip3 install -r python/requirements.txt + ``` + **注意**: 如果您直接使用 PaddlePaddle 提供的开发镜像,需要执行以下脚本增加 Serving 所需依赖项 + ``` + wget https://paddle-serving.bj.bcebos.com/tools/paddle_env_install.sh + bash paddle_env_install.sh + ``` + +**三. 安装服务 whl 包** + + 服务 whl 包包括: client、app、server,其中 Server 分为 CPU 和 GPU,GPU 包根据您的环境选择一种安装 + + + + ``` + pip3 install paddle-serving-client==0.8.3 -i https://pypi.tuna.tsinghua.edu.cn/simple + pip3 install paddle-serving-app==0.8.3 -i https://pypi.tuna.tsinghua.edu.cn/simple + + # CPU Server + pip3 install paddle-serving-server==0.8.3 -i https://pypi.tuna.tsinghua.edu.cn/simple + + # GPU Server,需要确认环境再选择执行哪一条,推荐使用CUDA 10.2的包 + #CUDA10.2 + Cudnn7 + TensorRT6(推荐) + pip3 install paddle-serving-server-gpu==0.8.3.post102 -i https://pypi.tuna.tsinghua.edu.cn/simple + #CUDA10.1 + TensorRT6 + pip3 install paddle-serving-server-gpu==0.8.3.post101 -i https://pypi.tuna.tsinghua.edu.cn/simple + #CUDA11.2 + TensorRT8 + pip3 install paddle-serving-server-gpu==0.8.3.post112 -i https://pypi.tuna.tsinghua.edu.cn/simple + + ``` + + 默认开启国内清华镜像源来加速下载,如果您使用 HTTP 代理可以关闭(`-i https://pypi.tuna.tsinghua.edu.cn/simple`) + +**四. 安装 Paddle 相关 Python 库**(可选) + + + **当您使用`paddle_serving_client.convert`命令或者`Python Pipeline 框架`时才需要安装。** + + + **注意**: 如果您的 Cuda 版本不是10.2,或者您需要在 GPU 环境上使用 TensorRT,请勿直接执行上述命令,需要参考[Paddle-Inference官方文档-下载安装Linux预测库](https:/paddleinference.paddlepaddle.org.cn/master/user_guides/download_lib.html#python)选择相应的 GPU 环境的 url 链接并进行安装。 + ``` + # CPU 环境请执行 + pip3 install paddlepaddle==2.2.2 + + # GPU CUDA 10.2环境请执行 + pip3 install paddlepaddle-gpu==2.2.2 + ``` + + +**五. 安装完成后的环境检查** + 当以上步骤均完成后可使用命令行运行环境检查功能,自动运行 Paddle Serving 相关示例,进行环境相关配置校验。 + + ``` + python3 -m paddle_serving_server.serve check + # 以下输出表明环境检查正常 + (Cmd) check_all + PaddlePaddle inference environment running success + C++ cpu environment running success + C++ gpu environment running success + Pipeline cpu environment running success + Pipeline gpu environment running success + ``` + + 详情请参考[环境检查文档](./Check_Env_CN.md) diff --git a/doc/Offical_Docs/2-2_Environment_CN.md b/doc/Offical_Docs/2-2_Environment_CN.md new file mode 100644 index 0000000000000000000000000000000000000000..df05840c40521f2f237537ace95bb6ddb6c3f8a3 --- /dev/null +++ b/doc/Offical_Docs/2-2_Environment_CN.md @@ -0,0 +1,321 @@ +# 原生系统标准环境安装 + +本文介绍基于原生系统标准环境进行配置安装。 + + + + +## CentOS 7 环境配置(第一步) + +**一.环境准备** + +* **Python 版本 3.6/3.7/3.8/3.9 (64 bit)** + +**二.选择 CPU/GPU** + +* 如果您的计算机有 NVIDIA® GPU,请确保满足以下条件 + + * **CUDA 工具包:10.1/10.2 配合 cuDNN 7 (cuDNN 版本>=7.6.5) 或者 11.2 配合 cuDNN v8.1.1** + * **兼容版本的 TensorRT** + * **GPU运算能力超过3.5的硬件设备** + + 您可参考NVIDIA官方文档了解CUDA和CUDNN的安装流程和配置方法,请见[CUDA](https://docs.nvidia.com/cuda/cuda-installation-guide-linux/),[cuDNN](https://docs.nvidia.com/deeplearning/sdk/cudnn-install/),[TensorRT](https://docs.nvidia.com/deeplearning/tensorrt/index.html), [GPU算力](https://developer.nvidia.com/cuda-gpus) + +**三.安装必要工具** + +需要安装的依赖库及工具详见下表: + +| 组件 | 版本要求 | +| :--------------------------: | :-------------------------------: | +| bzip2-devel | 1.0.6 and later | +| make | later | +| gcc | 8.2.0 | +| gcc-c++ | 8.2.0 | +| cmake | 3.15.0 and later | +| Go | 1.17.2 and later | +| openssl-devel | 1.0.2k | +| patchelf | 0.9 | + +1. 更新系统源 + + 更新`yum`的源: + + ``` + yum update + ``` + + 并添加必要的yum源: + + ``` + yum install -y epel-release + ``` + +2. 安装工具 + + `bzip2`以及`make`: + + ``` + yum install -y bzip2 + ``` + + ``` + yum install -y make + ``` + + cmake 需要3.15以上,建议使用3.16.0: + + ``` + wget -q https://cmake.org/files/v3.16/cmake-3.16.0-Linux-x86_64.tar.gz + ``` + + ``` + tar -zxvf cmake-3.16.0-Linux-x86_64.tar.gz + ``` + + ``` + rm cmake-3.16.0-Linux-x86_64.tar.gz + ``` + + ``` + PATH=/home/cmake-3.16.0-Linux-x86_64/bin:$PATH + ``` + + gcc 需要5.4以上,建议使用8.2.0: + + ``` + wget -q https://paddle-docker-tar.bj.bcebos.com/home/users/tianshuo/bce-python-sdk-0.8.27/gcc-8.2.0.tar.xz && \ + tar -xvf gcc-8.2.0.tar.xz && \ + cd gcc-8.2.0 && \ + sed -i 's#ftp://gcc.gnu.org/pub/gcc/infrastructure/#https://paddle-ci.gz.bcebos.com/#g' ./contrib/download_prerequisites && \ + unset LIBRARY_PATH CPATH C_INCLUDE_PATH PKG_CONFIG_PATH CPLUS_INCLUDE_PATH INCLUDE && \ + ./contrib/download_prerequisites && \ + cd .. && mkdir temp_gcc82 && cd temp_gcc82 && \ + ../gcc-8.2.0/configure --prefix=/usr/local/gcc-8.2 --enable-threads=posix --disable-checking --disable-multilib && \ + make -j8 && make install + ``` + +3. 安装GOLANG + + 建议使用 go1.17.2: + + ``` + wget -qO- https://go.dev/dl/go1.17.2.linux-amd64.tar.gz | \ + tar -xz -C /usr/local && \ + mkdir /root/go && \ + mkdir /root/go/bin && \ + mkdir /root/go/src && \ + echo "GOROOT=/usr/local/go" >> /root/.bashrc && \ + echo "GOPATH=/root/go" >> /root/.bashrc && \ + echo "PATH=/usr/local/go/bin:/root/go/bin:$PATH" >> /root/.bashrc + source /root/.bashrc + ``` + +4. 安装依赖库 + + 安装相关依赖库 patchelf: + + ``` + yum install patchelf + ``` + + 配置 ssl 依赖库 + + ``` + wget https://paddle-serving.bj.bcebos.com/others/centos_ssl.tar && \ + tar xf centos_ssl.tar && rm -rf centos_ssl.tar && \ + mv libcrypto.so.1.0.2k /usr/lib/libcrypto.so.1.0.2k && mv libssl.so.1.0.2k /usr/lib/libssl.so.1.0.2k && \ + ln -sf /usr/lib/libcrypto.so.1.0.2k /usr/lib/libcrypto.so.10 && \ + ln -sf /usr/lib/libssl.so.1.0.2k /usr/lib/libssl.so.10 && \ + ln -sf /usr/lib/libcrypto.so.10 /usr/lib/libcrypto.so && \ + ln -sf /usr/lib/libssl.so.10 /usr/lib/libssl.so + ``` + +## Ubuntu 16.04/18.04 环境配置(第一步) + +**一.环境准备** + +* **Python 版本 3.6/3.7/3.8/3.9 (64 bit)** + +**二.选择 CPU/GPU** + +* 如果您的计算机有 NVIDIA® GPU,请确保满足以下条件 + + * **CUDA 工具包 10.1/10.2 配合 cuDNN 7 (cuDNN 版本>=7.6.5)** + * **CUDA 工具包 11.2 配合 cuDNN v8.1.1** + * **配套版本的 TensorRT** + * **GPU运算能力超过3.5的硬件设备** + + 您可参考NVIDIA官方文档了解CUDA和CUDNN的安装流程和配置方法,请见[CUDA](https://docs.nvidia.com/cuda/cuda-installation-guide-linux/),[cuDNN](https://docs.nvidia.com/deeplearning/sdk/cudnn-install/),[TensorRT](https://docs.nvidia.com/deeplearning/tensorrt/index.html) + +**三.安装必要工具** + +1. 更新系统源 + + 更新`apt`的源: + + ``` + apt update + ``` + +2. 安装工具 + + `bzip2`以及`make`: + + ``` + apt install -y bzip2 + ``` + ``` + apt install -y make + ``` + + cmake 需要3.15以上,建议使用3.16.0: + + ``` + wget -q https://cmake.org/files/v3.16/cmake-3.16.0-Linux-x86_64.tar.gz + ``` + + ``` + tar -zxvf cmake-3.16.0-Linux-x86_64.tar.gz + ``` + + ``` + rm cmake-3.16.0-Linux-x86_64.tar.gz + ``` + + ``` + PATH=/home/cmake-3.16.0-Linux-x86_64/bin:$PATH + ``` + + gcc 需要5.4以上,建议使用8.2.0: + + ``` + wget -q https://paddle-docker-tar.bj.bcebos.com/home/users/tianshuo/bce-python-sdk-0.8.27/gcc-8.2.0.tar.xz && \ + tar -xvf gcc-8.2.0.tar.xz && \ + cd gcc-8.2.0 && \ + sed -i 's#ftp://gcc.gnu.org/pub/gcc/infrastructure/#https://paddle-ci.gz.bcebos.com/#g' ./contrib/download_prerequisites && \ + unset LIBRARY_PATH CPATH C_INCLUDE_PATH PKG_CONFIG_PATH CPLUS_INCLUDE_PATH INCLUDE && \ + ./contrib/download_prerequisites && \ + cd .. && mkdir temp_gcc82 && cd temp_gcc82 && \ + ../gcc-8.2.0/configure --prefix=/usr/local/gcc-8.2 --enable-threads=posix --disable-checking --disable-multilib && \ + make -j8 && make install + ``` + +3. 安装GOLANG + + 建议使用 go1.17.2: + + ``` + wget -qO- https://go.dev/dl/go1.17.2.linux-amd64.tar.gz | \ + tar -xz -C /usr/local && \ + mkdir /root/go && \ + mkdir /root/go/bin && \ + mkdir /root/go/src && \ + echo "GOROOT=/usr/local/go" >> /root/.bashrc && \ + echo "GOPATH=/root/go" >> /root/.bashrc && \ + echo "PATH=/usr/local/go/bin:/root/go/bin:$PATH" >> /root/.bashrc + source /root/.bashrc + ``` + +4. 安装依赖库 + + 安装相关依赖库 patchelf: + + ``` + apt-get install patchelf + ``` + + 配置 ssl 依赖库 + + ``` + wget https://paddle-serving.bj.bcebos.com/others/centos_ssl.tar && \ + tar xf centos_ssl.tar && rm -rf centos_ssl.tar && \ + mv libcrypto.so.1.0.2k /usr/lib/libcrypto.so.1.0.2k && mv libssl.so.1.0.2k /usr/lib/libssl.so.1.0.2k && \ + ln -sf /usr/lib/libcrypto.so.1.0.2k /usr/lib/libcrypto.so.10 && \ + ln -sf /usr/lib/libssl.so.1.0.2k /usr/lib/libssl.so.10 && \ + ln -sf /usr/lib/libcrypto.so.10 /usr/lib/libcrypto.so && \ + ln -sf /usr/lib/libssl.so.10 /usr/lib/libssl.so + ``` + +## Windows 环境配置(第一步) + +由于受限第三方库的支持,Windows平台目前只支持用web service的方式搭建local predictor预测服务。 + +**一.环境准备** + +* **Python 版本 3.6/3.7/3.8/3.9 (64 bit)** + +**二.选择 CPU/GPU** + +* 如果您的计算机有 NVIDIA® GPU,请确保满足以下条件 + + * **CUDA 工具包 10.1/10.2 配合 cuDNN 7 (cuDNN 版本>=7.6.5)** + * **CUDA 工具包 11.2 配合 cuDNN v8.1.1** + * **配套版本的 TensorRT** + * **GPU运算能力超过3.5的硬件设备** + + 您可参考NVIDIA官方文档了解CUDA和CUDNN的安装流程和配置方法,请见[CUDA](https://docs.nvidia.com/cuda/cuda-installation-guide-linux/),[cuDNN](https://docs.nvidia.com/deeplearning/sdk/cudnn-install/),[TensorRT](https://docs.nvidia.com/deeplearning/tensorrt/index.html) + +**三.安装必要工具** + +1. 更新 wget 工具 + + 在链接[下载wget](http://gnuwin32.sourceforge.net/packages/wget.htm),解压后复制到`C:\Windows\System32`下,如有安全提示需要通过。 + +2. 安装git工具 + + 详情参见[Git官网](https://git-scm.com/downloads) + +3. 安装必要的C++库(可选) + + 部分用户可能会在`import paddle`阶段遇见dll无法链接的问题,建议[安装Visual Studio社区版本](https://visualstudio.microsoft.com/) ,并且安装C++的相关组件。 + +## 使用 pip 安装(第二步) + +**一. 安装服务 whl 包** + + 服务 whl 包包括: client、app、server,其中 Server 分为 CPU 和 GPU,GPU 包根据您的环境选择一种安装 + + ``` + pip3 install paddle-serving-client==0.8.3 -i https://pypi.tuna.tsinghua.edu.cn/simple + pip3 install paddle-serving-app==0.8.3 -i https://pypi.tuna.tsinghua.edu.cn/simple + + # CPU Server + pip3 install paddle-serving-server==0.8.3 -i https://pypi.tuna.tsinghua.edu.cn/simple + + # GPU Server,需要确认环境再选择执行哪一条,推荐使用CUDA 10.2的包 + # CUDA10.2 + Cudnn7 + TensorRT6(推荐) + pip3 install paddle-serving-server-gpu==0.8.3.post102 -i https://pypi.tuna.tsinghua.edu.cn/simple + # CUDA10.1 + TensorRT6 + pip3 install paddle-serving-server-gpu==0.8.3.post101 -i https://pypi.tuna.tsinghua.edu.cn/simple + # CUDA11.2 + TensorRT8 + pip3 install paddle-serving-server-gpu==0.8.3.post112 -i https://pypi.tuna.tsinghua.edu.cn/simple + ``` + + 默认开启国内清华镜像源来加速下载,如果您使用 HTTP 代理可以关闭(`-i https://pypi.tuna.tsinghua.edu.cn/simple`) + +**二. 安装 Paddle 相关 Python 库** + **当您使用`paddle_serving_client.convert`命令或者`Python Pipeline 框架`时才需要安装。** + ``` + # CPU 环境请执行 + pip3 install paddlepaddle==2.2.2 + + # GPU CUDA 10.2环境请执行 + pip3 install paddlepaddle-gpu==2.2.2 + ``` + **注意**: 如果您的 Cuda 版本不是10.2,或者您需要在 GPU 环境上使用 TensorRT,请勿直接执行上述命令,需要参考[Paddle-Inference官方文档-下载安装Linux预测库](https:/paddleinference.paddlepaddle.org.cn/master/user_guides/download_lib.html#python)选择相应的 GPU 环境的 url 链接并进行安装。 + +**三. 安装完成后的环境检查** + 当以上步骤均完成后可使用命令行运行环境检查功能,自动运行 Paddle Serving 相关示例,进行环境相关配置校验。 + + ``` + python3 -m paddle_serving_server.serve check + # 以下输出表明环境检查正常 + (Cmd) check_all + PaddlePaddle inference environment running success + C++ cpu environment running success + C++ gpu environment running success + Pipeline cpu environment running success + Pipeline gpu environment running success + ``` + + 详情请参考[环境检查文档](./Check_Env_CN.md) \ No newline at end of file diff --git a/doc/Offical_Docs/2-3_Compile_CN.md b/doc/Offical_Docs/2-3_Compile_CN.md new file mode 100644 index 0000000000000000000000000000000000000000..150c426bdd59d015d05fc66c9f23374ad0937235 --- /dev/null +++ b/doc/Offical_Docs/2-3_Compile_CN.md @@ -0,0 +1,310 @@ +# 如何编译 PaddleServing + +## 总体概述 + +编译 Paddle Serving 一共分以下几步 + +- 编译环境准备:根据模型和运行环境的需要,选择最合适的镜像 +- 下载代码库:下载 Serving 代码库,按需要执行初始化操作 +- 环境变量准备:根据运行环境的需要,确定 Python 各个环境变量,如GPU环境还需要确定 Cuda,Cudnn,TensorRT 等环境变量。 +- 正式编译: 编译 `paddle-serving-server`, `paddle-serving-client`, `paddle-serving-app` 相关 whl 包 +- 安装相关 whl 包:安装编译出的三个 whl 包,并设置 SERVING_BIN 环境变量 + +此外,针对某些 C++ 二次开发场景,我们也提供了 OPENCV 的联编方案。 + + + + +## 编译环境准备 + +| 组件 | 版本要求 | +| :--------------------------: | :-------------------------------: | +| OS | Ubuntu16 and 18/CentOS 7 | +| gcc | 5.4.0(Cuda 10.1) and 8.2.0 | +| gcc-c++ | 5.4.0(Cuda 10.1) and 8.2.0 | +| cmake | 3.16.0 and later | +| Python | 3.6.0 and later | +| Go | 1.17.2 and later | +| git | 2.17.1 and later | +| glibc-static | 2.17 | +| openssl-devel | 1.0.2k | +| bzip2-devel | 1.0.6 and later | +| python-devel / python3-devel | 3.6.0 and later | +| sqlite-devel | 3.7.17 and later | +| patchelf | 0.9 | +| libXext | 1.3.3 | +| libSM | 1.2.2 | +| libXrender | 0.9.10 | + +推荐使用 Docker 编译,我们已经为您准备好了 Paddle Serving 编译环境并配置好了上述编译依赖,详见[镜像环境](Docker_Images_CN.md)。 + +我们提供了五个环境的开发镜像,分别是 CPU, CUDA10.1+CUDNN7, CUDA10.2+CUDNN7,CUDA10.2+CUDNN8, CUDA11.2+CUDNN8。我们提供了 Serving 开发镜像涵盖以上环境。 + + +| 环境 | Serving 开发镜像Tag | 操作系统 +| :--------------------------: | :-------------------------------: | :-------------: | +| CPU | 0.8.0-devel | Ubuntu 16.04 | +| CUDA10.1 + CUDNN7 | 0.8.0-cuda10.1-cudnn7-devel | Ubuntu 16.04 | +| CUDA10.2 + CUDNN7 | 0.8.0-cuda10.2-cudnn7-devel | Ubuntu 16.04 | +| CUDA10.2 + CUDNN8 | 0.8.0-cuda10.2-cudnn8-devel | Ubuntu 16.04 | +| CUDA11.2 + CUDNN8 | 0.8.0-cuda11.2-cudnn8-devel | Ubuntu 16.04 | + +我们首先要针对自己所需的环境拉取相关镜像。上表**环境**一列下,除了 CPU,其余(Cuda**+Cudnn**)都属于 GPU 环境。 +您可以使用 Serving 开发镜像。 +``` +docker pull registry.baidubce.com/paddlepaddle/serving:${Serving开发镜像Tag} + +# 如果是 GPU 镜像 +nvidia-docker run --rm -it registry.baidubce.com/paddlepaddle/serving:${Serving开发镜像Tag} bash + +# 如果是 CPU 镜像 +docker run --rm -it registry.baidubce.com/paddlepaddle/serving:${Serving开发镜像Tag} bash +``` + + +## 下载代码库 +``` +git clone https://github.com/PaddlePaddle/Serving +cd Serving && git submodule update --init --recursive + +``` + +## 环境变量准备 + +**一. 设置 PYTHON 环境变量** + +请按照如下,确定好需要编译的 Python 版本,设置对应的环境变量,一共需要设置三个环境变量,分别是 `PYTHON_INCLUDE_DIR`, `PYTHON_LIBRARIES`, `PYTHON_EXECUTABLE`。以下我们以 python 3.7为例,介绍如何设置这三个环境变量。 + +``` +# 请自行修改至自身路径 +export PYTHON_INCLUDE_DIR=/usr/local/include/python3.7m/ +export PYTHON_LIBRARIES=/usr/local/lib/x86_64-linux-gnu/libpython3.7m.so +export PYTHON_EXECUTABLE=/usr/local/bin/python3.7 + +export GOPATH=$HOME/go +export PATH=$PATH:$GOPATH/bin + +python3.7 -m pip install -r python/requirements.txt + +go env -w GO111MODULE=on +go env -w GOPROXY=https://goproxy.cn,direct +go install github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway@v1.15.2 +go install github.com/grpc-ecosystem/grpc-gateway/protoc-gen-swagger@v1.15.2 +go install github.com/golang/protobuf/protoc-gen-go@v1.4.3 +go install google.golang.org/grpc@v1.33.0 +go env -w GO111MODULE=auto +``` +环境变量的含义如下表所示。 + +| cmake 环境变量 | 含义 | 注意事项 | Docker 环境是否需要 | +|-----------------------|-------------------------------------|-------------------------------|--------------------| +| PYTHON_INCLUDE_DIR | Python.h 所在的目录,通常为 **/include/python3.7/Python.h | 如果没有找到。说明 1)没有安装开发版本的 Python,需重新安装 2)权限不足无法查看相关系统目录。 | 是(/usr/local/include/python3.7) | +| PYTHON_LIBRARIES | libpython3.7.so 或 libpython3.7m.so 所在目录,通常为 /usr/local/lib | 如果没有找到。说明 1)没有安装开发版本的 Python,需重新安装 2)权限不足无法查看相关系统目录。 | 是(/usr/local/lib/x86_64-linux-gnu/libpython3.7m.so) | +| PYTHON_EXECUTABLE | python3.7 所在目录,通常为 /usr/local/bin | | 是(/usr/local/bin/python3.7) | + + +**二. 设置 CUDA 环境变量** + + +如果您是 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 版本。 +全部编译选项详见附录。 + +**一. 编译 paddle-serving-server** + +如果是 CPU 版本请运行, + +``` +mkdir build_server +cd build_server +cmake -DPYTHON_INCLUDE_DIR=$PYTHON_INCLUDE_DIR \ + -DPYTHON_LIBRARIES=$PYTHON_LIBRARIES \ + -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \ + -DSERVER=ON \ + -DWITH_GPU=OFF .. +make -j20 +cd .. +``` + +如果是 GPU 版本,请运行, +``` +mkdir build_server +cd build_server +cmake -DPYTHON_INCLUDE_DIR=$PYTHON_INCLUDE_DIR \ + -DPYTHON_LIBRARIES=$PYTHON_LIBRARIES \ + -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \ + -DCUDA_TOOLKIT_ROOT_DIR=$CUDA_PATH \ + -DCUDNN_LIBRARY=$CUDNN_LIBRARY \ + -DCUDA_CUDART_LIBRARY=$CUDA_CUDART_LIBRARY \ + -DTENSORRT_ROOT=$TENSORRT_LIBRARY_PATH \ + -DSERVER=ON \ + -DWITH_GPU=ON .. +make -j20 +cd .. +``` + +编译出的 whl 包在 `build_server/python/dist/` 目录下,编译出的二进制文件在 `build_server/core/general-server/serving` 路径下。 + +**二. 编译 paddle-serving-client** + +接下来,我们继续编译 client,这个包的编译命令在所有平台通用,不区分 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 -j10 +cd .. +``` +编译出的 whl 包在 `build_client/python/dist/` 目录下。 + +**三. 编译 paddle-serving-app** + +``` +# 编译 paddle-serving-app +mkdir build_app +cd build_app +cmake -DPYTHON_INCLUDE_DIR=$PYTHON_INCLUDE_DIR \ + -DPYTHON_LIBRARIES=$PYTHON_LIBRARIES \ + -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \ + -DAPP=ON .. +make -j10 +cd .. +``` +编译出的 whl 包在 `build_app/python/dist/` 目录下。 + +## 安装相关 whl 包 +``` +pip3.7 install -r build_server/python/dist/*.whl +pip3.7 install -r build_client/python/dist/*.whl +pip3.7 install -r build_app/python/dist/*.whl +export SERVING_BIN=${PWD}/build_server/core/general-server/serving +``` + +注意到最后一行 `export SERVING_BIN`,运行 python 端 Server 时,会检查 `SERVING_BIN` 环境变量,如果想使用自己编译的二进制文件,请将设置该环境变量为对应二进制文件的路径,通常是 `export SERVING_BIN=${BUILD_DIR}/core/general-server/serving`。 +其中 BUILD_DIR 为 `build_server` 的绝对路径。 +可以 cd build_server 路径下,执行 `export SERVING_BIN=${PWD}/core/general-server/serving` + + +## 开启 WITH_OPENCV 选项编译 C++ Server + +**注意:** 只有当您需要对 Paddle Serving C++ 部分进行二次开发,且新增的代码依赖于 OpenCV 库时,您才需要这样做。 + +编译 Serving C++ Server 部分,开启 WITH_OPENCV 选项时,需要已安装的 OpenCV 库,若尚未安装,可参考本文档后面的说明编译安装 OpenCV 库。 + +以开启 WITH_OPENCV 选项,编译 CPU 版本 Paddle Inference Library 为例,在上述编译命令基础上,加入 `DOPENCV_DIR=${OPENCV_DIR}` 和 `DWITH_OPENCV=ON` 选项。 +``` +OPENCV_DIR=your_opencv_dir #`your_opencv_dir` 为 opencv 库的安装路径。 +mkdir build_server && cd build_server +cmake -DPYTHON_INCLUDE_DIR=$PYTHON_INCLUDE_DIR/ \ + -DPYTHON_LIBRARIES=$PYTHON_LIBRARIES \ + -DPYTHON_EXECUTABLE=$PYTHON_EXECUTABLE \ + -DOPENCV_DIR=${OPENCV_DIR} \ + -DWITH_OPENCV=ON \ + -DSERVER=ON .. +make -j10 +``` + +**注意:** 编译成功后,需要设置 `SERVING_BIN` 路径。 + + + + + +## 附: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 | +| WITH_TRT | Compile Paddle Serving with TensorRT | OFF | +| WITH_OPENCV | Compile Paddle Serving with OPENCV | OFF | +| CUDNN_LIBRARY | Define CuDNN library and header path | | +| CUDA_TOOLKIT_ROOT_DIR | Define CUDA PATH | | +| TENSORRT_ROOT | Define TensorRT PATH | | +| CLIENT | Compile Paddle Serving Client | OFF | +| SERVER | Compile Paddle Serving Server | OFF | +| APP | Compile Paddle Serving App package | OFF | +| PACK | Compile for whl | OFF | + + +## 附:编译安装 OpenCV 库 +**注意:** 只有当您需要在 C++ 代码中引入 OpenCV 库时,您才需要这样做。 + +* 首先需要从 OpenCV 官网上下载在 Linux 环境下源码编译的包,以 OpenCV3.4.7 为例,下载命令如下。 + +``` +wget https://github.com/opencv/opencv/archive/3.4.7.tar.gz +tar -xf 3.4.7.tar.gz +``` + +最终可以在当前目录下看到 `opencv-3.4.7/` 的文件夹。 + +* 编译 OpenCV,设置 OpenCV 源码路径(`root_path`)以及安装路径(`install_path`)。进入 OpenCV 源码路径下,按照下面的方式进行编译。 + +```shell +root_path=your_opencv_root_path +install_path=${root_path}/opencv3 + +rm -rf build +mkdir build +cd build + +cmake .. \ + -DCMAKE_INSTALL_PREFIX=${install_path} \ + -DCMAKE_BUILD_TYPE=Release \ + -DBUILD_SHARED_LIBS=OFF \ + -DWITH_IPP=OFF \ + -DBUILD_IPP_IW=OFF \ + -DWITH_LAPACK=OFF \ + -DWITH_EIGEN=OFF \ + -DCMAKE_INSTALL_LIBDIR=lib64 \ + -DWITH_ZLIB=ON \ + -DBUILD_ZLIB=ON \ + -DWITH_JPEG=ON \ + -DBUILD_JPEG=ON \ + -DWITH_PNG=ON \ + -DBUILD_PNG=ON \ + -DWITH_TIFF=ON \ + -DBUILD_TIFF=ON + +make -j +make install +``` + + +其中 `root_path` 为下载的 OpenCV 源码路径,`install_path` 为 OpenCV 的安装路径,`make install` 完成之后,会在该文件夹下生成 OpenCV 头文件和库文件,用于引用 OpenCV 库的代码的编译。 + +最终在安装路径下的文件结构如下所示。 + +``` +opencv3/ +|-- bin +|-- include +|-- lib +|-- lib64 +|-- share +``` diff --git a/doc/Offical_Docs/2-5_Serving_Auth_Docker_CN.md b/doc/Offical_Docs/2-5_Serving_Auth_Docker_CN.md new file mode 100644 index 0000000000000000000000000000000000000000..2cbd305040ee36a641d62c00e8b4075dc3426fbe --- /dev/null +++ b/doc/Offical_Docs/2-5_Serving_Auth_Docker_CN.md @@ -0,0 +1,195 @@ +# 在Paddle Serving使用安全网关 + +## 简介 + +在之前的服务部署示例中,我们都从开发的角度切入,然而,在现实的生产环境中,仅仅提供一个能够预测的远端服务接口还远远不够。我们仍然要考虑以下不足。 + +- 这个服务还不能以网关的形式提供,访问路径难以管理。 +- 这个服务接口不够安全,需要做相应的鉴权。 +- 这个服务接口不能够控制流量,无法合理利用资源。 + +本文档的作用,就以 Uci 房价预测服务为例,来介绍如何强化预测服务 API 接口安全。API 网关作为流量入口,对接口进行统一管理。但 API 网关可以提供流量加密和鉴权等安全功能。 + +## Docker部署 + +可以使用 docker-compose 来部署安全网关。这个示例的步骤就是 [部署本地Serving容器] - [部署本地安全网关] - [通过安全网关访问Serving] + +**注明:** docker-compose 与 docker 不一样,它依赖于 docker,一次可以部署多个 docker 容器,可以类比于本地版的 kubenetes,docker-compose 的教程请参考[docker-compose安装](https://docs.docker.com/compose/install/) + +```shell +docker-compose -f tools/auth/auth-serving-docker.yaml up -d +``` + +可以通过 `docker ps` 来查看启动的容器。 + +```shell +3035cf445029 pantsel/konga:next "/app/start.sh" About an hour ago Up About an hour 0.0.0.0:8005->1337/tcp anquan_konga_1 +7ce3abee550c registry.baidubce.com/serving_gateway/kong:paddle "/docker-entrypoint.…" About an hour ago Up About an hour (healthy) 0.0.0.0:8000->8000/tcp, 127.0.0.1:8001->8001/tcp, 0.0.0.0:8443->8443/tcp, 127.0.0.1:8444->8444/tcp anquan_kong_1 +25810fd79a27 postgres:9.6 "docker-entrypoint.s…" About an hour ago Up About an hour (healthy) 5432/tcp anquan_db_1 +ee59a3dd4806 registry.baidubce.com/serving_dev/serving-runtime:cpu-py36 "bash -c ' wget --no…" About an hour ago Up About an hour 0.0.0.0:9393->9393/tcp anquan_serving_1 +665fd8a34e15 redis:latest "docker-entrypoint.s…" About an hour ago Up About an hour 0.0.0.0:6379->6379/tcp anquan_redis_1 +``` + +其中我们之前 serving 容器 以 9393 端口暴露,KONG 网关的端口是 8443, KONG 的 Web 控制台的端口是 8001。接下来我们在浏览器访问 `https://$IP_ADDR:8001`, 其中 IP_ADDR 就是宿主机的 IP 。 + + +可以看到在注册结束后,登陆,看到了 DASHBOARD,我们先看 SERVICES,可以看到 `serving_service`,这意味着我们端口在 9393 的 Serving 服务已经在 KONG 当中被注册。 + + + + +然后在 ROUTES 中,我们可以看到 serving 被链接到了 `/serving-uci`。 + +最后我们点击 CONSUMERS - default_user - Credentials - API KEYS ,我们可以看到 `Api Keys` 下看到很多 key + + + +接下来可以通过 curl 访问 + +```shell + curl -H "Content-Type:application/json" -H "X-INSTANCE-ID:kong_ins" -H "apikey:hP6v25BQVS5CcS1nqKpxdrFkUxze9JWD" -X POST -d '{"feed":[{"x": [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":["price"]}' https://127.0.0.1:8443/serving-uci/uci/prediction -k +``` + +与之前的 Serving HTTP 服务相比,有以下区别。 + +- 使用 https 加密访问,而不是 http +- 使用 serving_uci 的路径映射到网关 +- 在 header 处增加了 `X-INSTANCE-ID` 和 `apikey` + + +## K8S 部署 + +同样,我们也提供了 K8S 集群部署 Serving 安全网关的方式。 + +**一. 启动 Serving 服务** + +我们仍然以 [Uci房价预测](../examples/C++/fit_a_line/)服务作为例子,这里省略了镜像制作的过程,详情可以参考 [在 Kubernetes 集群上部署Paddle Serving](./Run_On_Kubernetes_CN.md)。 + +在这里我们直接执行 +``` +kubectl apply -f tools/auth/serving-demo-k8s.yaml +``` + + +**二. 安装 KONG (一个集群只需要执行一次就可以)** +接下来我们执行 KONG Ingress 的安装 +``` +kubectl apply -f tools/auth/kong-install.yaml +``` + +输出是 +``` +namespace/kong created +customresourcedefinition.apiextensions.k8s.io/kongclusterplugins.configuration.konghq.com created +customresourcedefinition.apiextensions.k8s.io/kongconsumers.configuration.konghq.com created +customresourcedefinition.apiextensions.k8s.io/kongingresses.configuration.konghq.com created +customresourcedefinition.apiextensions.k8s.io/kongplugins.configuration.konghq.com created +customresourcedefinition.apiextensions.k8s.io/tcpingresses.configuration.konghq.com created +serviceaccount/kong-serviceaccount created +clusterrole.rbac.authorization.k8s.io/kong-ingress-clusterrole created +clusterrolebinding.rbac.authorization.k8s.io/kong-ingress-clusterrole-nisa-binding created +service/kong-proxy created +service/kong-validation-webhook created +deployment.apps/ingress-kong created +``` +我们可以输入 +``` +kubectl get service --all-namespaces +``` +会显示 +``` +NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +default uci ClusterIP 172.16.87.89 9393/TCP 7d7h +kong kong-proxy NodePort 172.16.23.91 80:8175/TCP,443:8521/TCP 102m +kong kong-validation-webhook ClusterIP 172.16.114.93 443/TCP 102m + +``` + +**三. 创建 Ingress 资源** + +接下来需要做 Serving 服务和 KONG 的链接 + +``` +kubectl apply -f tools/auth/kong-ingress-k8s.yaml +``` + +我们也给出 yaml 文件内容 +``` +apiVersion: extensions/v1beta1 +kind: Ingress +metadata: + name: demo + annotations: + konghq.com/strip-path: "true" + kubernetes.io/ingress.class: kong +spec: + rules: + - http: + paths: + - path: /foo + backend: + serviceName: {{SERVING_SERVICE_NAME}} + servicePort: {{SERVICE_PORT}} +``` +其中 serviceName 就是 uci,servicePort 就是 9393,如果是别的服务就需要改这两个字段,最终会映射到`/foo`下。 +在这一步之后,我们就可以 +``` +curl -H "Content-Type:application/json" -X POST -d '{"feed":[{"x": [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":["price"]}' http://$IP:$PORT/foo/uci/prediction +``` + +**四. 增加安全网关限制** + +之前的接口没有鉴权功能,无法验证用户身份合法性,现在我们添加一个 key-auth 插件 + +执行 +``` +kubectl apply -f key-auth-k8s.yaml +``` + +其中,yaml 文内容为 +``` +apiVersion: configuration.konghq.com/v1 +kind: KongPlugin +metadata: + name: key-auth +plugin: key-auth +``` + +现在,需要创建 secret,key 值为用户指定,需要在请求时携带 Header 中 apikey 字段 +执行 +``` +kubectl create secret generic default-apikey \ + --from-literal=kongCredType=key-auth \ + --from-literal=key=ZGVmYXVsdC1hcGlrZXkK +``` + +在这里,我们的 key 是随意制定了一串 `ZGVmYXVsdC1hcGlrZXkK`,实际情况也可以 +创建一个用户(consumer)标识访问者身份,并未该用户绑定 apikey。 +执行 +``` +kubectl apply -f kong-consumer-k8s.yaml +``` + +其中,yaml 文内容为 +``` +apiVersion: configuration.konghq.com/v1 +kind: KongConsumer +metadata: + name: default + annotations: + kubernetes.io/ingress.class: kong +username: default +credentials: +- default-apikey +``` + +如果我们这时还想再像上一步一样的做 curl 访问,会发现已经无法访问,此时已经具备了安全能力,我们需要对应的 key。 + + +**五. 通过 API Key 访问服务** + +执行 +``` +curl -H "Content-Type:application/json" -H "apikey:ZGVmYXVsdC1hcGlrZXkK" -X POST -d '{"feed":[{"x": [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":["price"]}' https://$IP:$PORT/foo/uci/prediction -k +``` +我们可以看到 apikey 已经加入到了 curl 请求的 header 当中。 diff --git a/doc/Offical_Docs/Index_CN.md b/doc/Offical_Docs/Index_CN.md deleted file mode 100644 index 5ab581f8cb77e24eaf422cbfcd1e3734a63d7352..0000000000000000000000000000000000000000 --- a/doc/Offical_Docs/Index_CN.md +++ /dev/null @@ -1,109 +0,0 @@ -# 安装指南 - -## 安装说明 - -本说明将指导您在64位操作系统编译和安装 PaddleServing。 -**强烈建议**您在 **Docker 内构建** Paddle Serving,更多镜像请查看 [Docker镜像列表](Docker_Images_CN.md)。 - -**一. Python 和 pip 版本:** - -* Python 的版本支持 3.6/3.7/3.8/3.9 -* Python 具有 pip, 且 pip 的版本要求 20.2.2+ -* Python 和 pip 要求是 64 位版本 - -**二. PaddleServing 对 GPU 支持情况:** - -* 目前 **PaddleServing** 支持 **NVIDIA** 显卡的 **CUDA** 驱动和 **AMD** 显卡的 **ROCm** 架构 -* 目前支持CUDA 10.1/10.2/11.2 - - -**第一种安装方式:使用 pip 安装** - -您可以选择“使用 pip 安装”、“从源码编译安装” 两种方式中的任意一种方式进行安装。 - -本节将介绍使用 pip 的安装方式。 -以下示例中 GPU 环境均为 cuda10.2-cudnn7 - -1. 启动开发镜像 - - **CPU:** - ``` - # 启动 CPU Docker - docker pull paddlepaddle/serving:0.8.0-devel - docker run -p 9292:9292 --name test -dit paddlepaddle/serving:0.8.0-devel bash - docker exec -it test bash - git clone https://github.com/PaddlePaddle/Serving - ``` - **GPU:** - ``` - # 启动 GPU Docker - docker pull paddlepaddle/serving:0.8.0-cuda10.2-cudnn7-devel - nvidia-docker run -p 9292:9292 --name test -dit paddlepaddle/serving:0.8.0-cuda10.2-cudnn7-devel bash - nvidia-docker exec -it test bash - git clone https://github.com/PaddlePaddle/Serving - ``` - -2. 检查 Python 的版本 - - 使用以下命令确认是 3.6/3.7/3.8/3.9 - - python3 --version - -3. 检查 pip 的版本,确认是 20.2.2+ - - python3 -m ensurepip - python3 -m pip --version - -4. 安装所需的 pip 依赖 - - ``` - cd Serving - pip3 install -r python/requirements.txt - ``` - -5. 安装服务 whl 包,共有3种 client、app、server,Server 分为 CPU 和 GPU,GPU 包根据您的环境选择一种安装 - - - post102 = CUDA10.2 + Cudnn7 + TensorRT6(推荐) - - post101 = CUDA10.1 + TensorRT6 - - post112 = CUDA11.2 + TensorRT8 - - ```shell - pip3 install paddle-serving-client==0.8.2 -i https://pypi.tuna.tsinghua.edu.cn/simple - pip3 install paddle-serving-app==0.8.2 -i https://pypi.tuna.tsinghua.edu.cn/simple - - # CPU Server - pip3 install paddle-serving-server==0.8.2 -i https://pypi.tuna.tsinghua.edu.cn/simple - - # GPU Server,需要确认环境再选择执行哪一条,推荐使用CUDA 10.2的包 - pip3 install paddle-serving-server-gpu==0.8.2.post102 -i https://pypi.tuna.tsinghua.edu.cn/simple - pip3 install paddle-serving-server-gpu==0.8.2.post101 -i https://pypi.tuna.tsinghua.edu.cn/simple - pip3 install paddle-serving-server-gpu==0.8.2.post112 -i https://pypi.tuna.tsinghua.edu.cn/simple - ``` - - 默认开启国内清华镜像源来加速下载,如果您使用 HTTP 代理可以关闭(`-i https://pypi.tuna.tsinghua.edu.cn/simple`) - -6. 安装 Paddle 相关 Python 库 - **当您使用`paddle_serving_client.convert`命令或者`Python Pipeline 框架`时才需要安装。** - ``` - # CPU 环境请执行 - pip3 install paddlepaddle==2.2.2 - - # GPU CUDA 10.2环境请执行 - pip3 install paddlepaddle-gpu==2.2.2 - ``` - **注意**: 如果您的 CUDA 版本不是10.2,或者您需要在 GPU 环境上使用 TensorRT,请勿直接执行上述命令,需要参考[Paddle-Inference官方文档-下载安装Linux预测库](https://paddleinference.paddlepaddle.org.cn/master/user_guides/download_lib.html#python)选择相应的 GPU 环境的 url 链接并进行安装。 - -7. 安装完成后的环境检查 - 当以上步骤均完成后可使用命令行运行环境检查功能,自动运行 Paddle Serving 相关示例,进行环境相关配置校验。 - ``` - python3 -m paddle_serving_server.serve check - ``` - 详情请参考[环境检查文档](./Check_Env_CN.md) - -8. 更多帮助信息请参考: - - -**第二种安装方式:使用源代码编译安装** - -- 如果您只是使用 PaddleServing ,建议使用 **pip** 安装即可。 -- 如果您有开发 PaddleServing 的需求,请参考 [从源码编译]() \ No newline at end of file diff --git a/doc/Offical_Docs/images/2-1_Docker_Images_CN_1.png b/doc/Offical_Docs/images/2-1_Docker_Images_CN_1.png new file mode 100644 index 0000000000000000000000000000000000000000..adabcf77bf669d143b248a5d3cb8ba2868e21790 Binary files /dev/null and b/doc/Offical_Docs/images/2-1_Docker_Images_CN_1.png differ diff --git a/doc/Offical_Docs/images/2-2_Environment_CN_1.png b/doc/Offical_Docs/images/2-2_Environment_CN_1.png new file mode 100644 index 0000000000000000000000000000000000000000..116d93f73754260defffb3429375b2212b6ff711 Binary files /dev/null and b/doc/Offical_Docs/images/2-2_Environment_CN_1.png differ diff --git a/doc/Offical_Docs/images/2-3_Compile_CN_1.png b/doc/Offical_Docs/images/2-3_Compile_CN_1.png new file mode 100644 index 0000000000000000000000000000000000000000..61238faee718f7beef15f0290a56c96aa5faa474 Binary files /dev/null and b/doc/Offical_Docs/images/2-3_Compile_CN_1.png differ