这篇文章上次修改于 699 天前,可能其部分内容已经发生变化,如有疑问可询问作者。

本篇文章默认您已经按照《GPU Docker 环境的配置与 Docker 相关注意事项》中所述的内容在宿主机上部署好环境。

话不多说,进入正题。

正文

容器镜像选择

笔者选择包版本较为落后但稳定可靠的CentOS 7镜像,您可以根据自己的需求自主选择镜像,但强烈建议您直接选择带cudnn环境的镜像以避免去nvidia官网下载cudnn(需要登录/注册)。
注意:本文接下来的内容均针对CentOS镜像。
C7+CUDA11.2+CUDNN8

拉取镜像并创建一个容器:

docker pull nvidia/cuda:11.2.0-cudnn8-runtime-centos7
docker run -itd --name pptest --gpus all nvidia/cuda:11.2.0-cudnn8-runtime-centos7

在上述命令执行完毕后查看容器是否正常运行:

docker ps

下文操作均在容器内进行,先切换到容器:

docker exec -it pptest /bin/bash

安装基础环境

老规矩,先装EPEL:

yum install epel-release -y
yum clean && yum makecache && yum update

然后就可以开始装基础环境了:
Tips: 由于CentOS 7官方源包版本老旧,如果您的程序要求python >= 3.7,请自行编译安装。

yum install -y gcc gcc-c++ zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel python3 python3-devel xz-devel libffi-devel make mesa-libGL.x86_64 lmdb lmdb-devel libpcap-devel wget patch

然后通过cmake官方提供的脚本安装cmake(CentOS 7官方源最高只有cmake 2.x,然而下文中opencv-python的安装需要cmake >= 3.9进行编译,故采用脚本安装):

cd /usr/local
mkdir cmake-3.21
cd cmake-3.21
wget https://github.com/Kitware/CMake/releases/download/v3.21.0-rc2/cmake-3.21.0-rc2-linux-x86_64.sh -O cmake.sh
chmod +X cmake.sh
bash cmake.sh
ln -s /usr/local/cmake-3.21/bin/cmake /usr/bin/cmake

至此基础环境部署完毕。

安装PaddlePaddle-GPU与PaddleOCR及依赖环境

奇奇怪怪的依赖关系:
踩了不少坑


先装一下py的cmake:

python3 -m pip install cmake -i https://pypi.tuna.tsinghua.edu.cn/simple 

之后安装skbuild(OpenCV编译需要):

python3 -m pip install scikit-build

关于PaddlePaddle-GPU版本的选择,您可以根据飞桨官方文档的建议安装:
飞桨官网

笔者的环境是Cuda11.2,您可根据自身情况选择合适的版本:

python3 -m pip install paddlepaddle-gpu==2.1.1.post112 -f https://paddlepaddle.org.cn/whl/mkl/stable.html

最后装上PaddleOCR:

python3 -m pip install paddleocr

至此,全部环境安装完成,您可通过Python调用PaddleOCR进行文字识别。

注意事项

必要的CUDNN环境

如果您选择的镜像并未内置CUDNN,请根据镜像的CUDA版本选择相应的CUDNN Lib进行安装。

PaddlePaddle和PaddlePaddle-GPU

笔者非常不建议您同时安装PaddlePaddle和PaddlePaddle-GPU,因为这可能导致一些奇奇怪怪的问题:
什么牛马...

选择对应的PaddlePaddle-GPU版本

如果安装了不和Cuda版本对应的PaddlePaddle-GPU版本会导致一系列异常,故笔者建议您仔细阅读飞桨官方文档并安装正确的PaddlePaddle版本。

结语

总的来说是成功的,最后感谢GT团子大佬能听我在群里自言自语o( ̄▽ ̄)ブ