diff --git a/CMakeLists.txt b/CMakeLists.txt index 7d61ce76fd9ddd2c70fced654efd08b02ce94b52..9761750b2715931e8be2dca5baf860034db0fb1d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -61,6 +61,7 @@ option(PADDLE_ON_INFERENCE "Compile for encryption" option(WITH_OPENCV "Compile Paddle Serving with OPENCV" OFF) option(WITH_ROCM "Compile Paddle Serving with ROCM" OFF) option(WITH_ASCEND_CL "Compile PaddlePaddle with ASCEND CL" OFF) +option(WITH_JETSON "Compile PaddlePaddle with JETSON" OFF) if(NOT DEFINED VERSION_TAG) set(VERSION_TAG "0.0.0") diff --git a/cmake/paddlepaddle.cmake b/cmake/paddlepaddle.cmake index 0774db92b5a9132ef22bea8271bbfa0eb8ab57b5..ad8df0f1844e902a632f7c7df390ec3c2a783345 100644 --- a/cmake/paddlepaddle.cmake +++ b/cmake/paddlepaddle.cmake @@ -94,6 +94,9 @@ else() SET(PADDLE_LIB_VERSION "${PADDLE_VERSION}/cxx_c/Linux/CPU/gcc8.2_openblas") endif() endif() +if(WITH_JETSON) + SET(PADDLE_LIB_VERSION "${PADDLE_VERSION}/cxx_c/Jetson/jetpack4.6_gcc7.5/all") +endif() if(WITH_LITE) if (WITH_XPU) @@ -103,6 +106,8 @@ if(WITH_LITE) endif() elseif(WITH_ASCEND_CL) SET(PADDLE_LIB_PATH "http://paddle-serving.bj.bcebos.com/inferlib/${PADDLE_LIB_VERSION}/paddle_inference.tgz ") +elseif(WITH_JETSON) + SET(PADDLE_LIB_PATH "http://paddle-inference-lib.bj.bcebos.com/${PADDLE_LIB_VERSION}/paddle_inference_install_dir.tgz") else() SET(PADDLE_LIB_PATH "http://paddle-inference-lib.bj.bcebos.com/${PADDLE_LIB_VERSION}/paddle_inference.tgz") endif() diff --git a/core/general-server/CMakeLists.txt b/core/general-server/CMakeLists.txt index 4dbb066ee49fa6ec971c83286197117774e14eb9..9b78ec4c0d8abd9676684d8c7271db75f35fa571 100644 --- a/core/general-server/CMakeLists.txt +++ b/core/general-server/CMakeLists.txt @@ -42,7 +42,9 @@ if(WITH_GPU) endif() if(WITH_MKL OR WITH_GPU) - if (WITH_TRT) + if (WITH_JETSON) + target_link_libraries(serving openblas -lpthread -lcrypto -lm -lrt -lssl -ldl -lz -lbz2) + elseif (WITH_TRT) target_link_libraries(serving -liomp5 -lmklml_intel -lpthread -lcrypto -lm -lrt -lssl -ldl -lz -lbz2 -ldnnl) else() target_link_libraries(serving -liomp5 -lmklml_intel -lmkldnn -lpthread -lcrypto -lm -lrt -lssl -ldl -lz -lbz2) diff --git a/doc/Compile_EN.md b/doc/Compile_EN.md index 47c62a82b3dddc79b2e3d5f7c97b4783829a5a0d..4fc013f16c2b4ac44fd0ee487a74cdf97861d641 100644 --- a/doc/Compile_EN.md +++ b/doc/Compile_EN.md @@ -258,7 +258,7 @@ make -j10 ## Attached: CMake option description | Compilation Options | Description | Default | -| :--------------: | :------------------------------- ---------: | :--: | +| :--------------: | :----------------------------------------: | :--: | | 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 | @@ -290,7 +290,7 @@ The things to note here are: The following is the matching relationship between PaddleServing mirrored Cuda, Cudnn, and TensorRT for reference: -| | CUDA | CUDNN | TensorRT | +| Tag | CUDA | CUDNN | TensorRT | | :----: | :-----: | :----------: | :----: | | post101 | 10.1 | CUDNN 7.6.5 | 6.0.1 | | post102 | 10.2 | CUDNN 8.0.5 | 7.1.3 | diff --git a/doc/Docker_Images_CN.md b/doc/Docker_Images_CN.md index 97293b3b3b6b82bcd3252f2cd2c4fbbcd73589d3..d44b0fcda335d2f2ccec8c4300212e981d7a8249 100644 --- a/doc/Docker_Images_CN.md +++ b/doc/Docker_Images_CN.md @@ -19,7 +19,7 @@ 建立新目录,复制对应 Dockerfile 内容到该目录下 Dockerfile 文件。执行 ```shell - docker build -f tools/${DOCKERFILE} -t : . + docker build -f tools/${DOCKERFILE} -t registry.baidubce.com/paddlepaddle/serving: . ``` @@ -28,6 +28,9 @@ 若需要基于源代码二次开发编译,请使用后缀为-devel的版本。 **在TAG列,0.8.0也可以替换成对应的版本号,例如0.5.0/0.4.1等,但需要注意的是,部分开发环境随着某个版本迭代才增加,因此并非所有环境都有对应的版本号可以使用。** +**开发镜像:** + +开发镜像中安装多种开发工具,可用于调试和编译代码,适配2种 GCC 版本和多种 CUDA 环境,但镜像体积较大。 | 镜像选择 | 操作系统 | TAG | Dockerfile | | :----------------------------------------------------------: | :-----: | :--------------------------: | :----------------------------------------------------------: | @@ -38,6 +41,19 @@ | 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) | + +**运行镜像:** + +运行镜像比开发镜像更加轻量化, 运行镜像提供了serving的whl和bin,但为了运行期更小的镜像体积,没有提供诸如cmake这样但开发工具。 如果您想了解有关信息,请检查文档[在Kubernetes上使用Paddle Serving](./Run_On_Kubernetes_CN.md)。 + +| Env | Version | Docker images tag | OS | Gcc Version | Size | +|----------|---------|------------------------------|-----------|-------------|------| +| CPU | 0.8.0 | 0.8.0-runtime | Ubuntu 16 | 8.2.0 | 3.9 GB | +| Cuda10.1 | 0.8.0 | 0.8.0-cuda10.1-cudnn7-runtime | Ubuntu 16 | 8.2.0 | 10 GB | +| Cuda10.2 | 0.8.0 | 0.8.0-cuda10.2-cudnn8-runtime | Ubuntu 16 | 8.2.0 | 10.1 GB | +| Cuda11.2 | 0.8.0 | 0.8.0-cuda11.2-cudnn8-runtime| Ubuntu 16 | 8.2.0 | 14.2 GB | + + **Java镜像:** ``` registry.baidubce.com/paddlepaddle/serving:0.8.0-cuda10.2-java @@ -58,31 +74,4 @@ registry.baidubce.com/paddlepaddle/serving:xpu-x86 # for x86 xpu user 相关CUDA工具包版本、驱动版本和GPU架构的关系请参阅 [nvidia-docker wiki](https://github.com/NVIDIA/nvidia-docker/wiki/CUDA)。 -# (附录)所有镜像列表 - -开发镜像: - -| Env | Version | Docker images tag | OS | Gcc Version | -|----------|---------|------------------------------|-----------|-------------| -| CPU | >=0.5.0 | 0.8.0-devel | Ubuntu 16 | 8.2.0 | -| | <=0.4.0 | 0.4.0-devel | CentOS 7 | 4.8.5 | -| Cuda10.1 | >=0.5.0 | 0.8.0-cuda10.1-cudnn7-devel | Ubuntu 16 | 8.2.0 | -| | <=0.4.0 | 0.4.0-cuda10.1-cudnn7-devel | CentOS 7 | 4.8.5 | -| Cuda10.2+Cudnn7 | >=0.5.0 | 0.8.0-cuda10.2-cudnn7-devel | Ubuntu 16 | 8.2.0 | -| | <=0.4.0 | Nan | Nan | Nan | -| Cuda10.2+Cudnn8 | >=0.5.0 | 0.8.0-cuda10.2-cudnn8-devel | Ubuntu 16 | 8.2.0 | -| | <=0.4.0 | Nan | Nan | Nan | -| Cuda11.2 | >=0.5.0 | 0.8.0-cuda11.2-cudnn8-devel | Ubuntu 16 | 8.2.0 | -| | <=0.4.0 | Nan | Nan | Nan | - -运行镜像: - -运行镜像比开发镜像更加轻量化, 运行镜像提供了serving的whl和bin,但为了运行期更小的镜像体积,没有提供诸如cmake这样但开发工具。 如果您想了解有关信息,请检查文档[在Kubernetes上使用Paddle Serving](./Run_On_Kubernetes_CN.md)。 - -| Env | Version | Docker images tag | OS | Gcc Version | Size | -|----------|---------|------------------------------|-----------|-------------|------| -| CPU | 0.8.0 | 0.8.0-runtime | Ubuntu 16 | 8.2.0 | 3.9 GB | -| Cuda10.1 | 0.8.0 | 0.8.0-cuda10.1-cudnn7-runtime | Ubuntu 16 | 8.2.0 | 10 GB | -| Cuda10.2 | 0.8.0 | 0.8.0-cuda10.2-cudnn8-runtime | Ubuntu 16 | 8.2.0 | 10.1 GB | -| Cuda11.2 | 0.8.0 | 0.8.0-cuda11.2-cudnn8-runtime| Ubuntu 16 | 8.2.0 | 14.2 GB | diff --git a/doc/Docker_Images_EN.md b/doc/Docker_Images_EN.md index 787f116337493e8856d20cf7fe964321f653eafd..d7d346f16b02bca1adf19db79e3834259e4c363c 100644 --- a/doc/Docker_Images_EN.md +++ b/doc/Docker_Images_EN.md @@ -19,7 +19,7 @@ You can get images in two ways: Create a new folder and copy Dockerfile to this folder, and run the following command: ```shell - docker build -f tools/${DOCKERFILE} -t : . + docker build -f tools/${DOCKERFILE} -t registry.baidubce.com/paddlepaddle/serving: . ``` @@ -33,6 +33,10 @@ If you want to customize your Serving based on source code, use the version with If you need to develop and compile based on the source code, please use the version with the suffix -devel. **In the TAG column, 0.8.0 can also be replaced with the corresponding version number, such as 0.5.0/0.4.1, etc., but it should be noted that some development environments only increase with a certain version iteration, so not all environments All have the corresponding version number can be used.** +**Development Docker Images:** + +A variety of development tools are installed in the development image, which can be used to debug and compile code, and adapt to two GCC versions and multiple CUDA environments, but the image size is large. + | Description | OS | TAG | Dockerfile | | :----------------------------------------------------------: | :-----: | :--------------------------: | :----------------------------------------------------------: | | CPU development | Ubuntu16 | 0.8.0-devel | [Dockerfile.devel](../tools/Dockerfile.devel) | @@ -42,12 +46,24 @@ If you need to develop and compile based on the source code, please use the vers | 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) | -**Java Client:** + +**Runtime Docker Images:** + +Runtime Docker Images is lighter than Develop Images, and Running Images are made up with serving whl and bin, but without develop tools like cmake because of lower image size. If you want to know about it, plese check the document [Paddle Serving on Kubernetes](./Run_On_Kubernetes_CN.md). + +| Env | Version | Docker images tag | OS | Gcc Version | Size | +|----------|---------|------------------------------|-----------|-------------|------| +| CPU | 0.8.0 | 0.8.0-runtime | Ubuntu 16 | 8.2.0 | 3.9 GB | +| Cuda10.1 | 0.8.0 | 0.8.0-cuda10.1-cudnn7-runtime | Ubuntu 16 | 8.2.0 | 10 GB | +| Cuda10.2 | 0.8.0 | 0.8.0-cuda10.2-cudnn8-runtime | Ubuntu 16 | 8.2.0 | 10.1 GB | +| Cuda11.2 | 0.8.0 | 0.8.0-cuda11.2-cudnn8-runtime| Ubuntu 16 | 8.2.0 | 14.2 GB | + +**Java SDK Docker Image:** ``` registry.baidubce.com/paddlepaddle/serving:0.8.0-cuda10.2-java ``` -**XPU:** +**XPU Docker Images:** ``` registry.baidubce.com/paddlepaddle/serving:xpu-arm # for arm xpu user registry.baidubce.com/paddlepaddle/serving:xpu-x86 # for x86 xpu user @@ -61,31 +77,3 @@ The machine running the CUDA container **only requires the NVIDIA driver**, the For the relationship between CUDA toolkit version, Driver version and GPU architecture, please refer to [nvidia-docker wiki](https://github.com/NVIDIA/nvidia-docker/wiki/CUDA). -# (Attachment) The List of All the Docker images - -Develop Images: - -| Env | Version | Docker images tag | OS | Gcc Version | -|----------|---------|------------------------------|-----------|-------------| -| CPU | >=0.5.0 | 0.8.0-devel | Ubuntu 16 | 8.2.0 | -| | <=0.4.0 | 0.4.0-devel | CentOS 7 | 4.8.5 | -| Cuda10.1 | >=0.5.0 | 0.8.0-cuda10.1-cudnn7-devel | Ubuntu 16 | 8.2.0 | -| | <=0.4.0 | 0.4.0-cuda10.1-cudnn7-devel | CentOS 7 | 4.8.5 | -| Cuda10.2+Cudnn7 | >=0.5.0 | 0.8.0-cuda10.2-cudnn7-devel | Ubuntu 16 | 8.2.0 | -| | <=0.4.0 | Nan | Nan | Nan | -| Cuda10.2+Cudnn8 | >=0.5.0 | 0.8.0-cuda10.2-cudnn8-devel | Ubuntu 16 | 8.2.0 | -| | <=0.4.0 | Nan | Nan | Nan | -| Cuda11.2 | >=0.5.0 | 0.8.0-cuda11.2-cudnn8-devel | Ubuntu 16 | 8.2.0 | -| | <=0.4.0 | Nan | Nan | Nan | - - -Running Images: - -Running Images is lighter than Develop Images, and Running Images are made up with serving whl and bin, but without develop tools like cmake because of lower image size. If you want to know about it, plese check the document [Paddle Serving on Kubernetes](./Run_On_Kubernetes_CN.md). - -| Env | Version | Docker images tag | OS | Gcc Version | Size | -|----------|---------|------------------------------|-----------|-------------|------| -| CPU | 0.8.0 | 0.8.0-runtime | Ubuntu 16 | 8.2.0 | 3.9 GB | -| Cuda10.1 | 0.8.0 | 0.8.0-cuda10.1-cudnn7-runtime | Ubuntu 16 | 8.2.0 | 10 GB | -| Cuda10.2 | 0.8.0 | 0.8.0-cuda10.2-cudnn8-runtime | Ubuntu 16 | 8.2.0 | 10.1 GB | -| Cuda11.2 | 0.8.0 | 0.8.0-cuda11.2-cudnn8-runtime| Ubuntu 16 | 8.2.0 | 14.2 GB | diff --git a/doc/Install_CN.md b/doc/Install_CN.md index 74ee28d2633e9b43cc9cd3495e57b20e9ebdbb18..ce2f7b9ab26add9a7c92f4950fe6880ffd6973f0 100644 --- a/doc/Install_CN.md +++ b/doc/Install_CN.md @@ -60,9 +60,9 @@ pip3 install -r python/requirements.txt ``` 安装服务whl包,共有3种client、app、server,Server分为CPU和GPU,GPU包根据您的环境选择一种安装 -- post102 = CUDA10.2 + Cudnn7 + TensorRT6(推荐) -- post101 = CUDA10.1 + TensorRT6 -- post112 = CUDA11.2 + TensorRT8 +- post102 = CUDA10.2 + cuDNN7 + TensorRT6(推荐) +- post101 = CUDA10.1 + cuDNN7 + TensorRT6 +- post112 = CUDA11.2 + cuDNN8 + TensorRT8 ```shell pip3 install paddle-serving-client==0.8.3 -i https://pypi.tuna.tsinghua.edu.cn/simple diff --git a/doc/Install_EN.md b/doc/Install_EN.md index 709a88789c8478f0a19948dbd13faadf238b5ff2..2698b729ba02644a38cd2fe7f3f1e4df5e09ab4c 100644 --- a/doc/Install_EN.md +++ b/doc/Install_EN.md @@ -61,7 +61,10 @@ pip3 install -r python/requirements.txt ``` Install the service whl package. There are three types of client, app and server. The server is divided into CPU and GPU. Choose one installation according to the environment. -- GPU with CUDA10.2 + Cudnn7 + TensorRT6(Recommended) +- post102 = CUDA10.2 + cuDNN7 + TensorRT6(Recommended) +- post101 = CUDA10.1 + cuDNN7 + TensorRT6 +- post112 = CUDA11.2 + cuDNN8 + TensorRT8 + ```shell 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 @@ -128,4 +131,4 @@ When the above steps are completed, you can use the command line to run the envi ``` python3 -m paddle_serving_server.serve check ``` -For more information, please see[Installation Check](./Check_Env_CN.md) \ No newline at end of file +For more information, please see[Installation Check](./Check_Env_CN.md) diff --git a/doc/Offical_Docs/Serving_Introduce_CN.md b/doc/Offical_Docs/1-0_Introduction_CN.md similarity index 78% rename from doc/Offical_Docs/Serving_Introduce_CN.md rename to doc/Offical_Docs/1-0_Introduction_CN.md index f7a42558bc95c6c0fc7f40fc40fdd5b5b4d55a5b..19edc22881611be0c25694e413cff115586e1bb1 100644 --- a/doc/Offical_Docs/Serving_Introduce_CN.md +++ b/doc/Offical_Docs/1-0_Introduction_CN.md @@ -6,7 +6,7 @@ Paddle Serving 是飞桨官方推荐的服务化部署框架,围绕 AI 落地 - 支持深度学习平台:支持 Paddle 框架训练模型,其他机器学习平台(Caffe、TensorFlow、ONNX、PyTorch)可通过 x2paddle 工具迁移模型。 - 支持多种网络协议:HTTP、gRPC、bRPC等多种协议。 - 支持多种语言 SDK:C++、Python、Java。 -- 适配多种计算硬件:x86(Intel) CPU、ARM CPU、Nvidia GPU、昆仑 XPU、华为昇腾 310/910、海光 DCU、Nvidia Jetson等多种硬件。 +- 适配多种计算硬件:x86(Intel) CPU、ARM CPU、Nvidia GPU、昆仑 XPU、华为昇腾 310/910、海光 DCU、Nvidia Jetson 等多种硬件。 - 部署平台:支持 Docker 和 Kubernetes 云端部署,提供多种环境的 Docker 开发镜像和云端部署案例。 - 具有高性能设计:基于有向无环图(DAG)的异步流水线构建高性能服务化推理框架,具有多模型组合、异步调度、并发推理、动态批量和多卡多流等设计。 - 提供模型安全部署解决方案:加密模型部署、鉴权校验、HTTPs 安全网关,并在实际项目中应用。 @@ -17,42 +17,42 @@ Paddle Serving 是飞桨官方推荐的服务化部署框架,围绕 AI 落地 **一.环境安装** -根据计算硬件、操作系统和软件驱动版本等环境差异,要选择正确的安装程序。提供多种系统环境安装、PIP 程序安装和源码编译安装三种方案,安装完成后可使用环境检查命令验证。 +根据计算硬件、操作系统和软件驱动版本等环境差异,要选择正确的安装程序。提供多种系统环境安装、pip 程序安装和源码编译安装三种方案,安装完成后可使用环境检查命令验证。 -#### 1.标准环境安装方案,请参考[标准环境安装]() -#### 2.使用 PIP 安装,请参考[使用 PIP 安装]() -#### 3.源码编译安装,请参考[源码编译]() -#### 4.安装环境检查,请参考[环境检查]() +#### 1.标准环境安装方案,请参考 [标准环境安装]() +#### 2.使用 pip 安装,请参考 [使用 pip 安装]() +#### 3.源码编译安装,请参考 [源码编译]() +#### 4.安装环境检查,请参考 [环境检查]() **二.快速开发** -环境安装完成后,参考二种模型开发示例快速开发程序,更多模型示例请参考[模型库]()。 +环境安装完成后,参考二种模型开发示例快速开发程序,更多模型示例请参考 [模型库]()。 #### 1.基于 C++ Serving 的单模型 Resnet_v2_50 部署示例,请参考[Resnet_v2_50]() #### 2.基于 Python Pipeline 多模型组合 OCR_v2 部署示例,请参考[OCR]() **三.服务部署** -经过开发和测试后,程序要在服务器上部署,Paddle Serving 提供基于Kubernetes集群部署案例,请参考[Kubernetes集群部署]() +经过开发和测试后,程序要在服务器上部署,Paddle Serving 提供基于 Kubernetes 集群部署案例,请参考 [Kubernetes 集群部署]() -多个服务入口安全网关部署,请参考[安全网关]() +多个服务入口安全网关部署,请参考 [安全网关]() ## 功能说明 **一.基础功能** -本章节系统介绍 Paddle Serving 提供的基础功能,每种功能的使用方法和功能选项,详情请参考[基础功能]() +本章节系统介绍 Paddle Serving 提供的基础功能,每种功能的使用方法和功能选项,详情请参考 [基础功能]() **二.进阶 C++ Serving** -本章节详细介绍 C++ Serving 的多种高级功能特性,以及设计方案、使用方法和性能调优等,详情请参考[进阶 C++ Serving]() +本章节详细介绍 C++ Serving 的多种高级功能特性,以及设计方案、使用方法和性能调优等,详情请参考 [进阶 C++ Serving]() **三.进阶 Python Pipeline** -本章节详细介绍 Python Pipeline 的多种高级功能特性,以及设计方案、使用方法和性能调优等,详情请参考[进阶 Python Pipeline]() +本章节详细介绍 Python Pipeline 的多种高级功能特性,以及设计方案、使用方法和性能调优等,详情请参考 [进阶 Python Pipeline]() **四.大规模稀疏参数索引服务** -本章节介绍稀疏参数索引场景,如推荐、广告系统中大规模 Embedding 查询的设计与使用方案,详情请参考[大规模稀疏参数索引服务]() +本章节介绍稀疏参数索引场景,如推荐、广告系统中大规模 Embedding 查询的设计与使用方案,详情请参考 [大规模稀疏参数索引服务]() diff --git a/doc/Offical_Docs/1-1_Architecture_CN.md b/doc/Offical_Docs/1-1_Architecture_CN.md new file mode 100644 index 0000000000000000000000000000000000000000..032d7a2c66e6fbf4f1502a6ffcb76832cbb5f3b7 --- /dev/null +++ b/doc/Offical_Docs/1-1_Architecture_CN.md @@ -0,0 +1,45 @@ +# 技术架构 + +## 设计目标 + +- 实现高性能的在线服务化推理框架。既能满足同步请求低延时快速响应,又能满足异步高吞吐的批量处理,大幅提高计算资源利用率。与同类竞品相比有性能优势。 + +- 覆盖工业级 AI 应用场景。工业场景对基础功能和模型有更高的要求,进阶功能包括模型安全、授权访问、适配多种计算硬件和系统环境、云端集群化部署和弹性伸缩能力等;另外,要求服务化框架支持种类型的深度学习模型,如 CV、NLP、推荐系统等 + +- 具备良好的服务可靠性。服务可靠性是服务运行稳定程度的一项重要指标,是对服务质量的一种测量,也是满足工业级场景使用的前提。 + +- 简单易用。以极低的成本部署模型,能与训练框架无缝打通的预测部署 API。通过参考大量的部署示例快速上手。 + +## 技术栈 +Paddle Serving 的技术体系有7个层级,计算硬件、安装部署、操作系统、高性能计算库、推理引擎、Paddle Serving 框架与产业应用。Serving 集成 Paddle Inference 和 Paddle Lite 高性能推理框架,支持在多种异构硬件和多种操作中部署。 +

+
+ +
+

+ +Paddle Serving 框架提供多种编程语言客户端 SDK 方便调用和系统集成,包括 Python、C++ 和 Java 语言。使用3种协议 HTTP、gRPC 和 bRPC 与服务端交互。 + +

+
+ +
+

+ +为了满足不同场景的用户需求,服务端设计了2种框架 C++ Serving 和 Python Pipeline。技术选型方法参见下表: + +| 框架 | 响应时间 | 吞吐 | 开发效率 | 资源利用率 | 应用场景| +|-----|------|-----|-----|------|------| +|C++ Serving | 低 | 高 | 低 | 高 | 高并发低延时场景,功能完善,适合大型服务架构| +|Python Pipeline | 高 | 较高 | 高 | 高 | 开发效率高,吞吐量较高,适合单算子多模型组合场景| + + +性能指标说明: +1. 响应时间(ms):单次请求平均响应时间,计算50、90、95、99分位响应时长,数值越低越好。 +2. 吞吐(QPS):服务处理请求的效率,单位时间内处理请求数量,越高越好。 +3. 开发效率:使用不同开发语言完成相同工作时间不同,包括开发、调试、维护的效率等,越高越好。 +4. 资源利用率:部署一个服务对资源利用率,资源利用率低是对资源的浪费,数值越高越好。 + +C++ Serving 完整设计与功能参见[C++ Serving 设计与实现](../C++_Serving/Introduction_CN.md) + +Python Pipeline 完整设计与功能参见[Python Pipeline 设计与实现](../Python_Pipeline/Pipeline_Design_CN.md) diff --git a/doc/Offical_Docs/1-2_Benchmark.md b/doc/Offical_Docs/1-2_Benchmark.md new file mode 100644 index 0000000000000000000000000000000000000000..10577387f4ea0d8ec9598722fc6ebf46812c01f2 --- /dev/null +++ b/doc/Offical_Docs/1-2_Benchmark.md @@ -0,0 +1,59 @@ +# Benchmark + +## C++ Serving 性能测试 + +**一.测试环境** +- 机器型号:4 × Tesla P4-8GB ,48 core Intel(R) Xeon(R) Gold 5117 @ 2.00GHz +- CUDA:11.0,cuDNN:v8.0.4 +- Serving:v0.7.0 +- Paddle:v2.2.0 +- 模型:ResNet_v2_50 +- batch:1 +- 使用的测试代码和使用的数据集:[resnet_v2_50](../../examples/C++/PaddleClas/resnet_v2_50) + +**二.测试方法** +- 请求数量递增:不断增加 client 数量,指标稳定后统计 client 的耗时信息 +- 竞品对比:C++ Serving(蓝色) 与 Tenserflow Serving(灰色)都是 C++ 实现,且同为业界主流 Serving 框架 +- 吞吐性能(QPS):折线图,数值越大表示每秒钟处理的请求数量越大,性能就越好 +- 平均处理时延(ms):柱状图,数值越大表示单个请求处理时间越长,性能就越差 +- 同步模式:网络线程同步处理,保证显存占用相同的情况下,开启最大线程数 +- 异步模式:异步线程处理方式,保证显存占用相同,最大批量为32,异步线程数为2 + +**三.同步模式** + +结论:同步模型默认参数配置情况下,C++ Serving 吞吐和平均时延指标均优于 Tensorflow Serving。 + +

+
+ +
+

+ +|client_num | model_name | qps(samples/s) | mean(ms) | model_name | qps(samples/s) | mean(ms) | +| --- | --- | --- | --- | --- | --- | --- | +| 10 | pd-serving | 111.336 | 89.787| tf-serving| 84.632| 118.13| +|30 |pd-serving |165.928 |180.761 |tf-serving |106.572 |281.473| +|50| pd-serving| 207.244| 241.211| tf-serving| 80.002 |624.959| +|70 |pd-serving |214.769 |325.894 |tf-serving |105.17 |665.561| +|100| pd-serving| 235.405| 424.759| tf-serving| 93.664 |1067.619| +|150 |pd-serving |239.114 |627.279 |tf-serving |86.312 |1737.848| + +**四.异步模式** + +结论:client数据较少时,Tensorflow Serving 性能略优于 C++ Serving ,但当 client 并发数超过70后,Tensorflow Serving 服务出现大量超时,而 C++ Serving 仍能正常运行 + +

+
+ +
+

+ +|client_num | model_name | qps(samples/s) | mean(ms) | model_name | qps(samples/s) | mean(ms) | +| --- | --- | --- | --- | --- | --- | --- | +|10| pd-serving| 130.631| 76.502| tf-serving |172.64 |57.916| +|30| pd-serving| 201.062| 149.168| tf-serving| 241.669| 124.128| +|50| pd-serving| 286.01| 174.764| tf-serving |278.744 |179.367| +|70| pd-serving| 313.58| 223.187| tf-serving| 298.241| 234.7| +|100| pd-serving| 323.369| 309.208| tf-serving| 0| ∞| +|150| pd-serving| 328.248| 456.933| tf-serving| 0| ∞| + diff --git a/doc/Offical_Docs/Index_CN.md b/doc/Offical_Docs/Index_CN.md index 5d57a91449ef87d606df6761b2f4c9c667c1b82f..5ab581f8cb77e24eaf422cbfcd1e3734a63d7352 100644 --- a/doc/Offical_Docs/Index_CN.md +++ b/doc/Offical_Docs/Index_CN.md @@ -3,7 +3,7 @@ ## 安装说明 本说明将指导您在64位操作系统编译和安装 PaddleServing。 -**强烈建议**您在**Docker 内构建** Paddle Serving,更多镜像请查看[Docker镜像列表](Docker_Images_CN.md)。 +**强烈建议**您在 **Docker 内构建** Paddle Serving,更多镜像请查看 [Docker镜像列表](Docker_Images_CN.md)。 **一. Python 和 pip 版本:** @@ -91,7 +91,7 @@ # 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 链接并进行安装。 + **注意**: 如果您的 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 相关示例,进行环境相关配置校验。 @@ -102,10 +102,8 @@ 8. 更多帮助信息请参考: - - **第二种安装方式:使用源代码编译安装** - 如果您只是使用 PaddleServing ,建议使用 **pip** 安装即可。 -- 如果您有开发 PaddleServing 的需求,请参考:[从源码编译] \ No newline at end of file +- 如果您有开发 PaddleServing 的需求,请参考 [从源码编译]() \ No newline at end of file diff --git a/doc/Serving_Auth_Docker_CN.md b/doc/Serving_Auth_Docker_CN.md index d54468c93b92ef1e8f5813ef4256de74562f9f25..c05a5e82f6c6235a60ef12f4674cf61b2b35acc3 100644 --- a/doc/Serving_Auth_Docker_CN.md +++ b/doc/Serving_Auth_Docker_CN.md @@ -30,8 +30,8 @@ ee59a3dd4806 registry.baidubce.com/serving_dev/serving-runtime:cpu-py36 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。 - +其中我们之前serving容器 以 9393端口暴露,KONG网关的端口是8443, KONG的Web控制台的端口是8001。接下来我们在浏览器访问 `https://$IP_ADDR:8005`, 其中 IP_ADDR就是宿主机的IP。 +>> **注意**: 第一次登录的时候可能需要输入 Name : admin 以及 Kong Admin URL : http://kong:8001 可以看到在注册结束后,登陆,看到了 DASHBOARD,我们先看SERVICES,可以看到`serving_service`,这意味着我们端口在9393的Serving服务已经在KONG当中被注册。 diff --git a/doc/images/tech_stack.png b/doc/images/tech_stack.png new file mode 100644 index 0000000000000000000000000000000000000000..1c163ba580221022562602b581f40fb79af36a8d Binary files /dev/null and b/doc/images/tech_stack.png differ diff --git a/doc/images/wechat_group_1.jpeg b/doc/images/wechat_group_1.jpeg index eb58bfe81ce5bd2694ac5de20518c53c6ae23a8e..4e9e65b14c5dcd594ecd95e7ea56add14d0f92d4 100644 Binary files a/doc/images/wechat_group_1.jpeg and b/doc/images/wechat_group_1.jpeg differ diff --git a/tools/auth/auth-serving-docker.yaml b/tools/auth/auth-serving-docker.yaml index 49659563d74fc08a8d569bddb702b206b6225a51..dcd03037778eeab4094fa8eacd156cf65761d158 100644 --- a/tools/auth/auth-serving-docker.yaml +++ b/tools/auth/auth-serving-docker.yaml @@ -20,7 +20,7 @@ services: restart: always kong-migrations: - image: registry.baidubce.com/serving_gateway/kong:paddle + image: registry.baidubce.com/paddlepaddle/serving:gateway-kong command: kong migrations bootstrap depends_on: - db @@ -33,7 +33,7 @@ services: restart: on-failure kong: - image: registry.baidubce.com/serving_gateway/kong:paddle + image: registry.baidubce.com/paddlepaddle/serving:gateway-kong depends_on: - db - redis @@ -59,7 +59,7 @@ services: restart: always kong-prepare: - image: registry.baidubce.com/serving_gateway/kong:paddle + image: registry.baidubce.com/paddlepaddle/serving:gateway-kong entrypoint: ["bash", "/autoconfigure-admin-api.sh"] depends_on: - kong