容器化部署比较:
特性
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++ python3 -m pip install paddlepaddle python3 -m pip install paddlepaddle-gpu 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=0python3 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 libroot@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.soln -s /usr/local/cuda-12.0/targets/x86_64-linux/lib/libcublas.so.12.0.2.224 /usr/lib/libcublas.soldconfig 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:12.0 .1 -cudnn8-runtime-ubuntu20.04 WORKDIR /home/PaddleDetection COPY demo /home/PaddleDetection/demo COPY deploy /home/PaddleDetection/deploy COPY requirements.txt /home/PaddleDetection/ ENV TZ=Asia/ShanghaiRUN 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/* 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 ENV TZ=Asia/ShanghaiRUN apt-get update && apt-get install -y --no-install-recommends \ tzdata libxml2 \ sh cuda_12.0.1_525.85.12_linux.run --silent
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
gcc g++
1 Failed to verify gcc version. See log at /var/log/cuda-installer.log for details.
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