Ubuntu 安装 pytorch

2023-10-30

使用 pytorch 进行深度学习训练。 这也是我不得不选择 linux 的原因。

系统:ubuntu 22.04
型号:Lenovo Yoga 14sIHU 2021
集显:Irix Xe (lspci | grep -i vga)
独显:GeForce MX450 (lspci | grep -i nvidia)
在这里插入图片描述

安装驱动

Show Applications中搜索 Additional Drivers

在这里插入图片描述
选择最其中一个显卡驱动进行安装。其中如果对驱动了解不多,可以选择最上面那个,或者多选几次。对于我的环境而言,我记得第一次安装成功时是选最上面那个。但第二次安装时发现选择最上面之后重启时候,没办法进入系统了,一直卡住。

在这里插入图片描述
在网上查找了部分资料了,发现 Yoga14s(MX450)-Ubuntu20.04-显卡驱动安装
联想小新pro14/yoga 14s 2021安装ubuntu/kali/manjaro问题排雷 都提到了禁用nouveau。于是利用如下命令禁用nouveau,根据 Ubuntu20.04 系统禁用自带的Nouveau驱动

sudo vim /etc/modprobe.d/blacklist-nouveau.conf #该文件可能需要新建

在上述文件中添加如下语句。

blacklist nouveau
options nouveau modeset=0

更新initramfs

sudo update-initramfs -u

重启系统后,通过以下命令查看是否禁用,没有显示内容,则表示nouveau被成功禁用。

lsmod | grep nouveau

最后根据 ubuntu18.04 禁止nouveau 并安装NVIDIA显卡驱动 修改 /etc/default/grub 文件为
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi_osi=linux"。注意考虑到在文章 双系统安装 ubuntu 22.04 + win11(yoga 14s 2021) 中我对grub文件的修改。则综合就变成了"quiet splash acpi_osi=linux i915.enable_psr=0 i8042.dumbkbd"

在这里插入图片描述
最后试着换了下驱动,可以安装,同时安装之后能够正常进入系统。这里有一个小技巧就是,如果安装完之后有个restart按钮,那么便是正常(并没有经过严谨的检验)。另外,上述的工作只是充分条件,并不一定必要。

在这里插入图片描述
使用nvidia-smi检验是否安装成功。如果直接在additional drivers那一步restart后就能够正常显示结果,则就说明安装成功了,不需要包括禁用nouveau在内的任何其他步骤。

在这里插入图片描述
同时 Ubuntu安装nvidia驱动_小潇港哥的博客-CSDN博客 这篇文章提供了命令行安装驱动的方法。

一些命令根据 Linux安装NVIDIA显卡驱动的正确姿势

sudo prime-select nvidia # 切换nvidia显卡
sudo prime-select intel  # 切换intel显卡
sudo prime-select query  # 查看当前使用的显卡

此外,卸载nvidia驱动的方式(如果有更详细的方式敬请指正)。

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

安装 cuda

访问 cuda-downloads,这里参考 解决在nvidia官网下载巨慢的问题。根据它的指示,下载后安装。注意 wget 同样可以把.com 改成 .cn。具体的过程可以参考 ubuntu20.04安装及pytorch_gpu、tensorflow2.X_gpu安装回顾

wget https://developer.download.nvidia.com/compute/cuda/12.0.1/local_installers/cuda_12.0.1_525.85.12_linux.run
sudo sh cuda_12.0.1_525.85.12_linux.run

在这里插入图片描述
在安装过程中需要取消驱动的安装(之前已经安装)。
在这里插入图片描述
最终得到。注意记录下红色标记的这些数据。(卸载cuda的方式也在下图中)
在这里插入图片描述
sudo gedit ~/.bashrc 将它们更新到 ~/.bashrc 文件(注意cuda-12.0替换成cuda也可以,因为是有软链的)。

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

在这里插入图片描述
source ~/.bashrc 更新一下,再用 nvcc -V 检验一下。
在这里插入图

安装 cudnn

主要参考 Ubuntu22.04安装CUDA和cuDNN详细过程记录NVIDIA Deep Learning cuDNN Documentation。就是把下载的源码拷贝到刚才cuda的位置。

下载源码之后,解压后得到。

在这里插入图片描述
然后确定目标路径 /usr/local/cuda-12.0/include/usr/local/cuda-12.0/lib64

在这里插入图片描述
如果此时就在解压的文件夹内,就可以把参考文献中的命令修改为:

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

非常推荐上述的参考文献,非常详细。

检验

cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

安装 Miniconda

首先安装 miniconda ,参考 在Ubuntu上安装和使用miniconda

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
sh Miniconda3-latest-Linux-x86_64.sh

根据提示完成即可。然后设置环境变量。在~/.bashrc 文件中 添加 export PATH="/home/moon/Tools/miniconda3/bin/:$PATH" (这里路径可以自己指定),然后更新 source ~/.bashrc完成。

另外,我发现 miniconda 中自己在 ~/.bashrc 文件写入了一段路径。

在这里插入图片描述
只需要 source ~/.bashrc 就能够调出conda。这样就相当于安装成功了。

在这里插入图片描述
可能是安装过程中的这个选项选择yes的缘故。但并没有细致探究过。

在这里插入图片描述
关于miniconda的使用,可以参考其他文献。另外,

安装 pytorch

在百度搜索pytorch进入官网,注意前面安装的是 cuda-12.0,而pytorch最新的是11.7,但我试了下,可以运行。或者可以回到cuda那一步下载pytorch对应的版本。

在这里插入图片描述
用下面代码来检验。

import torch
torch.__version__
torch.cuda.is_available()

在这里插入图片描述

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

Ubuntu 安装 pytorch 的相关文章

  • python获取上传/下载速度

    我想在我的计算机上监控上传和下载速度 一个名为 conky 的程序已经在 conky conf 中执行了以下操作 Connection quality alignr wireless link qual perc wlan0 downspe
  • 如何在 Ubuntu 中创建公共 HTML 文件夹?

    简单的问题 但由于某种原因我无法在谷歌上找到确切的答案 我在 Slicehost 上安装了全新的 Ubuntu 并且想在我的主目录中为包含一堆静态 HTML 文件的简单网站创建一个公共目录 我该怎么做呢 只是打字的问题吗mkdir publ
  • 执行“minikube start”命令时出现问题

    malik malik minikube start minikube v1 12 0 on Ubuntu 18 04 Using the docker driver based on existing profile Starting c
  • Bash for Windows 10 gcc 不会编译粘贴到根目录中的 c 文件

    正如标题所示 如果我将在其他地方编写的c文件粘贴到Linux子系统的根目录中 则无法编译它 我做了一个测试 我制作了两个不同标题的 hello world 程序 一个在 vi 中 我可以从 bash 界面进入 另一个在其他地方 当我编译了
  • 尽管 if 语句,Visual Studio 仍尝试包含 Linux 标头

    我正在尝试创建一个强大的头文件 无需更改即可在 Windows 和 Linux 上进行编译 为此 我的包含内容中有一个 if 语句 如下所示 if defined WINDOWS include
  • 如何获取 (Linux) 机器的 IP 地址?

    这个问题和之前问的几乎一样如何获取本地计算机的IP地址 https stackoverflow com questions 122208 get the ip address of local computer 问题 但是我需要找到一个的I
  • 如何让R使用所有处理器?

    我有一台运行 Windows XP 的四核笔记本电脑 但查看任务管理器 R 似乎一次只使用一个处理器 如何让 R 使用全部四个处理器并加速我的 R 程序 我有一个基本系统 我使用它在 for 循环上并行化我的程序 一旦您了解需要做什么 此方
  • .net-core:ILDASM / ILASM 的等效项

    net core 是否有相当于 ILDASM ILASM 的功能 具体来说 我正在寻找在 Linux 上运行的东西 因此为什么是 net core ildasm 和 ilasm 工具都是使用此存储库中的 CoreCLR 构建的 https
  • Bash - 在与当前终端分开的另一个终端中启动命令的新实例

    我有一个简单的 bash 脚本 test sh 设置如下 bin bash args if args 0 check capture then watch n 1 ls lag home user capture0 watch n 1 ls
  • 如何使用waf构建共享库?

    我想使用构建一个共享库waf http code google com p waf 因为它看起来比 GNU 自动工具更容易 更简洁 到目前为止 我实际上有几个与我开始编写的 wscript 有关的问题 VERSION 0 0 1 APPNA
  • CUDA 与 DataParallel:为什么有区别?

    我有一个简单的神经网络模型 我应用cuda or DataParallel 在模型上如下所示 model torch nn DataParallel model cuda OR model model cuda 当我不使用 DataPara
  • 内核的panic()函数是否完全冻结所有其他进程?

    我想确认内核的panic 功能和其他类似kernel halt and machine halt 一旦触发 保证机器完全冻结 那么 所有的内核和用户进程都被冻结了吗 是panic 可以被调度程序中断吗 中断处理程序仍然可以执行吗 用例 如果
  • 静态方法的 Java 内存模型

    我来自操作系统和 C 语言背景 在代码编译时 世界很简单 需要处理和理解堆栈 堆文本部分等 当我开始学习 Java 时 我确实了解 JVM 和垃圾收集器 我对静态方法感到很有趣 根据我的理解 类的所有实例都会在堆中创建 然后被清理 但是 对
  • 错误:“rjags”的包或命名空间加载失败

    在终端的 conda 环境之一中 我能够成功安装包 rjags 但是 当我在该环境中运行 R 并运行库 rjags 时 出现以下错误 加载所需的包 coda 错误 rjags 的包或命名空间加载失败 rjags 的 loadNamespac
  • 如何使用Android获取Linux内核的版本?

    如何在 Android 应用程序中获取 Linux 内核的版本 不是 100 确定 但我认为调用 uname r 需要 root 访问权限 无论如何 有一种不太肮脏的方法可以做到这一点 那就是 System getProperty os v
  • 这种文件锁定方法可以接受吗?

    我们有 10 个 Linux 机器 每周必须运行 100 个不同的任务 这些计算机主要在我们晚上在家时执行这些任务 我的一位同事正在开发一个项目 通过使用 Python 自动启动任务来优化运行时间 他的程序将读取任务列表 抓取一个打开的任务
  • cdc_acm:无法设置 dtr/rts - 无法与 USB cdc 设备通信

    我试图使用 pic24fj128gb206 枚举 usb cdc 设备 设备似乎已正确枚举 但是当我将设备连接到 Linux PC 时 我从内核收到以下警告消息 cdc acm 1 8 1 6 7 1 0 failed to set dtr
  • 检查已安装的软件包,如果没有找到则安装

    我需要检查已安装的软件包 如果未安装则安装它们 RHEL CentOS Fedora 示例 rpm qa grep glibc static glibc static 2 12 1 80 el6 3 5 i686 如何在 BASH 中进行检
  • XAMPP为MariaDB设置root用户密码

    如何在 Ubuntu Kubuntu 16 04 上的 XAMPP 中设置 MariaDB 的 root 用户密码 默认情况下 root 用户没有设置密码 我正在使用 XAMPP 7 1 11 我在 Windows 和 Linux 上都成功
  • 使用自定义堆的类似 malloc 的函数

    如果我希望使用自定义预分配堆构造类似 malloc 的功能 那么 C 中最好的方法是什么 我的具体问题是 我有一个可映射 类似内存 的设备 已将其放入我的地址空间中 但我需要获得一种更灵活的方式来使用该内存来存储将随着时间的推移分配和释放的

随机推荐

  • Python - OpenCV识别条形码、二维码(已封装,拿来即用)

    此代码可识别条形码和二维码 已封装好 拿来即用 import cv2 import pyzbar pyzbar as pyzbar import numpy from PIL import Image ImageDraw ImageFont
  • Google Colab 如何使用step by step 简介

    1条消息 Colab使用 maox9629的博客 CSDN博客 colabhttps blog csdn net maox9629 article details 120757922
  • vue3搜索功能

    目录 设置数据和搜索词 创建计算属性 实现搜索功能 在Vue 3中实现搜索功能可以通过以下步骤进行 假设你已经有一个包含数据列表的组件 并且你想要在该列表中实现搜索功能 设置数据和搜索词 首先 在你的组件中定义一个用于存储数据和搜索词的变量
  • 1- OpenCV+TensorFlow 入门人工智能图像处理-课程介绍

    人工智能最火的两个方向 自然语言处理和计算机视觉 OpenCV的图像处理 TensorFlow的使用 mark 供需关系理论 有需求所以才有提供 招聘网站 图像算法两万以上 都需要的技能 OpenCV TensorFlow 人工智能时代之计
  • xss闯关详解

    文章目录 xss闯关详解 level 1 level 2 level 3 level 4 level 5 level 6 level 7 level 8 level 9 level 10 level 11 开始使用burpsuite lev
  • [xbttracker] linux 下 xbt tracker环境搭建(ubuntu)

    系统环境 Ubuntu x64 20 04 操作系统 win10 xbt源码 https github com dangwei 90 xbt 参考文档 http xbtt sourceforge net tracker 官网 注 官网 xb
  • 86篇!近3年顶会上的语义分割重磅论文

    语义分割技术在众多领域得到应用 包括 环境感知 自动驾驶 机器人导航等 随着计算机视觉领域的不断发展 语义分割技术成为从事相关学习和研究人员需要了解和掌握的技能 这次我邀请了上市公司高级算法工程师 张老师 用1个小时带大家一起去探索语义分割
  • 基于OpenCV的两种圆弧长度测量方法

    基于OpenCV的两种圆弧长度测量方法 OpenCV是广泛使用的计算机视觉库 在图像处理中 圆弧的长度是一个非常重要的参数 本文将会介绍两种基于OpenCV的圆弧长度测量方法 一种是通过弧度法测量圆弧长度 另一种则是通过插值法测量圆弧长度
  • jar包打不开怎么处理?

    第一种情况 首先win R 输入cmd打开命令行窗口 输入javac 检查一下是否有问题 正常的情况应该是下图这种 如果不是这种的 重新弄配置下你的环境变量 第二种情况 找到jdk目录下的bin文件夹 用里面的javaw打开 可以设置为默认
  • 约瑟夫问题

    约瑟夫问题 约瑟夫问题一般有两种解决方法 一种数组 一种链表 本次采用数组方式说明解决 规则 n个人围成一个圈 每个人分别标注为1 2 n 要求从1号从1开始报数 报到k的人出圈 接着下一个人又从1开始报数 如此循环 直到只剩最后一个人时
  • eclipse web项目目录结构

    按照 Java EE 规范的规定 一个典型的 Web 应用程序有四个部分 1 公开目录 2 WEB INF web xml 文件 发布描述符 必选 3 WEB INF classes 目录 编译后的 Java类文件 可选 4 WEB INF
  • Vue实现动态锚点

    前几天做项目的时候 需要实现一个动态锚点的效果 如果是传统项目 这个效果就非常简单 但是放到 Vue 中 就有两大难题 1 在没有 jQuery 的 animate 方法的情况下 如何实现平滑滚动 2 如何监听页面滚动事件 在浏览了大量文章
  • STM32串口中断卡死主循环一直进中断问题分析-2021-10-05

    在一项目中 使用STM32作为主控 程序运行一段时间后概率出现主循环卡死现象 问题分析如下 1 程序USART2不停接收并处理串口数据 波特率115200 2 主循环卡死 3 USART1中断及TIM2中断响应函数运行正常 USART1及T
  • Html中截取url参数 实现HTML间的url传值

    大家好 今天遇到一个问题 页面全是html url传值 竟然获取不到参数值 A html 登录按钮 jQuery function login click function ajax url http 10 9 80 211 8090 ia
  • vue的多层主键的通信

    div div
  • 标准化与标准计分

    其实就是衡量 含金量 的一种方法 标准计分其实就是 距离 标准差 貌似和离差很像 离差就是 距离 标准差 10 50 对于分数来说 如果与平均分的距离越大 含金量就越高呢 在组数据中 可以求分均值 中位数以及标准差了 以考试成绩为例 现在
  • 模糊算法51单片机学习应用(一)模糊化

    模糊算法51单片机学习应用 一 模糊化 最近在尝试学习模糊算法 网上查了很多材料 大多都是写原理 粗略一看好像感觉我懂了 但是真的要做的话 却完全不知道从哪里开始入手 其实 对我们首次学习使用的人来说 我们不要那些高大上的原理 我们先理解他
  • react中样式的使用(内联和外部样式表)

    1 在src中新建三个子组件分别为 Header Footer Content 2 在里面分别写入代码 建议用rcc快捷方式 Header js中代码如下 import React Component from react var Head
  • Java中哈希集(HashSet)概念,实现以及操作

    Java中HashSet的用法 1 HashSet概念 2 Java文档中HashSet的实现 3 HashSet的构造函数 3 1 HashSet 3 2 HashSet int initialCapacity 3 3 HashSet i
  • Ubuntu 安装 pytorch

    使用 pytorch 进行深度学习训练 这也是我不得不选择 linux 的原因 系统 ubuntu 22 04 型号 Lenovo Yoga 14sIHU 2021 集显 Irix Xe lspci grep i vga 独显 GeForc