当前位置: 首页 > news >正文

RTX NVIDIA 3090卡配置对应pytorch,CUDA版本,NVIDIA驱动过程及问题整理

买了两块3090卡闲置很长时间了,之前tf 1.12.0版本用习惯了不想转工具。这段时间闲下来转了之后有些环境不适配,在雷神帮助下安装完毕,虽然出了点怪东西,整体还好。

原环境CUDA为11.4 其他配置如下

之前conda install的pytorch实为cpu版本,查看gpu等信息时会显示

最开始是想着先把pytorch直接替换为CUDA 11.4版本直接安装即可,在pytorch官网上目前为2.4.1版本,CUDA最低11.8,torch 2.0版本以上的最低也是11.7,安装方式为:

conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia

可尝试将11.8改为11.4(未尝试,到这里就尝试用11.8或则12)或找寻前续对应版本,LLM等相关方向建议直接换最近CUDA 12.4。 11.4在装时测试机找不到资源,11.3安装后寻找不到GPU资源。

到目前为止就需要考虑先升级CUDA

Section 1 CUDA 升级(11.4 -> 11.8)

先查看下系统信息

cat /etc/os-release

lsb_release -a

CUDA 官网直接进入后选择即可(地址),本机打算升级到CUDA 11.8(地址)

在安装 CUDA 11.8 时,debrunfile 是两种不同的安装方式:

  1. deb

    • 适用于基于 Debian 的系统(如 Ubuntu)。
    • 这种安装方式可以通过包管理器轻松安装和管理,方便更新和卸载。
    • 使用命令如 sudo dpkg -i <package.deb> 来安装。
  2. runfile

    • 适用于更广泛的 Linux 发行版。
    • 这种方式提供了更大的灵活性,可以选择安装哪些组件(例如只安装驱动或工具包)。
    • 需要在命令行中执行,例如 sudo sh cuda_11.8.0_XXX_linux.run

通常,如果你使用的是 Ubuntu 等 Debian 系统,推荐使用 deb 方式;如果你需要更多的控制或使用其他 Linux 发行版,可以选择 runfile

这边安装时选择的deb (local)

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin


sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600


wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda-repo-ubuntu2004-11-8-local_11.8.0-520.61.05-1_amd64.deb


sudo dpkg -i cuda-repo-ubuntu2004-11-8-local_11.8.0-520.61.05-1_amd64.deb


sudo cp /var/cuda-repo-ubuntu2004-11-8-local/cuda-*-keyring.gpg /usr/share/keyrings/


sudo apt-get update


sudo apt-get -y install cuda

照着安装即可。

安完可能有报错:

可参照下文尝试是否能够解决解决apt-get安装中的E: Sub-process /usr/bin/dpkg returned an error code (1)问题 - 焦距 - 博客园

把这个进行之后,尝试

sudo apt-get update
sudo apt-get -y install cuda

完了之后因为CUDA重装,需要重启电脑,直接reboot

有概率可能就没问题了,但是本机安装时重启后nvidia-smi后还是报错:

NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running. 


表明驱动未安装或则启动。

Section2 解决NVIDIA驱动问题

参考文章如下:

NVIDIA驱动失效简单解决方案:NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver. - nannandbk - 博客园

nvidia-smi出不来,已经显示报错了,那么就直接进行第二步:

使用nvcc -V检查驱动和cuda。

显示找不到nvcc,可以进目录查看下是否有装

cd /usr/local/cuda/bin

这个表明安装过的,那就是路径没对

在bashrc中最后添加以下两行

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

结束后source ~/.bashrc即可。非管理员的话在自己账户下操作即可,需要sudo权限。自己的电脑建议都添加上,root的bashrc位置为/root/。

完了之后nvcc -V

这个时候就已经完成。按之前博客文章给出的教程继续,查看已安装驱动的版本信息

ls /usr/src | grep nvidia

这个nvidia后面的版本记下,而后接着输入以下命令:

sudo apt-get install dkms

sudo dkms install -m nvidia -v 520.61.05

等待安装完成

正常情况操作完之后能够恢复,但本机安装完之后,接着遇到怪东西:

所以直接按照之前教程后续步骤接着安装驱动。期间会更新一些包,会耗时一段时间。

在 Ubuntu 中,prime-select query 命令显示 on-demand 表示系统当前使用的是 NVIDIA的 on-demand 模式。这种模式下,系统会在需要时自动切换到 NVIDIA GPU,而在其他时间则使用集成显卡 (通常是 Intel GPU),以节省电池电量和减少热量产生
具体说明:
On-demand 模式: 只有在运行需要 GPU 的程序时,NVIDIA GPU 才会被激活。这有助于提高能效。
NVIDIA 模式: 系统始终使用 NVIDIA GPU,适合需要持续高性能的场合。
Intel 模式: 只使用集成的 Intel GPU,不使用 NVIDIA GPU,适合低功耗需求。
如果希望在运行需要 GPU 的程序时使用 NVIDIA GPU,on-demand 模式是一个不错的选择

本机安装时直接sudo prime-select nvidia切N卡,然后因为更新驱动,随后reboot

装完之后又来了怪东西,CUDA版本变成12.2了。

Section 3 Pytorch对应安装

网上目前暂时没有发现太多RTX 3090和CUDA 12是否适配的说法。

打算直接将pytorch官网环境选择指定为12.1(考虑CUDA同12大版本可兼容)。

conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch-c nvidia

本机安装时又出怪东西

这个一直转,后面挂了个screen过了很久回来看还在转,最后切pip安装发现的速度只有10多kb/s,添加了清华镜像试了段时间也不出来。考虑直接换pip install了。

这边需要查看下python和pip位置

这里解释一下,因为这里显示的虚拟环境时conda自己建的,设置的python版本为3.8.x,pip对应的应该是系统自带的python,安装时先试了pip install 来安装pytorch,安装后import torch找不到module(这些环境我也很小白),后面直接切conda环境下的pip:

这个涉及较多依赖,需要较长时间,补个清华镜像也有可能超时,

再敲一遍安装重新安就好。

完成之后测试一下

目前看来正常,后续是否出问题待验证...

相关文章:

  • MATLAB基本语句
  • 【最基础最直观的排序 —— 冒泡排序算法】
  • 基础漏洞——SSRF
  • 【FasAPI】使用FastAPI来实现一个基于RBAC(基于角色的访问控制)的用户权限控制系统
  • 【算法精解】逆序对受限的方案数
  • 银河麒麟桌面操作系统如何添加WPS字体
  • ControllerAdvice定义统一异常处理
  • 【力扣 | SQL题 | 每日三题】力扣175, 176, 181
  • CloudMusic:免费听歌
  • python功能测试
  • Tableau|一入门
  • error -- unsupported GNU version gcc later than 10 are not supported;(gcc、g++)
  • 网络编程(6)——发送的时序性,全双工通信
  • 一个 Java 语言简化处理 PDF 的框架,提供了一套简单易用的 API 接口,满足多样化需求又能简化开发流程的处理方案(附教程)
  • 【AD那些事 10 】焊盘如何修改为自己想要的形状!!!!! 焊盘设计规则如何更改??????
  • (三)从jvm层面了解线程的启动和停止
  • 2017届校招提前批面试回顾
  • CSS 提示工具(Tooltip)
  • extjs4学习之配置
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • React-redux的原理以及使用
  • SpringBoot 实战 (三) | 配置文件详解
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • Transformer-XL: Unleashing the Potential of Attention Models
  • 基于webpack 的 vue 多页架构
  • 记一次用 NodeJs 实现模拟登录的思路
  • 批量截取pdf文件
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 小李飞刀:SQL题目刷起来!
  • ​HTTP与HTTPS:网络通信的安全卫士
  • ​虚拟化系列介绍(十)
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • (03)光刻——半导体电路的绘制
  • (1)STL算法之遍历容器
  • (2)STM32单片机上位机
  • (21)起落架/可伸缩相机支架
  • (arch)linux 转换文件编码格式
  • (C#)一个最简单的链表类
  • (MATLAB)第五章-矩阵运算
  • (vue)页面文件上传获取:action地址
  • (补充)IDEA项目结构
  • (二)c52学习之旅-简单了解单片机
  • (二)linux使用docker容器运行mysql
  • (二)斐波那契Fabonacci函数
  • (附源码)php投票系统 毕业设计 121500
  • (六)c52学习之旅-独立按键
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • (转)Scala的“=”符号简介
  • *算法训练(leetcode)第四十天 | 647. 回文子串、516. 最长回文子序列
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .NET CORE 3.1 集成JWT鉴权和授权2