ubuntu安装及深度学习框架(CUDA、cuDNN、Anaconda、pytorch、pycharm)

2023-11-13


前言

最近想要在linux下搭建深度学习框架,一方面用于学习,另一方面满足课题需要。我的设备是联想R7000-2020,配置是R5 4600H+GTX1650+500G固态+1T机械(比较拉),电脑装的是win10,为了满足日常需求,所以想着装个双系统(win+ubuntu),在ubuntu上配置深度学习。


一、安装ubuntu20.04.4

1.准备工作

我们需要提前准备好一个U盘(16g以上),用于制作系统启动盘。从下面这个网站可以下载ubuntu各版本的镜像,这里我下的是20.04.4。

清华大学镜像网站

在这里插入图片描述
在这里插入图片描述
注意选择发行版本的时候选Desktop liveDVD,这个版本是有桌面的。下载完之后就得开始制作启动盘了,可以用UtraISO软碟通来制作。直接从官网下载试用版就行软碟通官网。下载之后的制作方法如下:

ultraiso制作u盘启动盘教程图文详解

制作完成后就可以进行下一步操作了。

在windows硬盘中创建一个新的卷给ubuntu,便于新系统的安装。这一步很重要,如果处理不好,轻则需要重装ubuntu,重则电脑数据丢失。网上有很多教程说分个50G给ubuntu就好,实验证明,这是傻*行为,空间不够大,等需要的时候就晚了,还得删除其他文件腾地儿,甚至重装系统,难受的一批。由于我固态中存放的文件较多,没法分太多空间,所以我准备在机械硬盘中分出400G给ubuntu(其实有点多了)。创建新卷的方法可以参考下面这个

win7、win10磁盘分区

2.开始安装

新建分区后,就可以把启动盘插上,准备安装系统了,进入开机进入bios,设置启动顺序,U盘第一,F10保存后会进入ubuntu安装界面。安装的过程网上教程有很多,我这里就贴一个Win10下UEFI环境安装Ubuntu 16.04双系统教程,但是里面分区的时候推荐的大小不要按照那个,可以参考我这个,主要还是efi和根目录。

名称 大小
efi 2-4g
swap 16g
/ 50g
/home 100g
/user 剩余全部

二、安装英伟达驱动(方案一)不推荐

该方案是从官网下的最新的驱动,过程有点繁琐。

1.下载NVIDIA驱动

根据自己的显卡,从官网下载驱动英伟达官网

2.安装GCC

打开终端(ctrl+alt+T),按顺序输入以下代码

sudo apt-get install gcc
sudo apt-get update
sudo apt-get install make

一般安装的gcc都是9.4版本的了

3.卸载原有NVIDIA驱动(一般都没有)

打开终端(ctrl+alt+T),输入以下代码

sudo apt-get remove --purge nvidia*

4.禁用通用驱动

sudo gedit /etc/modprobe.d/blacklist.conf 或者(blacklist-nouveau.conf)

在打开的blacklist.conf末尾添加

blacklist nouveau
options nouveau modeset=0

保存后,在终端输入如下代码,更新内核

sudo update-initramfs –u

然后输入reboot重启系统。重启后输入以下代码检查是否关闭驱动,没有输出表示关闭成功。

lsmod | grep nouveau

很多教程还需要安装LightDM,我安装了电脑会进不去系统,所以我就没安装,也没发现有什么异常。
5、进入到下载的英伟达驱动目录,默认是在下载里,我们从该目录进入终端。
在这里插入图片描述
按顺序输入以下代码

sudo chmod  a+x NVIDIA-Linux-x86_64-460.84.run //对应自己下载的驱动名称
sudo ./NVIDIA-Linux-x86_64-460.84.run -no-x-check -no-nouveau-check -no-opengl-files
// 注意:后面三个选项的前面都是:减号“-”

其中
-no-x-check:安装驱动时关闭X服务
-no-nouveau-check:安装驱动时禁用nouveau
-no-opengl-files:只安装驱动文件,不安装OpenGL文件 (最重要)

安装过程中会弹出一些选项,根据需要选择就行(其实是我忘了咋选了)。安装完成后在终端输入 nvidia-smi可检测驱动是否已经安装。正常的是这样的:
在这里插入图片描述

三、安装英伟达驱动(方案二)推荐

该方案是从ubuntu自带的软件库里安装稳定版的驱动,过程很简单。

1.查看推荐驱动版本

在终端输入以下代码

ubuntu-drivers devices

可以看到如下信息:
在这里插入图片描述
红色框部分表示推荐的驱动版本。我们直接运行以下代码,会自动安装推荐版本驱动。

sudo ubuntu-drivers autoinstall

安装完成后重启,输入nvidia-smi即可查看是否完成安装。

三、安装CUDA及cuDNN

1.下载CUDA

可以从官网下载CUDA下载,我下载的是11.1.0版本的CUDA。
在这里插入图片描述
在这里插入图片描述
在终端输入红框的代码即可下载并安装CUDA。在安装过程中注意取消第一项显卡驱动前面的X,因为CUDA自带显卡驱动,这样会造成重复安装,导致安装失败。

2.配置环境变量

在终端输入

gedit ~/.bashrc

在打开的文件最后一行添加以下内容

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

最后再激活一下

source ~/.bashrc

在终端输入以下代码检查是否完成安装

nvcc -V

正常安装的界面如下
在这里插入图片描述

3.安装cuDNN

首先还得去官网下载cuDNN,下载需要注册登陆,要与CUDA版本对应。
在这里插入图片描述
下载完成后需要解压,在ubuntu里叫做提取,右键压缩包,就可以看到提取到此处,解压后,进入CUDA文件夹,并在该目录打开终端,输入以下代码

sudo cp cuda/include/cudnn.h /usr/local/cuda/include/

sudo cp cuda/include/cudnn_version.h /usr/local/cuda/include/
 
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
 
sudo chmod a+r /usr/local/cuda/include/cudnn.h
 
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*

即可完成文件的复制,之后输入cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2(老贼把验证文件移到cudnn_version.h里面了),出现以下界面表示安装成功。

在这里插入图片描述

四、安装Anaconda及pytorch

Anaconda是一个开源的Python发行版本,包含了conda、Python等180多个科学包及其依赖项,可以用于包管理器和环境管理。比如A项目中用了Python2,而B项目使用Python3,而同时安装两个Python版本可能会造成许多混乱和错误,这是使用Anaconda就可以为不同的项目建立不同的运行环境。

PyTorch是一个开源的Python机器学习库,基于Torch,用于自然语言处理等应用程序。2017年1月,由Facebook人工智能研究院(FAIR)基于Torch推出了PyTorch

1.安装Anaconda

进入清华镜像下载Anaconda,我下的版本是这个

在这里插入图片描述
下载完成之后进入安装包所在目录,使用bash指令进行anaconda安装:

bash Anaconda3-2020.11-Linux-x86_64.sh #改成自己下载的版本

一路yes就可以。最后输入以下代码检查是否完成安装

conda info

在这里插入图片描述

2.安装pytorch

首先要使用Anaconda创建一个虚拟环境,用于安装pytorch,这一步很重要。在终端输入以下代码查看目前已有的虚拟环境。

conda info --envs

在这里插入图片描述
其中base后面的*表示基层或者当前的环境,在用户前面的括号也会显示当前的环境,输入以下代码创建新的虚拟环境

conda create --name torchEnv python=3.8

其中torchEnv表示创建的虚拟环境的名称,选择的python版本为3.8,创建完成后激活该环境

activate torchEnv

接下来要切换环境,在新环境中安装pytorch。按照以下顺序输入代码

# 查看已有的虚拟环境,选择你要切换到的虚拟环境
conda env list
#选择虚拟环境,这里我选择的是torchEnv
conda activate torchEnv

完成后不要关闭终端,前往pytorch官网,按照下图选择版本。这里注意!pytorch和cuda的版本一定一定一定要对应,否则我们从镜像源里安装的可能是cpu版的pytorch,主要原因是Anconda是一个大聪明,如果没在源里找到GPU版的pytorch,会自动安装cpu版的。
在这里插入图片描述注意红框的命令,复制下来,并在后面加上以下代码-i https://pypi.douban.com/simple/ 表示从豆瓣源下载pytorch,完整的代码如下:

pip3 install torch==1.8.2+cu111 torchvision==0.9.2+cu111 torchaudio==0.8.2 -f https://download.pytorch.org/whl/lts/1.8/torch_lts.html -i https://pypi.douban.com/simple/ 

完成后就可以准备下一步啦。

五、安装pycharm及配置pytorch解释器

1.安装pycharm

官网下载社区版(专业版要钱),下载完成后解压缩,解压的方法就是右键提取到此处,进入加压后的文件夹,再进入bin,在bin目录下进入终端
在这里插入图片描述
在终端里输入以下代码,打开pycharm

sh pycharm.sh

打开之后会弹出一个小框,我们把它最大化就可以看到创建新项目,点击创建新项目,就进入了软件里面,汉化可以按照以下步骤

在这里插入图片描述
点击设置后弹出以下界面

在这里插入图片描述
重启后就实现了汉化。同时,在工具-创建桌面条目可以生成桌面快捷方式。

2.配置pytorch解释器

按照以下步骤即可

在这里插入图片描述
点击后选择编辑配置

在这里插入图片描述
选择我们在第四部分创建的torchEnv虚拟环境,确定后,重启即可。

我们试着在主程序输入以下代码,测试是否有问题。

import torch
# 创建tensor
x = torch.rand(4, 3)
print(x)
# 构造数据类型为long,数据是0的矩阵
x = torch.zeros(4, 3, dtype=torch.long)
print(x)

输出为

在这里插入图片描述

写在最后

在这个过程中,遇到了一些小问题如下:

1、安装ubuntu时给efi分区太少(200M)不够用只能重装
2、第二次安装过程中,不小心把磁盘类型(F盘和G盘)变成了动态硬盘,只好把该盘里的东西移走,格式化硬盘后变回了基本硬盘。
3、安装pytorch时网不行,采用conda的方式下载不了,只能通过pip,同时清华源挂了,只好用豆瓣源下载。
4、下载pycharm后打开找不到创建项目的选项,原来是没有最大化(珍妮马荔浦)。

如果一切顺利的话,这次的教程就结束了,文中有些引用,就不一一列举了,有问题请在评论区留言,谢谢各位。(写了这么多给个赞不过分吧~)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ubuntu安装及深度学习框架(CUDA、cuDNN、Anaconda、pytorch、pycharm) 的相关文章

  • Django 代理模型的继承和多态性

    我正在开发一个我没有启动的 Django 项目 我面临着一个问题遗产 我有一个大模型 在示例中简化 称为MyModel这应该代表不同种类的物品 的所有实例对象MyModel应该具有相同的字段 但方法的行为根据项目类型的不同而有很大差异 到目
  • SQLAlchemy 通过关联对象声明式多对多自连接

    我有一个用户表和一个朋友表 它将用户映射到其他用户 因为每个用户可以有很多朋友 这个关系显然是对称的 如果用户A是用户B的朋友 那么用户B也是用户A的朋友 我只存储这个关系一次 除了两个用户 ID 之外 Friends 表还有其他字段 因此
  • 将 saxon 与 python 结合使用

    我需要使用 python 处理 XSLT 目前我正在使用仅支持 XSLT 1 的 lxml 现在我需要处理 XSLT 2 有没有办法将 saxon XSLT 处理器与 python 一起使用 有两种可能的方法 设置一个 HTTP 服务 接受
  • OpenCV Python cv2.mixChannels()

    我试图将其从 C 转换为 Python 但它给出了不同的色调结果 In C Transform it to HSV cvtColor src hsv CV BGR2HSV Use only the Hue value hue create
  • Python(Selenium):如何通过登录重定向/组织登录登录网站

    我不是专业程序员 所以请原谅任何愚蠢的错误 我正在做一些研究 我正在尝试使用 Selenium 登录数据库来搜索大约 1000 个术语 我有两个问题 1 重定向到组织登录页面后如何使用 Selenium 登录 2 如何检索数据库 在我解决
  • 通过最小元素比较对 5 个元素进行排序

    我必须在 python 中使用元素之间的最小比较次数来建模对 5 个元素的列表进行排序的执行计划 除此之外 复杂性是无关紧要的 结果是一个对的列表 表示在另一时间对列表进行排序所需的比较 我知道有一种算法可以通过 7 次比较 总是在元素之间
  • 使用 matplotlib 绘制时间序列数据并仅在年初显示年份

    rcParams date autoformatter month b n Y 我正在使用 matpltolib 来绘制时间序列 如果我按上述方式设置 rcParams 则生成的图会在每个刻度处标记月份名称和年份 我怎样才能将其设置为仅在每
  • Flask 会话变量

    我正在用 Flask 编写一个小型网络应用程序 当两个用户 在同一网络下 尝试使用应用程序时 我遇到会话变量问题 这是代码 import os from flask import Flask request render template
  • 是否可以忽略一行的pyright检查?

    我需要忽略一行的pyright 检查 有什么特别的评论吗 def create slog group SLogGroup data Optional dict None SLog insert one SLog group group da
  • OpenCV 无法从 MacBook Pro iSight 捕获

    几天后 我无法再从 opencv 应用程序内部打开我的 iSight 相机 cap cv2 VideoCapture 0 返回 并且cap isOpened 回报true 然而 cap grab 刚刚返回false 有任何想法吗 示例代码
  • 如何在ipywidget按钮中显示全文?

    我正在创建一个ipywidget带有一些文本的按钮 但按钮中未显示全文 我使用的代码如下 import ipywidgets as widgets from IPython display import display button wid
  • 在Python中获取文件描述符的位置

    比如说 我有一个原始数字文件描述符 我需要根据它获取文件中的当前位置 import os psutil some code that works with file lp lib open path to file p psutil Pro
  • Pygame:有没有简单的方法可以找到按下的任何字母数字的字母/数字?

    我目前正在开发的游戏需要让人们以自己的名义在高分板上计时 我对如何处理按键有点熟悉 但我只处理过寻找特定的按键 有没有一种简单的方法可以按下任意键的字母 而不必执行以下操作 for event in pygame event get if
  • python获取上传/下载速度

    我想在我的计算机上监控上传和下载速度 一个名为 conky 的程序已经在 conky conf 中执行了以下操作 Connection quality alignr wireless link qual perc wlan0 downspe
  • 为字典中的一个键附加多个值[重复]

    这个问题在这里已经有答案了 我是 python 新手 我有每年的年份和值列表 我想要做的是检查字典中是否已存在该年份 如果存在 则将该值附加到特定键的值列表中 例如 我有一个年份列表 并且每年都有一个值 2010 2 2009 4 1989
  • 有人用过 Dabo 做过中型项目吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我们正处于一个新的 ERP 风格的客户端 服务器应用程序的开始阶段 该应用程序是作为 Python 富客户端开发的 我们目前正在评估 Dabo
  • 使用其构造函数初始化 OrderedDict 以便保留初始数据的顺序的正确方法?

    初始化有序字典 OD 以使其保留初始数据的顺序的正确方法是什么 from collections import OrderedDict Obviously wrong because regular dict loses order d O
  • Python 类继承 - 诡异的动作

    我观察到类继承有一个奇怪的效果 对于我正在处理的项目 我正在创建一个类来充当另一个模块的类的包装器 我正在使用第 3 方 aeidon 模块 用于操作字幕文件 但问题可能不太具体 以下是您通常如何使用该模块 project aeidon P
  • 如何使用 Pycharm 安装 tkinter? [复制]

    这个问题在这里已经有答案了 I used sudo apt get install python3 6 tk而且效果很好 如果我在终端中打开 python Tkinter 就可以工作 但我无法将其安装在我的 Pycharm 项目上 pip
  • 如何将输入读取为数字?

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 Why are x and y下面的代码中使用字符串而不是整数 注意 在Python 2

随机推荐

  • 线段树(java)

    线段树描述 线段树是一种二叉搜索树 与区间树相似 它将一个区间划分成一些单元区间 每个单元区间对应线段树中的一个叶结点 使用线段树可以快速的查找某一个节点在若干条线段中出现的次数 时间复杂度为O logN 而未优化的空间复杂度为2N 实际应
  • 使用File类读取文件夹中所有文件

    在平时使用图形化界面操作计算机时 可以很方便的区分各种文件 并进行操作 但对于编程而言 需要通过一些方法才能实现区分或列出文件 在Java编程中 有一个对文件操作的类叫做File类 File类的一个对象代表一个文件或者文件夹 并且File类
  • android内存优化面试题,写给Android软件工程师的3条建议

    我的移动开发春季历程 没有稳定的工作 只有稳定的能力 春天 又到了万物复苏的季节 在程序猿这个行当里 作为 Android 开发出生的我 在经历了5年的脱发生涯后 现在更多的是称呼自己为移动开发攻城狮 Java面试题 1 GC机制 垃圾回收
  • 【使用ip地址进入百度】

    ping一下百度的地址 C Users CaiWeiTong gt ping www baidu com 正在 Ping www baidu com 36 152 44 95 具有 32 字节的数据 来自 36 152 44 95 的回复
  • ElementUI浅尝辄止21:Tree 树形控件

    树形组件 用清晰的层级结构展示信息 可展开或折叠 树组件使用挺频繁的 常见于侧边栏树形目录 树形下拉选项按钮或搜索查询树形信息选项 1 如何使用 基础的树形结构展示
  • 每天五分钟机器学习:使用主成分分析法PCA算法的注意事项

    本文重点 PCA算法能够降维数据 这会给我们带来一些好处 本节课程我们将学习一下 在应用PCA算法时的一些建议 PCA算法可以提高算法的运行 如果数据集维度特别大 10000维 算法运行的会比较慢 我们使用PCA算法能够有效的降低数据的维度
  • maven打包报错-There are test failures

    如果工程中有测试程序 需要检查测试程序的包名与主程序的包名是否一致 解决方法 将包名修改为一致的包名 如果修改后无效 则先执行一下clean命令 在执行package 修改在测试程序的注解中指定主测试类 如果出现 Failed to cle
  • Qt在linux下安装时报错:cannot execute binary file

    最近由于项目需要 得把原来的产品升级为Qt5 之前用的都是Qt4 所以学习了一下Qt5 在windows平台下安装qtcreator时很顺利 但是在ubuntu下安装时遇到了问题 具体表现是在Qt官网https download qt io
  • 【深入理解Linux内核】【分页】相关函数或宏

    PAGE SHIFT PMD SHIFT PUDSHIFT PGDIR SHIFT 指定offset字段位数 指定offset和table总位数 确定页上级目录能够映射的区域大小 确定页全局目录能够映射的区域大小 PTRS PER PTE
  • 第二讲:网线的制作方法及步骤

    这几年 网络搭建与应用 专业技能大赛所需网线需要参赛学生自己制作 所以今天讲讲网线的制作方法及步骤 所要原料 双绞线 RJ45水晶头 所需工具 双绞线压线钳 双绞线测试仪 在制作网线之前 我们先来了解双绞线的连接方法 双绞线的连接方法有两种
  • windows下redis 和 hiredis的编译与使用

    转 http www cnblogs com raker p 4368741 html 果然 高端的程序员真心是鸟都不鸟windows的 redis的客户端找了一圈愣是没有C 的windows版本 我要做个windows上的C 的服务器都没
  • ubuntu安装SSH2

    apt get install libssh2 1 dev libssh2 php service apache2 restart 安装完成之后 可以使用SCP远程复制文件 connection ssh2 connect 192 168 1
  • 读取本地文件到读出p.node涉及的函数

    这里是读取本地文件的所调用的函数 func ParseNode rawurl string Node error if m incompleteNodeURL FindStringSubmatch rawurl m nil id err H
  • 【学习笔记】多模态综述

    多模态综述 前言 1 CLIP ViLT 2 ALBEF 3 VLMO 4 BLIP 5 CoCa 6 BeiTv3 总结 参考链接 前言 本篇学习笔记虽然是多模态综述 本质上是对ViLT后多模态模型的总结 时间线为2021年至2022年
  • Linux文件描述符和重定向

    文件描述符 0 stdin 标准输入 1 stdout 标准输出 2 stderr 标准错误 成功和不成功的命令 student myhost ls ls cannot access No such file or directory st
  • STM32定时器

    目录 一 定时器的基本介绍 二 定时器的原理框图 1 定时器时钟 2 时基单元 3 捕获输入 4 PWM输出 三 定时器的应用 1 定时器的基础定时计数功能 2 PWM比较输出 3 外部脉冲计数 a 外部触发输入 ETR 外部时钟模式2 b
  • 617. 合并二叉树(c++)

    暴力解 当t1为空返回t2 当t2为空返回t1 当t1 t2都有值 new新节点为两个节点的和 新节点左子树为原始节点左子树合并 新节点右子树为原始节点右子树合并 Definition for a binary tree node stru
  • stm32 /*TIM定时器使用

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 一部分 定时器定时计数功能 一 定时器RCC内部时钟初始化配置 二 定时时间的计算 试验现象 晶振原理 1s时间计算 1min时间计算 制作时钟读数表 试验现象 试
  • leetcode刷题(四)——概率论与数理统计(一)

    leetcode刷题系列四 主要的内容涉及概率论和数理统计的知识 例题 算法分析 int dp 12 70 double dicesProbability int n int returnSize int i j k double f do
  • ubuntu安装及深度学习框架(CUDA、cuDNN、Anaconda、pytorch、pycharm)

    文章目录 前言 一 安装ubuntu20 04 4 1 准备工作 2 开始安装 二 安装英伟达驱动 方案一 不推荐 1 下载NVIDIA驱动 2 安装GCC 3 卸载原有NVIDIA驱动 一般都没有 4 禁用通用驱动 三 安装英伟达驱动 方