|
|
1 mesiac pred | |
|---|---|---|
| .. | ||
| sdk | 1 mesiac pred | |
| server_env | 1 mesiac pred | |
| README.md | 2 mesiacov pred | |
| README_en.md | 2 mesiacov pred | |
本项目提供一套高稳定性服务化部署方案,它由 server_env 与 sdk 两个目录组成。server_env 部分用于构建包含 Triton Inference Server 的多种镜像,为后续模型产线 server 提供运行环境;sdk 部分用于打包产线 SDK,提供各模型产线的 server 和 client 代码。如下图所示:

请注意,本项目依赖于如下环境配置:
>= 20.10.0,用于镜像构建和部署本文档主要介绍如何基于本项目提供的脚本完成高稳定性服务化部署环境搭建与物料打包。整体流程分为两个阶段:
如需了解如何使用构建好的镜像与打包好的 SDK 启动服务器和调用服务,可参考 PaddleX 服务化部署指南。
本阶段主要介绍镜像构建的整体流程及关键步骤。
镜像构建步骤:
如不需修改依赖相关信息,可跳转 1.3 构建部署镜像 根据缓存的依赖信息直接构建部署镜像。
切换至 server_env 目录,执行该目录下的构建依赖收集镜像脚本。
./scripts/prepare_rc_image.sh
该脚本会为每种设备类型构建一个用于依赖收集的镜像,镜像包含 Python 3.10 以及 pip-tools 工具。1.2 锁定依赖版本(可选) 将基于该镜像完成。构建完成后,将分别生成 paddlex-hps-rc:gpu 和 paddlex-hps-rc:cpu 两个镜像。如果遇到网络问题,可以通过 -p 参数指定其他 pip 源;如果不指定,则默认使用 https://pypi.org/simple。若在构建过程中遇到基础镜像无法拉取的问题,请参考 FAQ 中的相关解决方案。
为了使构建结果的可重现性更强,本步骤将依赖锁定到精确版本。请切换至 server_env 目录执行如下脚本:
./scripts/freeze_requirements.sh
该脚本调用 pip-tools compile 解析依赖源文件,并最终生成一系列 .txt 文件(如 requirements/gpu.txt、requirements/cpu.txt 等),这些文件将为 1.3 镜像构建 提供依赖版本约束。
如需构建 GPU 镜像,需提前将以下两个安装包放在 server_env 目录下:
| 安装包名称 | 版本 | 下载地址 | 下载文件名称 |
|---|---|---|---|
| cuDNN | v8.9.7-CUDA 11.x | NVIDIA cuDNN Archive | Local Installer for Linux x86_64 (Tar) |
| TensorRT | 8.6-GA | TensorRT 8.x Download Page | TensorRT 8.6 GA for Linux x86_64 and CUDA 11.x TAR Package |
对于 Triton Server,项目使用预先编译好的版本,将在构建镜像时自动下载,无需手动下载。以构建 GPU 镜像为例,在 server_env 目录下执行以下命令:
./scripts/build_deployment_image.sh -k gpu -t latest-gpu
构建镜像的参数配置项包括
| 名称 | 说明 |
|---|---|
-k |
指定镜像的设备类型,可选值为 gpu 或 cpu。 |
-t |
镜像标签,默认为 latest:${DEVICE}。 |
-p |
Python 包索引 URL,如不指定默认为 https://pypi.org/simple。 |
如果遇到无法拉取基础镜像的情况,可参考 FAQ 中的解决方案。
执行成功后,命令行会输出以下提示信息:
=> => exporting to image
=> => exporting layers
=> => writing image sha256:ba3d0b2b079d63ee0239a99043fec7e25f17bf2a7772ec2fc80503c1582b3459
=> => naming to ccr-2vdh3abv-pub.cnc.bj.baidubce.com/paddlex/hps:latest-gpu
如需批量构建 GPU 和 CPU 镜像,可以执行以下命令:
./srcipts/prepare_deployment_images.sh
本阶段主要介绍如何进行产线物料打包,该功能在 sdk 目录中提供,sdk 目录为每个产线提供对应的 client 和 server 代码实现:
client 部分:用于调用模型服务。server 部分:以 1. 镜像构建 阶段构建的镜像作为运行环境,用于部署模型服务。产线物料打包前需切换到 sdk 目录,并通过该目录下的 scripts/assemble.sh 脚本执行打包操作,以打包通用 OCR 产线为例:
./scripts/assemble.sh OCR
打包脚本的参数说明如下:
| 名称 | 说明 |
|---|---|
pipeline_names |
需要打包的产线名称,可以为空或一次指定多个,例如通用 OCR 产线为 OCR。 |
--all |
打包全部产线,与 pipeline_names 不可共用。 |
--no-server |
不打包产线中的 server 代码。 |
--no-client |
不打包产线中的 client 代码。 |
调用后存储到当前目录 output 路径下。
1. 构建镜像时无法拉取 Docker 基础镜像
由于网络连接问题或镜像源访问限制,可能会导致从 Docker Hub 拉取基础镜像失败。可尝试在本地 Docker 配置文件 /etc/docker/daemon.json 中添加国内可信镜像仓库地址,以提升镜像下载速度和稳定性。如果上述方法仍无法解决,可尝试从官方或可信第三方渠道手动下载镜像文件。
2. 镜像构建过程中出现安装 Python 依赖时超时?
可能由于网络问题,pip 从官方源下载依赖速度过慢或连接失败。在执行构建镜像脚本时,使用 -p 参数指定国内 Python 包索引 URL,以构建依赖收集镜像脚本使用清华镜像源为例:
./scripts/prepare_rc_image.sh -p https://pypi.tuna.tsinghua.edu.cn/simple