Ubuntu 18.04 + CUDA 11.3.0 + CUDNN 8.2.1 + Anaconda + Pytorch 1.10_ubuntu18.04cuda11.3-程序员宅基地

技术标签: ubuntu  linux  pytorch  # 环境配置与调试  

写在最前面

Ubuntu 18.04 + CUDA 11.3.0 + CUDNN 8.2.1 + Anaconda + Pytorch 1.10

不需要有外网,也不需要虚拟机的图形化界面

下载安装都是本机去阿里镜像网站下载whl,然后通过xftp传输,失败率降到最低

若报错,可参考完整流程:https://blog.csdn.net/wtyuong/article/details/127877543

参考

https://blog.csdn.net/TU_Dresden/article/details/121049141
https://blog.csdn.net/weixin_43491255/article/details/118549032
https://blog.csdn.net/a563562675/article/details/119458550
https://blog.csdn.net/a563562675/article/details/119458550
https://blog.csdn.net/qq_44315987/article/details/106314054
(下面这个链接内含各种报错)
https://blog.csdn.net/Williamcsj/article/details/123523087
https://blog.csdn.net/A496608119/article/details/123455529
https://blog.csdn.net/qq_51570094/article/details/124148671

Xshell常用命令

Ctrl + Shift 复制
Insert + Shift 粘贴

Ubantu

Ctrl+Alt+T打开终端

检查系统的各项配置

查看ubuntu系统的版本信息和gcc版本

cat /proc/version

Linux version 5.4.0-131-generic (buildd@lcy02-amd64-092) linux内核版本号
gcc version 7.5.0 gcc编译器版本号7.5
Ubuntu 7.5.0-3ubuntu1~18.04 Ubuntu版本号18.04

在这里插入图片描述

查看Linux的内核版本和系统是多少位的

uname -a

在这里插入图片描述

显示正在使用的内核为5.4.0-131-generic。
X86_64代表系统是64位的。

验证机器是否具有n卡

lspci | grep -i nvidia

在这里插入图片描述

验证内核

sudo apt-get install linux-headers-$(uname -r)

在这里插入图片描述

查看原有的显卡版本和CUDA支持(如果安装了跳过安装显卡nvidia)

nvidia-smi

在这里插入图片描述

各种配置(建议不要省略)

安装vim

sudo apt-get install vim

增加pip镜像源

安装pip

apt install pip

检查pip源

pip config list

增加镜像源

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simpleWriting

禁用nouveau

sudo vim /etc/modprobe.d/blacklist.conf 

打开上述文档添加这两行保存

blacklist nouveau
options nouveau modeset=0

刷新

 sudo update-initramfs -u

重启电脑,一定要重启。

sudo reboot

然后输入这个命令

 lsmod | grep nouveau

如果啥也没输出,就是成功关闭了。

开启SSH服务

https://blog.csdn.net/qq_42130526/article/details/119972366

检查是否开启SSH服务

因为Ubuntu默认是不安装SSH服务的,所以在安装之前可以查看目前系统是否安装,通过以下命令:

ps -e |grep ssh

输出的结果ssh-agent表示ssh-client启动,sshd表示ssh-server启动。我们是需要安装服务端所以应该看是否有sshd,如果没有则说明没有安装。

启动SSH服务

sudo /etc/init.d/ssh start

在这里插入图片描述

安装显卡驱动

卸载显卡驱动

sudo apt-get remove --purge nvidia*
sudo apt autoremove

请添加图片描述

安装显卡驱动

加入PPA,然后更新库

sudo apt-get update
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update

直接装系统推荐显卡驱动,出错几率小(但需要注意:cuda11.3要求465以上!!!)

会自动安装推荐的版本(一般是最高的版本)

sudo ubuntu-drivers autoinstall

报警告且不动时,再等一会就开始自己安装了
警告类似于:

WARNING:root:_pkg_get_support nvidia-driver-510-server: package has invalid Support n model

在这里插入图片描述

最后的界面显示
在这里插入图片描述

测试安装状态

查看状态后需要重启!!!

sudo reboot

使用nvidia-smi 查看是否已经读取到安装的驱动,如果提示没有找到命令重启后再试

nvidia-smi

会出现显卡版本和CUDA支持

例子:
| NVIDIA-SMI 430.26 Driver Version: 430.26 CUDA Version: 10.2 |
这个表示:显卡P106-100,显存6G,驱动430.26,CUDA10.2

在这里插入图片描述

CUDA

选择

下载前仔细看这张图
在这里插入图片描述

Table 1. CUDA Toolkit and Compatible Driver Versions
CUDA Toolkit	Linux x86_64 Driver Version	Windows x86_64 Driver Version
CUDA 10.2.89	>= 440.33	>= 441.22
CUDA 10.1 (10.1.105 general release, and updates)	>= 418.39	>= 418.96
CUDA 10.0.130	>= 410.48	>= 411.31
CUDA 9.2 (9.2.148 Update 1)	>= 396.37	>= 398.26
CUDA 9.2 (9.2.88)	>= 396.26	>= 397.44
CUDA 9.1 (9.1.85)	>= 390.46	>= 391.29
CUDA 9.0 (9.0.76)	>= 384.81	>= 385.54
CUDA 8.0 (8.0.61 GA2)	>= 375.26	>= 376.51
CUDA 8.0 (8.0.44)	>= 367.48	>= 369.30
CUDA 7.5 (7.5.16)	>= 352.31	>= 353.66
CUDA 7.0 (7.0.28)	>= 346.46	>= 347.62

上图给出了不同版本所要求的的最低驱动要求,尽量选择相同的进行安装。
编译cuda samples会报错,例如 chrono模块、gcc版本过高等提示。

与之前的gcc版本进行比对

gcc --version

cuda的gcc依赖版本在官方文档的安装指南上会给出
在这里插入图片描述
在这里插入图片描述
我是Ubuntu18.04.6,gcc7.5.0

下载+安装

进入官网
https://developer.nvidia.com/cuda-toolkit-archive
普通机器:x86_64 服务器 power architecture

选择需要的CUDA安装包(runfile格式)
可以创建一个文件夹保存下载的文件,然后在终端切换到那个目录下,进行相应的命令行 (如下图末尾箭头所指)
一定要注意版本!!!
网上推荐CUDA 11.3.0 + CUDNN 8.2.1 + Pytorch 1.10
这三者的组合非常麻烦,这套亲测成功,别的搭配不敢保证。

例子:
在这里插入图片描述
实际:
在这里插入图片描述

不用wget下载,容易因为网不好报错

下载axel + 将com改为cn

Tensorflow官网下载东西也是无法直接访问的,但是可以通过镜像访问。微软的官网直接访问速度很慢,可是把网站的后缀.com改成.cn后速度就很快了。
访问确实快了,但是下载的连接改为cn后是404页面,需要进一步操作

参考:https://blog.csdn.net/yxt916/article/details/109402650

1.下载axel(wget的哥哥):
终端输入:

sudo apt install -y axel

2.看图,复制底下的下载链接:(以下是cuda11.3.0的下载链接,做个示范,你需要复制对应自己的)

http://developer.download.nvidia.com/compute/cuda/11.3.0/local_installers/cuda_11.3.0_465.19.01_linux.run

3.把.com改成.cn,使用axel下载cuda11.1:
终端输入:

axel -n 50 http://developer.download.nvidia.cn/compute/cuda/11.3.0/local_installers/cuda_11.3.0_465.19.01_linux.run

(注意这里网址里的.com已经改成了.cn)(具体参数 -n 50作用:狡兔50窟)

效果:不断线,不降速,已经是成了

在这里插入图片描述

执行结束

sudo sh cuda_11.3.0_465.19.01_linux.run

上述命令执行结束出现一个框
在这里插入图片描述

通过方向键下移光标,选择continue
在这里插入图片描述
打字输入accept

然后就是下面这个了
由于已经安装了驱动 按方向键,使得光标在driver上,再按回车,之后通过方向键使光标移动到install
此时下图里需要将第一行的Driver CUDA 11.0去掉。(注意:回车键作用是将 [X] 就会变成[ ],[X]代表有,[ ]代表无)

应该将[X] 就会变成[ ]

在这里插入图片描述

成功了
在这里插入图片描述

配置环境

装好之后打开环境变量

vim ~/.bashrc

i键进入编辑模式,esc退出,写:wq保存退出
加入这两行保存,注意我这里是11.3,你如果是别的版本,要改成自己的

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

在这里插入图片描述

刷新环境变量生效

source ~/.bashrc

测试CUDA

1、查看版本

nvcc -V

在这里插入图片描述
2、终端输入

cd /usr/local/cuda-11.3/samples/1_Utilities/deviceQuery
sudo make
sudo ./deviceQuery

输出Result=pass代表成功了,里面显示了CUDA可用的设备信息。

CUDNN

下载+安装

参考:https://blog.csdn.net/avideointerfaces/article/details/104793245

进入网址下载,要把cudnn版本与cuda版本对应正确
https://developer.nvidia.com/rdp/cudnn-archive
上述网址需要注册登录,按照要求完成即可

tgz易错,但deb卸载麻烦(本文下载tgz文件)
本机翻墙下载cudnn-11.3-linux-x64-v8.2.1.32,然后Xftp传过去

在这里插入图片描述
查看传过去后的文件名

ls

在这里插入图片描述

进入下载后的文件夹解压后,就可以看见cuda文件夹

在解压后的文件夹中输入一下命令

重命名,然后再解压缩。命令如下所示。

mv cudnn-11.3-linux-x64-v8.2.1.32.tgz cudnn-11.3.tgz
tar -xvzf cudnn-11.3.tgz

因为下载的是库,不是源代码,所以不需要编译了。只需要将解压缩出来的so库和头文件拷贝到系统目录下即可。

在这里插入图片描述

将cudnn解压后的include和lib64文件夹复制到cuda中

cuda-11.3 此处是自己版本号 。

一行行复制,因为要输密码

sudo cp cuda/include/cudnn.h /usr/local/cuda-11.3/include/  #解压后的文件夹名字为cuda-11.3 
sudo cp cuda/include/cudnn_version.h /usr/local/cuda-11.3/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-11.3/lib64/ 
sudo chmod a+r /usr/local/cuda-11.3/include/cudnn.h 

在这里插入图片描述

最后安装一下依赖

sudo apt-get install libfreeimage3 libfreeimage-dev

查看cudnn版本

之前网上提供的方式cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2已经不能用了,因为cudnn.h文件里内容修改了,不再存放版本信息。

使用命令

cat /usr/local/cuda/include/cudnn.h | grep cudnn

查看,发现里面导入了cudnn_version.h文件,版本信息就存放在这个文件里
在这里插入图片描述

Anaconda

下载+安装

方法1:Anaconda3官网下载
方法2:清华大学开源软件镜像站下载
https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/

里面有新旧版本,我下载的是Anaconda3-2021.05-Linux-x86_64.sh版本,如果大家需要其它版本,把这个后缀换成你想下的版本即可;

wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2021.05-Linux-x86_64.sh

在这里插入图片描述
在这里插入图片描述
1、运行.sh文件

bash Anaconda3-2021.05-Linux-x86_64.sh

2.进入安装,输入yes
3.进入阅读注册手册,按 Enter 键
4.注册手册阅读完, 输入yes进行安装,然后会安装成功

环境配置

5.安装成功后,用vim打开环境变量:

sudo vim ~/.bashrc

添加下列语句,保存并退出
注意: “/home/sc/anaconda3/bin:$PATH” 的 sc是自己的用户名称,每个人都不一样,不知道可以看上面的打开的环境变量有个样本

export PATH="/home/sc/anaconda3/bin:$PATH"

在这里插入图片描述
在这里插入图片描述
更新环境变量
在终端输入:

source ~/.bashrc

添加清华源

将anaconda换一下源(加入清华源)

参考:https://blog.csdn.net/qq_31878083/article/details/122069771

vi ~/.condarc

把channels里面的https改成http
这个是网络安全的原因,https协议是有安全性的ssl加密传输协议,是浏览器和服务器之间的通信加密,这样来确保传输的安全。

auto_activate_base: false
channels:
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
  - defaults
show_channel_urls: true
default_channels:
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
  - http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
custom_channels:
  conda-forge: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  msys2: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  bioconda: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  menpo: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  simpleitk: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

为了保证用的是镜像站提供的索引,清除索引缓存,输入:

conda clean -i 

根据不同要求得到命令后,要把-c pytorch去掉,才会去自己添加的镜像源下载

在这里插入图片描述

此时,Anaconda3的基础设置弄完了

Pytorch

创建conda虚拟环境

创建一个虚拟环境,用来安装pytorch

conda create -n pytorch1.12_gpu

or,可以选择Python版本

conda create -n pytorch1.12_gpu python==3.8

这样就创建了一个名字为pytorch1.12_gpu,基于python版本3.8的一个虚拟环境了

激活环境

conda activate pytorch1.12_gpu

或

source activate pytorch1.12_gpu

安装

进入官网,查看你的版本对应的安装命令

https://pytorch.org/get-started/locally/
在这里插入图片描述

大家根据自己的情况从上面选一个

安装文件非常大,因此我选择本机下载,然后传过去

安装cpu版本

参考:https://blog.csdn.net/ke996/article/details/112761228

去官网查看目前的稳定版本为1.13.0
在这里插入图片描述
pytorch的whl下载地址.
https://download.pytorch.org/whl/torch_stable.html

也就是需要下载这两个包
cu113/torchvision-0.13.0%2Bcu113-cp39-cp39-linux_x86_64.whl
cu113/torch-1.12.0%2Bcu113-cp39-cp39-linux_x86_64.whl

注意cu才是cpu版本,我是cuda11.3,所以选择了这个
在这里插入图片描述
特别重要的是cp后面跟着是python版本这个也要下载相应版本
在这里插入图片描述
下载到本地后:进入conda环境激活对应的python36

conda env list
conda activate pytorch1.12_gpu

下载python3.9

conda install python=3.9.0

pip install+ whl文件位置
比如我的

pip install --no-index --find-links=file:/home/tjh/torch-1.12.0+cu113-cp39-cp39-linux_x86_64.whl(需要替换文件位置)

安装gpu版本

参考:https://blog.csdn.net/weixin_46415031/article/details/114809650

官网查看配套安装包(但是不要直接安装,而是去镜像网站找,然后下载配套的安装包)
在这里插入图片描述

(下面这个不要执行)
conda install pytorch==1.12.0 torchvision==0.13.0 torchaudio==0.12.0 cudatoolkit=11.3 -c pytorch

pytorch的whl下载地址.
https://download.pytorch.org/whl/torch_stable.html

比如:torch-1.8.0+cu111-cp36-cp36m-win_amd64.whl
torchvision-0.9.0+cu111-cp36-cp36m-win_amd64.whl
在这里插入图片描述

下载后通过Xftp上传
在这里插入图片描述

下载到本地后:进入conda环境激活对应的python36

conda env list
conda activate pytorch1.12_gpu

下载python3.9

conda install python=3.9.0

pip install+ whl文件位置
比如我的

pip install --no-index --find-links=file:/home/tjh/torch-1.12.0+cu113-cp39-cp39-linux_x86_64.whl(需要替换文件位置)

测试

进入虚拟环境,输入命令测试,大功告成!

python3
import torch
torch.cuda.is_available()
print(torch.__version__) #输出PyTorch版本
print(torch.__path__) #输出PyTorch的路径

退出虚拟环境的命令:

conda deactivate
conda env list

cpu only测试

环境名称为pytorch11.3_cpu
在这里插入图片描述
查看torchvision 版本

conda list torchvision

在这里插入图片描述

gpu测试

在这里插入图片描述
在这里插入图片描述
pytorch下载:由于通过命令行下载的pytorch版本是cpu版本,导致后期测试torch测试是否可以使用GPU 时,torch.cuda.is_available()一直返回False.

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wtyuong/article/details/128100101

智能推荐

18个顶级人工智能平台-程序员宅基地

文章浏览阅读1w次,点赞2次,收藏27次。来源:机器人小妹  很多时候企业拥有重复,乏味且困难的工作流程,这些流程往往会减慢生产速度并增加运营成本。为了降低生产成本,企业别无选择,只能自动化某些功能以降低生产成本。  通过数字化..._人工智能平台

electron热加载_electron-reloader-程序员宅基地

文章浏览阅读2.2k次。热加载能够在每次保存修改的代码后自动刷新 electron 应用界面,而不必每次去手动操作重新运行,这极大的提升了开发效率。安装 electron 热加载插件热加载虽然很方便,但是不是每个 electron 项目必须的,所以想要舒服的开发 electron 就只能给 electron 项目单独的安装热加载插件[electron-reloader]:// 在项目的根目录下安装 electron-reloader,国内建议使用 cnpm 代替 npmnpm install electron-relo._electron-reloader

android 11.0 去掉recovery模式UI页面的选项_android recovery 删除 部分菜单-程序员宅基地

文章浏览阅读942次。在11.0 进行定制化开发,会根据需要去掉recovery模式的一些选项 就是在device.cpp去掉一些选项就可以了。_android recovery 删除 部分菜单

mnn linux编译_mnn 编译linux-程序员宅基地

文章浏览阅读3.7k次。https://www.yuque.com/mnn/cn/cvrt_linux_mac基础依赖这些依赖是无关编译选项的基础编译依赖• cmake(3.10 以上)• protobuf (3.0 以上)• 指protobuf库以及protobuf编译器。版本号使用 protoc --version 打印出来。• 在某些Linux发行版上这两个包是分开发布的,需要手动安装• Ubuntu需要分别安装 libprotobuf-dev 以及 protobuf-compiler 两个包•..._mnn 编译linux

利用CSS3制作淡入淡出动画效果_css3入场效果淡入淡出-程序员宅基地

文章浏览阅读1.8k次。CSS3新增动画属性“@-webkit-keyframes”,从字面就可以看出其含义——关键帧,这与Flash中的含义一致。利用CSS3制作动画效果其原理与Flash一样,我们需要定义关键帧处的状态效果,由CSS3来驱动产生动画效果。下面讲解一下如何利用CSS3制作淡入淡出的动画效果。具体实例可参考刚进入本站时的淡入效果。1. 定义动画,名称为fadeIn@-webkit-keyf_css3入场效果淡入淡出

计算机软件又必须包括什么,计算机系统应包括硬件和软件两个子系统,硬件和软件又必须依次分别包括______?...-程序员宅基地

文章浏览阅读2.8k次。计算机系统应包括硬件和软件两个子系统,硬件和软件又必须依次分别包括中央处理器和系统软件。按人的要求接收和存储信息,自动进行数据处理和计算,并输出结果信息的机器系统。计算机是脑力的延伸和扩充,是近代科学的重大成就之一。计算机系统由硬件(子)系统和软件(子)系统组成。前者是借助电、磁、光、机械等原理构成的各种物理部件的有机组合,是系统赖以工作的实体。后者是各种程序和文件,用于指挥全系统按指定的要求进行..._计算机系统包括硬件系统和软件系统 软件又必须包括

随便推点

进程调度(一)——FIFO算法_进程调度fifo算法代码-程序员宅基地

文章浏览阅读7.9k次,点赞3次,收藏22次。一 定义这是最早出现的置换算法。该算法总是淘汰最先进入内存的页面,即选择在内存中驻留时间最久的页面予以淘汰。该算法实现简单,只需把一个进程已调入内存的页面,按先后次序链接成一个队列,并设置一个指针,称为替换指针,使它总是指向最老的页面。但该算法与进程实际运行的规律不相适应,因为在进程中,有些页面经常被访问,比如,含有全局变量、常用函数、例程等的页面,FIFO 算法并不能保证这些页面不被淘汰。这里,我_进程调度fifo算法代码

mysql rownum写法_mysql应用之类似oracle rownum写法-程序员宅基地

文章浏览阅读133次。rownum是oracle才有的写法,rownum在oracle中可以用于取第一条数据,或者批量写数据时限定批量写的数量等mysql取第一条数据写法SELECT * FROM t order by id LIMIT 1;oracle取第一条数据写法SELECT * FROM t where rownum =1 order by id;ok,上面是mysql和oracle取第一条数据的写法对比,不过..._mysql 替换@rownum的写法

eclipse安装教程_ecjelm-程序员宅基地

文章浏览阅读790次,点赞3次,收藏4次。官网下载下载链接:http://www.eclipse.org/downloads/点击Download下载完成后双击运行我选择第2个,看自己需要(我选择企业级应用,如果只是单纯学习java选第一个就行)进入下一步后选择jre和安装路径修改jvm/jre的时候也可以选择本地的(点后面的文件夹进去),但是我们没有11版本的,所以还是用他的吧选择接受安装中安装过程中如果有其他界面弹出就点accept就行..._ecjelm

Linux常用网络命令_ifconfig 删除vlan-程序员宅基地

文章浏览阅读245次。原文链接:https://linux.cn/article-7801-1.htmlifconfigping <IP地址>:发送ICMP echo消息到某个主机traceroute <IP地址>:用于跟踪IP包的路由路由:netstat -r: 打印路由表route add :添加静态路由路径routed:控制动态路由的BSD守护程序。运行RIP路由协议gat..._ifconfig 删除vlan

redux_redux redis-程序员宅基地

文章浏览阅读224次。reduxredux里要求把数据都放在公共的存储区域叫store里面,组件中尽量少放数据,假如绿色的组件要给很多灰色的组件传值,绿色的组件只需要改变store里面对应的数据就行了,接着灰色的组件会自动感知到store里的数据发生了改变,store只要有变化,灰色的组件就会自动从store里重新取数据,这样绿色组件的数据就很方便的传到其它灰色组件里了。redux就是把公用的数据放在公共的区域去存..._redux redis

linux 解压zip大文件(解决乱码问题)_linux 7za解压中文乱码-程序员宅基地

文章浏览阅读2.2k次,点赞3次,收藏6次。unzip版本不支持4G以上的压缩包所以要使用p7zip:Linux一个高压缩率软件wget http://sourceforge.net/projects/p7zip/files/p7zip/9.20.1/p7zip_9.20.1_src_all.tar.bz2tar jxvf p7zip_9.20.1_src_all.tar.bz2cd p7zip_9.20.1make && make install 如果安装失败,看一下报错是不是因为没有下载gcc 和 gcc ++(p7_linux 7za解压中文乱码