Linux Ubuntu20.04深度学习环境快速配置命令记录

一、驱动安装

1、更新系统包

sudo apt-get updatesudo apt-get upgrade

2、安装显卡驱动

使用apt方式安装驱动,多数情况不容易成功,

使用一下方法更佳:

1.查看合适显卡的驱动版本

ubuntu-drivers devices

NVIDIA GeForce 驱动程序 - N 卡驱动 | NVIDIANVIDIA GeForce 驱动程序官方提供下载最新版的 Geforce 驱动程序,可提升 PC 游戏体验和应用程序速度。更多关于更新显卡驱动程序以及显卡驱动程序下载的信息,请访问 NVIDIA 官网。icon-default.png?t=N7T8https://www.nvidia.cn/geforce/drivers/选择合适版本的驱动,下载后直接可以安装

 下载推荐版本

两种方式:①有桌面的,直接双击进行安装。

②命令行:


sudo dpkg -i XXX.deb

2.minicoda 见前面的文章 。Miniconda — conda documentationicon-default.png?t=N7T8https://docs.conda.io/en/latest/miniconda.html#linux-installers

3、安装cuda

查看版本对应

CUDA 12.2 Release Notes — cuda-toolkit-release-notes 12.2 documentationThe Release Notes for the CUDA Toolkit.icon-default.png?t=N7T8https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html

查看pytorch版本对应

Previous PyTorch Versions | PyTorchAn open source machine learning framework that accelerates the path from research prototyping to production deployment.icon-default.png?t=N7T8https://pytorch.org/get-started/previous-versions/

安装 11.7版本cuda比较通用

CUDA Toolkit 11.7 Update 1 Downloads | NVIDIA DeveloperResources CUDA Documentation/Release NotesMacOS Tools Training Sample Code Forums Archive of Previous CUDA Releases FAQ Open Source PackagesSubmit a BugTarball and Zip Archive Deliverablesicon-default.png?t=N7T8https://developer.nvidia.com/cuda-11-7-1-download-archive?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=20.04&target_type=deb_local

不要使用network版本安装,它会直接安装最新版本,使用离线安装,两个时间差不多

4、安装cudnn

cuDNN Archive | NVIDIA DeveloperExplore and download past releases from cuDNN GPU-accelerated primitive library for deep neural networks.icon-default.png?t=N7T8https://developer.nvidia.com/rdp/cudnn-archive

主要对应版本,intel 选86_64 , 系统 20.04.只需要下载一个文件,这里和老版本不太一样。同样双击就可以安装。

 最后一把配置环境变量

export PATH="/usr/local/cuda-11.7/bin${PATH:+:${PATH}}"
export LD_LIBRARY_PATH="/usr/local/cuda-11.7/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}"

 torch安装,参考18.04版本

Ubuntu 18.04 深度学习环境快速配置命令记录_瑾怀轩的博客-CSDN博客sudo apt-get install ubuntu-drivers-common #安装。4、在线安装不行,离线安装ok。5、安装miniconda。10、安装cudann。6、初始化conda。https://blog.csdn.net/ckq707718837/article/details/130884384?spm=1001.2014.3001.5502

二、驱动卸载

卸载cuda:

sudo apt-get --purge remove "*cuda*" "*cublas*" "*cufft*" "*cufile*" "*curand*" \"*cusolver*" "*cusparse*" "*gds-tools*" "*npp*" "*nvjpeg*" "nsight*" "*nvvm*"

 卸载nvidia驱动

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

 卸载不用的依赖包

sudo apt-get autoremove

三、可能会遇到的问题:

问题一、

ERROR: An 
NVIDIA kernel module 'nvidia-uvm' appears to already be loaded in your kernel

ERROR: An NVIDIA kernel module 'nvidia-drm' appears to already be loaded in your kernel

安装驱动的报错信息为:

ERROR: An NVIDIA kernel module 'nvidia-uvm' appears to already be loaded in your kernel.  This may be because it is 
in use (for example, by an X server, a CUDA program, or the NVIDIA Persistence Daemon), but this may also happen if 
your kernel was configured without support for module unloading.  Please be sure to exit any programs that may be us
ing the GPU(s) before attempting to upgrade your driver.  If no GPU-based programs are running, you know that your k
ernel supports module unloading, and you still receive this message, then an error may have occurred that has corrup
ted an NVIDIA kernel module's usage count, for which the simplest remedy is to reboot your computer.
 

or

ERROR: An NVIDIA kernel module 'nvidia-drm' appears to already be loaded in your kernel.  This may be because it is 
in use (for example, by an X server, a CUDA program, or the NVIDIA Persistence Daemon), but this may also happen if 
your kernel was configured without support for module unloading.  Please be sure to exit any programs that may be us
ing the GPU(s) before attempting to upgrade your driver.  If no GPU-based programs are running, you know that your k
ernel supports module unloading, and you still receive this message, then an error may have occurred that has corrup
ted an NVIDIA kernel module's usage count, for which the simplest remedy is to reboot your computer.

正常情况:

解决办法如下: 目的是移去kernel中包含NVIDIA的进程,举个栗子:

命令:

lsmod | grep nvidia

nvidia_uvm            995356  2 
nvidia_drm             53134  0 
nvidia_modeset       1195268  1 nvidia_drm
nvidia              35237551  14 nvidia_modeset,nvidia_uvm
drm_kms_helper        179394  2 i915,nvidia_drm
drm                   429744  5 i915,drm_kms_helper,nvidia,nvidia_drm
 

 数字代表依赖进程数量,卸载时,需要重后置位不存在依赖项的开始卸载,比如这里要从

nvidia-smi开始

sudo rmmod nvidia-drm
sudo rmmod nvidia-moddeset
sudo rmmod nvidia

现在再使用:

lsmod | grep nvidia

会发现基本上没有信息了打印了,如何还有,就用上面的命令卸载过程中还会出现意外情况,就是 某个模块被占用,卸载不掉

rmmod: ERROR: Module nvidia_drm is in use

 如果是 nvidia-uvm可以使用top命令,查看进程,kill掉进程,再执行上面步骤。

如果是 nvidia-drm 会发现没在进程中,这是进入无图形化界面

sudo systemctl isolate multi-user.target

这个过程可能黑屏,不用慌张,关机重启,再尝试该操作,登录账号后,同样的操作,

lsmod | grep nvidia
sudo rmmod nvidia-drm

也可以使用下面命令 

sudo modprobe -r nvidia-drm

如果还有其他的一次性卸载完。卸载完后,使用下面命令进入图形化界面

sudo systemctl start graphical.target

进入后 ,检查一下

lsmod | grep nvidia

没有依赖项可以安装了

问题二、安装是要注意版本,安装时注意选项选择

sudo sh NVIDIA-Linux-x86_64-535.42.run -no-x-check -no-nouveau-check -no-opengl-files

 后面可加参数,选择选项,跟着默认项选即可。

这里注意的是,安装32位库会根据显卡版本,修改系统内核。所以在安装前选好版本后,尽量和系统推荐版本,与内核版本保持一致。

查看内核版本

less /proc/version
cat /proc/driver/nvidia/version
ubuntu-drivers devices

安装好后nvidia驱动,使用nvidia-smi如果不需要低版本cuda需求,尽量使用nvidia-smi上面推荐的cuda版本

问题3

Failed to initialize NVML: Driver

这个问题 一般情况重启就能解决, 注意前提

1、安装好显卡驱动

2、安装好cuda和cudnn

3、配置好环境变量

解决办法: 关机 --》开机

如果还解决不了,从头再来,大概率是安装显卡驱动版本选错了,或者提示选项选错了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/81118.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

git压缩仓库

git 压缩仓库 git gc命令压缩增量存储单元,节省磁盘空间 du -sh 查看当前文件夹占用多少K 快照的存储: 对于修改的内容,做快照处理并保存. 对于未修改的文件,做引用处理.

SOLIDWORKS Composer位置关键帧的使用

SOLIDWORKS Composer是专业的SOLIDWORKS及3D文件处理的动画制作软件,作为SOLIDWORKS 产品线下的一个明星存在。 SOLIDWORKS Composer几乎可以处理任何SOLIDWORKS的模型文件并将之转化成可以动作的机械动画,可以引用在企业的网站、产品说明书以及工作指导…

MySQL 面试题——MySQL 基础

目录 1.什么是 MySQL?有什么优点?2.MySQL 中的 DDL 与 DML 是分别指什么?3.✨数据类型 varchar 与 char 有什么区别?4.数据类型 BLOB 与 TEXT 有什么区别?5.DATETIME 和 TIMESTAMP 的异同?6.✨MySQL 中 IN …

STM32F4X SPI W25Q128

STM32F4X SPI W25Q128 什么是SPISPI的特点SPI通信引脚SPI接线方式SPI速率SPI通信方式SPI时钟相位和时钟极性 STM32F4X SPISTM32F4X SPI配置STM32F4X SPI频率 W25Q128W25Q128存储结构W25Q128读写操作W25Q128常用指令读取ID命令(0x90)写使能命令(0x06)禁止写使能命令(0x04)读取W2…

黑马JVM总结(七)

(1)StringTable_编译器优化 “a”“b”对应#4:是去常量池中找ab的这个符号 astore 5:是把这个存入编号为5的局部变量 “ab”对应的指令 #4,跟“a”“b”对应#4下面弄是一样的 在执行s3“ab”这行个代码时&#xf…

在PHP8中向数组添加元素-PHP8知识详解

在php8中向数组添加元素有多种方法,在这里主要讲解几个常用的方法:使用方括号[]添加元素、使用array_unshift()函数,向数组的头部添加元素、使用array_push()函数,向数组的尾部添加元素、使用array_splice()函数添加元素。 1、使用…

学习Bootstrap 5的第十三天

目录 提示框 如何创建提示框 实例 指定提示框的位置 实例 弹出框 如何创建弹出框 实例 指定弹出框的位置 实例 关闭弹出框 实例 提示框 提示框是一个小小的弹窗,在鼠标移动到元素上显示,鼠标移到元素外就消失。 如何创建提示框 Bootstrap…

LeetCode 332. Reconstruct Itinerary【欧拉回路,通路,DFS】困难

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…

Vue3+ElementUI使用

<!DOCTYPE html> <html> <head><meta charset"UTF-8"><meta name"viewport" content"initial-scale1.0,maximum-scale1.0,minimum-scale1.0,user-scalable0, widthdevice-width"/><!-- 引入样式 --><lin…

【C++】list的模拟实现【完整理解版】

目录 一、list的概念引入 1、vector与list的对比 2、关于struct和class的使用 3、list的迭代器失效问题 二、list的模拟实现 1、list三个基本函数类 2、list的结点类的实现 3、list的迭代器类的实现 3.1 基本框架 3.2构造函数 3.3 operator* 3.4 operator-> 3…

bug总结问题集和知识点集(一)

目录 一 bug问题集1. 端口被占用 二 oracle1. oracle查看版本怎么操作2. oracle数据库&#xff1a;参数个数无效![在这里插入图片描述](https://img-blog.csdnimg.cn/6a2eebc164f9406c81525371893bbd11.png)3. ORACLE数据库如何完整卸载? 三 mybatis1. mybatis用注解如何实现模…

学习Node js:raw-body模块源码解析

raw-body是什么 raw-body的主要功能是处理HTTP请求体的原始数据。它提供了以下核心功能&#xff1a; 解析请求体&#xff1a;可以从HTTP请求中提取原始数据&#xff0c;包括文本和二进制数据。配置选项&#xff1a;通过配置项&#xff0c;可以设置请求体的大小限制、编码方式…

【LeetCode-简单题KMP】232. 用栈实现队列

文章目录 题目方法一&#xff1a;用输入栈和输出栈模拟队列 题目 方法一&#xff1a;用输入栈和输出栈模拟队列 只有输出栈为空的时候才能将输入栈的元素补充到输出栈&#xff0c;否则输出栈不为空&#xff0c;如果再从输入栈往输出栈填充元素&#xff0c;就会弄乱队列的先进先…

【SpringMVC】拦截器JSR303的使用

【SpringMVC】拦截器&JSR303的使用 1.1 什么是JSR3031.2 为什么使用JSR3031.3 常用注解1.4 Validated与Valid区别1.5 JSR快速入门1.5.2 配置校验规则# 1.5.3 入门案例二、拦截器2.1 什么是拦截器2.2 拦截器与过滤器2.3 应用场景2.4 拦截器快速入门2.5.拦截器链2.6登录案列权…

接口测试——接口协议抓包分析与mock_L1

目录&#xff1a; 接口测试价值与体系常见的接口协议接口测试用例设计postman基础使用postman实战练习 1.接口测试价值与体系 接口测试概念 接口&#xff1a;不同的系统之间相互连接的部分&#xff0c;是一个传递数据的通道接口测试&#xff1a;检查数据的交换、传递和控制…

设计模式之职责链模式

职责链模式:使多个对象都有机会处理请求&#xff0c;从而避免请求的发送者和接收者之间的耦合关系。将这个对象连成一条链&#xff0c;并沿着这条链传递该请求&#xff0c;直到有一个对象处理它为止。 这里发出这个请求的客户端并不知道这当中的哪一个对象最终处理这个请求&am…

TCP详解之三次握手和四次挥手

TCP详解之三次握手和四次挥手 1. TCP基本认识 1.1 什么是 TCP TCP是面向连接的、可靠的、基于字节流的传输层通信协议。 1.2 TCP协议段格式 我们先来看看TCP首部协议的格式 我们先来介绍一些与本文关联比较大的字段&#xff0c;其他字段不做详细阐述。 序列号&#xff1a…

2023面试知识点一

1、新生代和老年代的比例 默认的&#xff0c;新生代 ( Young ) 与老年代 ( Old ) 的比例的值为 1:2 ( 该值可以通过参数 –XX:NewRatio 来指定 )&#xff0c;即&#xff1a;新生代 ( Young ) 1/3 的堆空间大小。老年代 ( Old ) 2/3 的堆空间大小。其中&#xff0c;新生代 ( …

213. 打家劫舍 II

文章目录 Tag题目来源题目解读解题思路方法一&#xff1a;动态规划 写在最后 Tag 【动态规划】【数组】 题目来源 213. 打家劫舍 II 题目解读 你是一个专业的小偷&#xff0c;现在要偷一排屋子&#xff0c;但是你不能偷相邻的两间屋子&#xff08;这一排房子的首尾是相连的&…

什么是性能调优?方法有哪些?流程是怎样的?

一、性能调优的含义 性能调优通俗来讲就是对计算机硬件、操作系统和应用有相当深入的了解&#xff0c;调节三者之间的关系&#xff0c;实现整个系统&#xff08;包括硬件、操作系统、应用&#xff09;的性能最大化&#xff0c;并能不断的满足现有的业务需求。 在判定软件存在…