Docker-build-paddle

容器化部署比较:

特性 TensorFlow PyTorch PaddlePaddle
镜像大小 CPU 版本:1.2 GB - 1.5 GB
GPU 版本:2.5 GB - 3 GB
CPU 版本:1 GB - 1.5 GB
GPU 版本:2 GB - 2.5 GB
CPU 版本:1.5 GB - 2 GB
GPU 版本:3.5 GB - 4 GB
镜像完善性 ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐⭐⭐
部署工具支持 TensorFlow Serving,TFLite 等 TorchServe,ONNX Runtime Paddle Serving,Paddle Inference
硬件适配 GPU/TPU/CPU,多硬件兼容 GPU/CPU,部分支持 TensorRT GPU/CPU,国产硬件适配强
生态成熟度 全球广泛使用,企业支持完善 学术界主流,生产支持逐渐完善 国内企业支持度高,中文友好
学习曲线 较陡峭 较平缓 平缓,中文文档友好
docker hub tensorflow/tensorflow
⭐️2.7K ⏬50M+
pytorch/pytorch
⭐️1.3K ⏬10M+
paddlepaddle/paddle
⭐️126 ⏬500K+
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#开发测试用
apt-get update
apt-get install -y --no-install-recommends git
apt-get install -y --no-install-recommends gcc g++ #运行时要用,不加执行python会报错
python3 -m pip install paddlepaddle #cpu
python3 -m pip install paddlepaddle-gpu #gpu 包含cpu

#python3 -m pip install -U pip setuptools

apt-get install -y software-properties-common
apt-get install -y nvidia-utils-560

git clone https://github.com/PaddlePaddle/PaddleDetection.git
cd PaddleDetection/
python3 -m pip install -r requirements.txt
python3 -m pip install scikit-learn

python3 deploy/pipeline/pipeline.py --config deploy/pipeline/config/infer_cfg_pphuman.yml --image_file=demo/000000014439.jpg

export CUDA_VISIBLE_DEVICES=0
python3 deploy/pipeline/pipeline.py --config deploy/pipeline/config/infer_cfg_pphuman.yml --device=GPU --image_file=demo/000000014439.jpg


python3 deploy/pipeline/pipeline.py --config deploy/pipeline/config/examples/infer_cfg_human_attr.yml --device=GPU --rtsp rtsp://admin:hcytech@2020@172.16.80.138:554/video1

python3 deploy/pipeline/pipeline.py --config deploy/pipeline/config/examples/infer_cfg_human_attr.yml --device=GPU --rtsp rtsp://admin:hcytech@2020@172.16.80.138:554/video1 --pushurl rtsp://172.16.10.202:8554/video1


python3 deploy/pipeline/pipeline.py --config deploy/pipeline/config/examples/infer_cfg_human_attr.yml --rtsp rtsp://admin:hcytech@2020@172.16.80.138:554/video1 --pushurl rtmp://172.16.10.102:30521/live/a

python3 deploy/pipeline/pipeline.py --config deploy/pipeline/config/examples/infer_cfg_human_attr.yml --rtsp rtsp://admin:hcytech@2020@172.16.80.138:554/video1 --pushurl rtsp://172.16.10.202:8554/video1

rtmp://172.16.10.102:30521/live/a

export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH
echo $LD_LIBRARY_PATH


ls /usr/lib | grep lib

root@cudadiy-5c4556d558-22lx2:/home/PaddleDetection# find / -name libcudnn.so*
/usr/lib/x86_64-linux-gnu/libcudnn.so.9.5.1
/usr/lib/x86_64-linux-gnu/libcudnn.so.9
root@cudadiy-5c4556d558-22lx2:/home/PaddleDetection# find / -name libcublas.so*
/usr/local/cuda-12.6/targets/x86_64-linux/lib/libcublas.so.12
/usr/local/cuda-12.6/targets/x86_64-linux/lib/libcublas.so.12.6.4.1

ln -s /usr/lib/x86_64-linux-gnu/libcudnn.so.8.8.0 /usr/lib/libcudnn.so
ln -s /usr/local/cuda-12.0/targets/x86_64-linux/lib/libcublas.so.12.0.2.224 /usr/lib/libcublas.so
ldconfig


ExternalError: CUDNN error(3000), CUDNN_STATUS_NOT_SUPPORTED.

python3 tools/export_model.py -c configs/rec/PP-OCRv4/ch_PP-OCRv4_rec_hgnet.yml -o Global.pretrained_model=./ch_PP-OCRv4_rec_server_train Global.save_inference_dir=./inference/ch_PP-OCRv4_server_rec/


export PATH=/usr/local/cuda-12.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.0/lib64:$LD_LIBRARY_PATH
1
2
RuntimeError: (PreconditionNotMet) Cannot load cudnn shared library. Cannot invoke method cudnnGetVersion.
[Hint: cudnn_dso_handle should not be null.] (at /paddle/paddle/phi/backends/dynload/cudnn.cc:64)

https://developer.nvidia.com/rdp/cudnn-archive

ccr-2vdh3abv-pub.cnc.bj.baidubce.com/paddlepaddle/paddle:2.6.2-gpu-cuda12.0-cudnn8.9-trt8.6

harbor.hcytech.dev/ai/paddle:gpu

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# FROM nvidia/cuda:11.8.0-base-ubuntu20.04 这个没有cudnn,用不了gpu
# FROM nvidia/cuda:11.8.0-cudnn8-runtime-ubuntu20.04 这个cudnn报错
# FROM nvidia/cuda:12.6.3-cudnn-runtime-ubuntu20.04
FROM nvidia/cuda:12.0.1-cudnn8-runtime-ubuntu20.04

WORKDIR /home/PaddleDetection

# demo用于测试,非必要,后期可以删除
COPY demo /home/PaddleDetection/demo
# python代码目录
COPY deploy /home/PaddleDetection/deploy
COPY requirements.txt /home/PaddleDetection/

# 设置时区,避免安装过程中的交互
ENV TZ=Asia/Shanghai
# gcc g++ 在运行推理时需要,ffmpeg推流用
RUN apt-get update && apt-get install -y --no-install-recommends \
tzdata python3.10 python3-pip gcc g++ ffmpeg && \
ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && \
echo $TZ > /etc/timezone && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
# paddle环境
RUN python3 -m pip install --no-cache-dir paddlepaddle-gpu && \
python3 -m pip install --no-cache-dir -r requirements.txt && \
rm -rf /root/.cache

https://gitlab.com/nvidia/container-images/cuda/-/tree/master/dist

https://docs.nvidia.com/cuda/archive/12.0.1/cuda-quick-start-guide/index.html#id8

CUDNN 12.0.1 :https://developer.nvidia.com/cuda-toolkit-archive

cuDNN 8.9.1 :https://developer.nvidia.com/rdp/cudnn-archive

1
2
3
4
5
6
7
8
FROM ubuntu:20.04

# 设置时区,避免安装tzdata过程中的交互
ENV TZ=Asia/Shanghai

RUN apt-get update && apt-get install -y --no-install-recommends \
tzdata libxml2 \
sh cuda_12.0.1_525.85.12_linux.run --silent
  1. cuda_12.0.1_525.85.12_linux.run依赖libxml2,libxml2依赖tzdata,tzdata需要设置ENV TZ=Asia/Shanghai

    1
    ./cuda-installer: error while loading shared libraries: libxml2.so.2: cannot open shared object file: No such file or directory
  2. gcc g++

    1
    Failed to verify gcc version. See log at /var/log/cuda-installer.log for details.
  3. Could not load library libcublasLt.so.12. Error: libcublasLt.so.12: cannot open shared object file: No such file or directory

    1
    2
    3
    4
    5
    6
    root@cudadiy-59b97d6588-rpb2m:/usr/local/cuda/lib64# ls
    libcudart.so.12 libcudart.so.12.0.146
    root@cudadiy-59b97d6588-rpb2m:/usr/local/cuda/lib64# apt-get update && apt-get install -y libcublas-12-0 libcublas-dev-12-0
    root@cudadiy-59b97d6588-rpb2m:/usr/local/cuda/lib64# ls
    libcublas.so libcublas.so.12.0.2.224 libcublasLt.so.12 libcublasLt_static.a libcudart.so.12 libnvblas.so libnvblas.so.12.0.2.224
    libcublas.so.12 libcublasLt.so libcublasLt.so.12.0.2.224 libcublas_static.a libcudart.so.12.0.146 libnvblas.so.12 stubs