Ubuntu20.04环境从零安装 Python+PyTorch+CUDA+cuDNN+TensorRT+FFmpeg+OpenCV,以Docker镜像为例

 一. Docker配置

 首先确认自己有root账户或者sudo权限,否则用不了docker。

1. 确认自己的Docker版本:

sudo docker --version

如果是19.02或者更老的,建议更新Docker到最新版本,否则如果使用GPU的话需要安装nvidia-docker,并使用nvidia-docker启动容器。这里不再赘述过程。

如果是19.03或者更新的,按照下面步骤安装nvidia-docker2即可。

2. 安装nvidia-docker2

nvidia-docker是英伟达为了让用户可以在docker里使用GPU而开发的套件,对于老版本的Docker,安装nvidia-docker后,使用nvidia-docker启动容器。对于19.03版本以后Docker,安装nvidia-docker2之后,使用docker命令加上--gpu参数启动容器即可。

设置GPG key:

distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
      && curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
      && curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \
            sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
            sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

然后使用apt安装:

sudo apt-get update
sudo apt-get install -y nvidia-docker2

重启docker,并验证是否成功:

sudo systemctl restart docker
sudo docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi

成功的话应该输出类似界面:

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 450.51.06    Driver Version: 450.51.06    CUDA Version: 11.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  Tesla T4            On   | 00000000:00:1E.0 Off |                    0 |
| N/A   34C    P8     9W /  70W |      0MiB / 15109MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

如有安装过程遇到问题,参照官方文档:

Installation Guide — NVIDIA Cloud Native Technologies documentationhttps://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html

 3. 运行镜像

 从docker hub 拉取镜像,以ubuntu20.04为例:

sudo docker pull ubuntu:20.04

启动容器(docker19.03或更新版本):

sudo docker run -it --gpus all ubuntu:20.04

如果你是老版本docker,则需要使用nvidia-docker来启动容器:

sudo nvidia-docker run -it ubuntu:20.04

之后你会发现命令行变为root@1234abcd5678:,这样就是进入docker容器里了。在容器中输入exit即可退出容器,以下是docker常用的命令:

# 以下均为在宿主机上使用的命令,不要在容器里使用
sudo docker pull image_name:v1.0 #下载名为image_name:v1.0的镜像
sudo docker images  #查看所有镜像
sudo docker run -it image_name:v1.0  #把名为image_name:v1.0的镜像运行,成为一个容器
sudo docker ps -a  #查看所有容器
sudo docker start -i 1234abcd5678  #启动ID为1234abcd5678的容器
sudo docker cp ./abc.txt 1234abcd5678:/root/  #把当前路径下的abc.txt拷贝到容器1234abcd5678的/root/目录下
sudo docker rm 1234abcd5678  #删除ID为1234abcd5678的容器
sudo docker rmi image_name:v1.0  #删除名为image_name:v1.0的镜像
sudo docker commit 1234abcd5678 image_name:v2.0 #把ID为1234abcd5678的容器打包成名为image_name:v2.0的镜像

从docker hub下载的Ubuntu20.04镜像只有几十兆,基本什么都没安装,所有环境都从头安装。

二. 安装python

Ubuntu20.04发行版是默认安装python3.8的,想换版本的可以跟着此步骤编译安装,已经有Python且不想换版本的忽略此步。

首先安装一些依赖,有权限问题的记得在apt前面加sudo,docker里面默认是root用户,所以不需要sudo:

apt update
apt install pkg-config
apt install wget
apt install gcc
apt install vim 
apt install software-properties-common
apt install kmod
apt install build-essential
apt install git
apt install unzip

(可选)如果想编译python所有的可选模块,也安装一下下面这些依赖:

apt install build-essential gdb lcov pkg-config \
      libbz2-dev libffi-dev libgdbm-dev libgdbm-compat-dev liblzma-dev \
      libncurses5-dev libreadline6-dev libsqlite3-dev libssl-dev \
      lzma lzma-dev tk-dev uuid-dev zlib1g-dev

下载Python源码安装包并解压,别的版本自己替换网址。 

wget https://www.python.org/ftp/python/3.9.12/Python-3.9.12.tar.xz
tar -xf Python-3.9.12.tar.xz
cd Python-3.9.12
./configure --enable-optimizations
make
make install

三、安装CUDA、cuDNN、TensorRT、PyTorch

1. 安装显卡驱动和CUDA

我们是以docker镜像为例,因此不需要安装驱动,驱动是在宿主机已经安装好的,再安装也不会成功。

如果你不是docker镜像,且想安装驱动,CUDA安装包里是包含驱动的,所以可以直接安装CUDA。

访问CUDA下载界面

CUDA Toolkit 11.6 Update 2 Downloads | NVIDIA Developerhttps://developer.nvidia.com/cuda-downloads选择自己的架构和系统,最后一步是选择安装方式,一般有deb和runfile安装两种方式,我习惯用deb装,更简洁方便,runfile的话需要先禁用nouveau drivers。

还是以我们的Ubuntu20.04为例,deb安装步骤是这样的:

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.6.2/local_installers/cuda-repo-ubuntu2004-11-6-local_11.6.2-510.47.03-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2004-11-6-local_11.6.2-510.47.03-1_amd64.deb
sudo apt-key add /var/cuda-repo-ubuntu2004-11-6-local/7fa2af80.pub
sudo apt-get update
sudo apt-get -y install cuda

如果安装遇到问题,参考CUDA安装官方文档,英伟达家的官方文档都非常详细且丰富,对新手非常友好,真的可以秒杀其他任何软件的文档:

Installation Guide Linux :: CUDA Toolkit Documentation (nvidia.com)https://docs.nvidia.com/cuda/cuda-installation-guide-linux/

2. 安装CuDNN

去这里下载(需要登录Nvidia账户):

cuDNN Download | NVIDIA Developerhttps://developer.nvidia.com/rdp/cudnn-download先访问网页,登录,选择版本下载(我选择用Tar包,比DEB方便),下载之后把tar包传到Ubuntu上,如果你是桌面版Ubuntu可以直接访问网页下载。注意,用命令行wget下载是下载不下来的。

解压tar:

tar -xvf cudnn-linux-x86_64-8.x.x.x_cudaX.Y-archive.tar.xz
# 注意,上面的x.x.x和X.Y应替换为实际的版本,或者直接tab键自动填充

 拷贝到cuda相关目录即为安装成功。

cp cudnn-*-archive/include/cudnn*.h /usr/local/cuda/include 
cp -P cudnn-*-archive/lib/libcudnn* /usr/local/cuda/lib64 
chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*

 如果使用其他安装方式,或者安装遇到什么问题,参考cuDNN官方安装文档:

Installation Guide :: NVIDIA Deep Learning cuDNN Documentationhttps://docs.nvidia.com/deeplearning/cudnn/install-guide/

3. 安装TensorRT

访问TensorRT下载界面,同样需要Nvidia会员登录:

NVIDIA TensorRT Download | NVIDIA Developerhttps://developer.nvidia.com/nvidia-tensorrt-download选择版本后,找到和你CUDA版本相应的DEB安装包下载,将DEB包传到Ubuntu上。

安装步骤,不要全复制,记得把文件名字改成你对应的。

dpkg -i nv-tensorrt-repo-ubuntu1804-cuda10.2-trt7.2.3.4-ga-20210226_1-1_amd64.deb
apt-key add /var/nv-tensorrt-repo-ubuntu1804-cuda10.2-trt7.2.3.4-ga-20210226/7fa2af80.pub
apt-get update
apt-get install tensorrt

其他安装方式或者遇到问题,参照TensorRT官方文档,在这里面找到你要安装的版本,找Installation Guide:

Documentation Archives :: NVIDIA Deep Learning TensorRT Documentationhttps://docs.nvidia.com/deeplearning/tensorrt/archives/index.html

4. 安装PyTorch

访问官网,选择OS和安装方式,然后复制指令即可。

PyTorchhttps://pytorch.org/我选的是1.11.0版本、Linux、pip、python,安装指令就是默认的:

pip3 install torch torchvision torchaudio

四、安装FFmpeg和OpenCV 

首先安装FFmpeg,再安装OpenCV。

FFmpeg在Ubuntu上可以使用apt install ffmpeg来安装,但是缺少一些东西,我这里选择源码编译安装。

 1. 编译安装yasm

先安装yasm,在FFmpeg编译时用到,使用wget下载1.3.0版本或者手动访问官网Index of /projects/yasm/releases/ (tortall.net)下载其他版本。

wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
tar -zxvf yasm-1.3.0.tar.gz
cd yasm-1.3.0
./configure
make
make install

这里插一条,各种格式的压缩包在Linux上的解压和压缩方法:

Linux:linux下解压*压缩tar.xz、tar、tar.gz、tar.bz2、tar.Z、rar、zip、war等文件方法 - 怒吼的萝卜 - 博客园 (cnblogs.com)https://www.cnblogs.com/nhdlb/p/11568991.html

2. 编译安装x264和x265

x264可以直接用apt装:

apt install x264 libx264-dev

 x265安装

apt install nasm
git clone https://bitbucket.org/multicoreware/x265_git.git
cd x265_git/build
cmake ../source/
make 
make install

3. 编译安装FFmpeg

使用wget或者手动访问官网 Download FFmpeg下载安装包。

configure时记住要加`--enable-shared`,不然后续安装opencv时会有问题

wget https://ffmpeg.org/releases/ffmpeg-4.4.2.tar.xz
tar -xf ffmpeg-4.4.2.tar.xz
cd ffmpeg-4.4.2/
./configure --enable-shared --enable-gpl --enable-nonfree --enable-libx264 --enable-libx265 --enable-debug --disable-optimizations --enable-pthreads
make
make install

4. 编译安装OpenCV

下载opencv和opencv_contrib

wget https://github.com/opencv/opencv/archive/4.5.5.zip
unzip -q 4.5.5.zip
rm 4.5.5.zip
wget wget https://github.com/opencv/opencv_contrib/archive/refs/tags/4.5.5.zip
unzip -q 4.5.5.zip
rm 4.5.5.zip

建立一个临时的build文件夹,在里面进行编译安装

mkdir build_opencv
cd build_opencv/
cmake -DCMAKE_BUILD_TYPE=Release -D WITH_CUDA=ON -D WITH_NVCUVID=ON -D WITH_OPENGL=ON -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.5.5/modules/ ../opencv-4.5.5

cmake之后,输出总结里的FFMPEG、CUDA、cuDNN、OpenCL应该都是YES

Ubuntu20.04环境从零安装 Python+PyTorch+CUDA+cuDNN+TensorRT+FFmpeg+OpenCV,以Docker镜像为例_第1张图片

然后编译安装

make
make install

如果你是CUDA10.2,make时有可能会报unsupported GNU version gcc versions later than 8 are not supported错误,得通过降级gcc和g++来解决:

apt remove gcc
apt-get install gcc-7 g++-7 -y
ln -s /usr/bin/gcc-7 /usr/bin/gcc
ln -s /usr/bin/g++-7 /usr/bin/g++
ln -s /usr/bin/gcc-7 /usr/bin/cc
ln -s /usr/bin/g++-7 /usr/bin/c++

你可能感兴趣的:(Ubuntu,docker,ubuntu,docker,pytorch,python)