ubuntu20.04极简配置一个深度学习环境

Posted 帅的发光发亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ubuntu20.04极简配置一个深度学习环境相关的知识,希望对你有一定的参考价值。

目录

ubuntu的内核配置

避免安装cuda后更新liunx内核引发的cuda驱动错误

系统更新

sudo apt update && sudo apt full-upgrade -y

查看所有内核

dpkg --get-selections | grep linux

终端显示:

binutils-x86-64-linux-gnu					install
console-setup-linux				    		install
libselinux1:amd64				    		install
libselinux1-dev:amd64						install
linux-base					        		install
linux-firmware					    		install
linux-generic					    		install
linux-generic-hwe-20.04						install
linux-headers-5.13.0-44-generic				install
linux-headers-5.13.0-51						install
linux-headers-5.13.0-51-generic				install
linux-headers-generic						install
linux-headers-generic-hwe-20.04				install
linux-hwe-5.13-headers-5.13.0-44				install
linux-hwe-5.13-headers-5.13.0-74				install
linux-image-5.13.0-44-generic				install
linux-image-5.13.0-51-generic				install
linux-image-generic							install
linux-image-generic-hwe-20.04				install
linux-libc-dev:amd64						install
linux-modules-5.13.0-44-generic				install
linux-modules-5.13.0-74-generic				install
linux-modules-5.13.0-51-generic				install
linux-modules-extra-5.13.0-44-generic		install
linux-modules-extra-5.13.0-51-generic		install
linux-signed-generic-hwe-20.04				install
linux-sound-base							install
pptp-linux									install
util-linux									install

删除冗余的内核

sudo apt-get remove \\
linux-headers-5.13.0-44 \\
linux-headers-5.13.0-44-generic \\
linux-image-5.13.0-44-generic \\
linux-modules-5.13.0-44-generic \\
linux-modules-extra-5.13.0-44-generic

卸载后,再重新检查一下现有的内核:

dpkg --get-selections | grep linux

状态为 deinstall 即已经卸载,如果觉得看着不舒服的话可以使用 purge 连配置文件里一起彻底删除,清理内核列表

sudo apt-get purge \\
linux-headers-5.13.0-44 \\
linux-headers-5.13.0-44-generic \\
linux-image-5.13.0-44-generic \\
linux-modules-5.13.0-44-generic \\
linux-modules-extra-5.13.0-44-generic

最后,更新 GRUB

sudo update-grub

锁定ubuntu的内核

sudo apt-mark hold linux-headers-5.13.0-51
sudo apt-mark hold linux-headers-5.13.0-51-generic
sudo apt-mark hold linux-image-5.13.0-51-generic

解锁ubuntu的内核

sudo apt-mark unhold linux-headers-5.13.0-51
sudo apt-mark unhold linux-headers-5.13.0-51-generic
sudo apt-mark unhold linux-image-5.13.0-51-generic

配置完后建议重启机器:

sudo reboot now

安装cuda11.3和cudnn8.2.1

在系统的软件和更新中找到附加驱动的选项。选择 nvidia-driver-510,勾选后直接点击应用更改。

我这里直接提供预先下载好的cuda11.3+cudnn8.2.1百度网盘

安装CUDA11.3

sudo sh cuda_11.3.1_465.19.01_linux.run

会等上一段时间,跟着提示操作就行。
最后按如下步骤操作

最后

sudo nano  ~/.bashrc

写入

export CUDA_HOME=/usr/local/cuda-11.3
export PATH=$PATH:$CUDA_HOME/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.3/lib64

更新~/.bashrc

source  ~/.bashrc

验证:

nvcc -V

安装正确情况如下:

l@l-GF63-Thin-9SC:~/Desktop$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2021 NVIDIA Corporation
Built on Mon_May__3_19:15:13_PDT_2021
Cuda compilation tools, release 11.3, V11.3.109
Build cuda_11.3.r11.3/compiler.29920130_0

安装cudnn8.2.1

sudo dpkg -i libcudnn8_8.2.1.32-1+cuda11.3_amd64.deb
sudo dpkg -i libcudnn8_8.2.1.32-1+cuda11.3_amd64.deb
sudo dpkg -i libcudnn8-samples_8.2.1.32-1+cuda11.3_amd64.deb

安装一些必要的库:

sudo apt-get install libfreeimage3 libfreeimage-dev freeglut3 freeglut3-dev libglfw3-dev -y

测试

sudo cp -r /usr/src/cudnn_samples_v8 ~/Desktop
cd mnistCUDNN && sudo make -j2 && ./mnistCUDNN

结果如下即为正确:

安装OpenCV4.6.0支持cuda加速

安装相关依赖

sudo apt-get update sudo apt-get upgrade -y
sudo apt-get install build-essential cmake cmake-gui unzip pkg-config -y
sudo apt-get install libjpeg-dev libpng-dev libtiff-dev libavcodec-dev libavformat-dev libswscale-dev libgtk2.0-dev libv4l-dev libxvidcore-dev libx264-dev libtbb2 libtbb-dev libdc1394-22-dev libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libjasper-dev libgtk-3-dev libatlas-base-dev liblapacke-dev gfortran python3-dev ffmpeg -y && sudo apt autoremove -y

如果出现 E: 无法定位软件包 libjasper-dev 问题,执行一下如下指令

sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update

再次运行安装Opencv相关依赖的命令即可。

编译安装

1.CMake
在终端打开cmake-gui:

sudo apt-get install cmake-gui

分别配置 sourcebuild路径,sourceopencv的源码路径,build是前面新建的build文件夹路径。
安装过程中会出现
然后点击
Configure
,在弹出的窗口中保持默认选项,最后 Finish

有些文件无法下载的情况。

这是由于无法正常访问 https://raw.githubusercontent.com 网站,可以通过修改 hosts 文件的方式来解决:
(1)使用 sudo nano /etc/hosts,打开hosts文件。
(2)在文件中尾添加185.199.109.133 raw.githubusercontent.com。
可在https://ipaddress.com/website/raw.githubusercontent.com中选取最优的配置。
(3)sudo systemctl restart NetworkManager.service重启网络服务,使上述修改生效。
(4)ping raw.githubusercontent.com,如果能 ping 通,且延时不大,则说明能正常访问。

-- IPPICV: Downloading 
-- ippicv_2020_lnx_intel64_20191018_general.tgz from https://raw.githubusercontent.com/opencv/opencv_3rdparty/a56b6ac6f030c312b2dce17430eef13aed9af274/ippicv/ippicv_2020_lnx_intel64_20191018_general.tgz
-- found Intel IPP (ICV version): 2020.0.0 [2020.0.0 Gold]
-- at: /home/l/opencv-4.6.0/build/3rdparty/ippicv/ippicv_lnx/icv
-- found Intel IPP Integration Wrappers sources: 2020.0.0
-- at: /home/l/opencv-4.6.0/build/3rdparty/ippicv/ippicv_lnx/iw

在正常的理想网络状况下,所有的文件都会被正确的下载完成,但是免不了一些意外情况。配置下载过程中还可能会出现: face_landmark_model.dat 下载缺失的情况,原因就是这个文件太大了,下载过程中网速也慢。下载过程中经常会出错。
为了能够更好跳过痛苦的折磨,这里提供一下我下载好的数据文件
注意带“.”文件会被隐藏。注意你下载保存的位置
下载完成后直接解压即可到了你的 opencv 文件目录即可,我的目录如下:

sudo unzip -d  /home/l/opencv-4.6.0/ .cache.zip

勾选下面的编译选项:
WITH_CUDA
BUILD_CUDA_STUBS
OPENCV_DNN_CUDA
ENABLE_FAST_MATH
CMAKE_BUILD_TYPE 中添加 Release
CMAKE_INSTALL_PREFIX 中添加路径 /usr/local
OPENCV_EXTRA_MODULES_PATH 中添加
opencv_contrib-4.6.0 中的 modules 的路径:
/home/l/opencv-4.6.0/opencv_contrib-4.6.0/modules

再点击 Configure,结束后勾选 CUDA_FAST_MATH ,在 CUDA_ARCH_BIN中选择保留需要的算力值,可以在通过此页面查询显卡对应的算力值,这里保留了7.0;7.5,最后再点击进行一次Configure

如上图中成功的显示 CUDACUDNN的版本即可,然后点击Generate,结束后关闭cmake-gui。

2.make
执行下面的命令,等待很长一段时间:

cd /home/l/opencv-4.6.0/build
sudo make -j$(nproc)

3.安装

sudo make install

4.环境配置

sudo echo “include /etc/ld.so.conf.d/*.conf” /etc/ld.so.conf && sudo echo “include /usr/local/lib” /etc/ld.so.conf
sudo ldconfig
sudo echo "PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig" /etc/bash.bashrc && sudo echo "export PKG_CONFIG_PATH" /etc/bash.bashrc
source /etc/bash.bashrc

测试

结构如下:

.
├── 1.jpg
├── CMakeLists.txt
└── test.cpp

test.cpp如下:

#include<opencv2/opencv.hpp>
#include<opencv2/cudaimgproc.hpp>

using namespace std;

int main(int argc, char** argv)

	cv::Mat src = cv::imread("1.jpg"); //读取图像,CPU内存读取
	cv::resize(src, src, cv::Size(0, 0), 0.8, 0.8, cv::INTER_CUBIC);//resize
	cv::imshow("input image", src);
	cv::cuda::GpuMat G_image(src);  //还有一种赋值方法,如**释的部分
	//cv::cuda::GpuMat G_image;
	//G_image.upload(src);
	cv::cuda::GpuMat gray;
	cv::cuda::cvtColor(G_image, gray, cv::COLOR_BGR2GRAY);//cuda版本里也有cvtColor这个API
	cv::Mat c_gray;
	gray.download(c_gray); //创建一个CPU mat对象后,由于imshow无法显示GMat对象,所以需要从GMat中取出来赋给CMat对象
	cv::resize(c_gray, c_gray, cv::Size(0, 0), 1.1, 1.1, cv::INTER_CUBIC);//resize
	cv::imshow("gray", c_gray); //imshow显示不了GMat对象
	cv::waitKey(0);
	cv::destroyAllWindows();
	return 0;



CMakeLists.txt如下:

# cmake version
cmake_minimum_required(VERSION 3.8)

# project name
PROJECT(HELLO)

# using C++11
set(CMAKE_CXX_FLAGS "$CAMKE_CXX_FLAGS -std=c++11 ")

# find OpenCV
FIND_PACKAGE(OpenCV REQUIRED)

# show the message of OpenCV
message(STATUS "OpenCV library status:")
message(STATUS "    version: 	$OpenCV_VERSION")
message(STATUS "    headers: 	$OpenCV_INCLUDE_DIRS")
message(STATUS "    libraries: 	$OpenCV_LIBS")

# link headers
INCLUDE_DIRECTORIES(OpenCV_INCLUDE_DIRS)

# 添加源代码文件到SRC_LIST变量中
AUX_SOURCE_DIRECTORY(. SRC_LIST)

# 生成可执行文件
ADD_EXECUTABLE(test $SRC_LIST)

# after ADD_EXECUTABLE,为生成文件target添加库
TARGET_LINK_LIBRARIES(test $OpenCV_LIBS)

接着:

cmake . && sudo make j2 && ./test

结果:

表明安装成功。

卸载

进入前面建立的build文件夹,打开终端:

sudo make uninstall
cd ..
sudo rm -r build
sudo rm -r /usr/local/include/opencv2 /usr/local/include/opencv /usr/include/opencv /usr/include/opencv2 /usr/local/share/opencv /usr/local/share/OpenCV /usr/share/opencv /usr/share/OpenCV /usr/local/bin/opencv* /usr/local/lib/libopencv*
cd /usr/
find . -name "*opencv*" | xargs sudo rm -rf

安装pytorch1.11

参考pytorch官网。
我这里采用的pip安装。没有使用Anaconda或者Miniconda的需要自己配置一下pip。

pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu113
开发者涨薪指南 48位大咖的思考法则、工作方式、逻辑体系

以上是关于ubuntu20.04极简配置一个深度学习环境的主要内容,如果未能解决你的问题,请参考以下文章

ubuntu20.04极简配置一个深度学习环境

Ubuntu20.04|最新一版的深度学习基础环境安装指导

LinuxUbuntu 20.04 深度学习 GPU 环境配置(CUDA Toolkit 11.7 + cuDNN v8.4.1)

Ubuntu20.04初步学习区块链部署简单的智能合约

Ubuntu 20.04下搭建C++ & OpenCV 4.6.0 & cmake编译

ubuntu20.04安装教程,ubuntu20.04配置教程