深度学习GPU的环境太乱?从头配置环境:理解+实操

深度学习CUDA环境太乱?环境配置:理解+实操

  • 小白关于环境配置的一点理解
  • 0.装环境之前你需要知道有关CUDA的事
    • 进一步理解(optional)
    • 如何查看你当前的GPU型号?
  • 1. 从驱动重装GPU环境
  • 2. 装对应的pytorch包
  • 3. mmsegmention等安装

【注:从1开始进入正题】

小白关于环境配置的一点理解

linux下所有的命令行都是工具,类似软件,安装在某个位置,并把位置添加到环境变量里面。通过which XX就能查看到该位置在哪

nvidia-smi是一个管理监控GPU的工具

nvcc是运行时,编译驱动GPU的工具,安装cuda时一定会自带这个,所以检查这个就知道有没有CUDA

  • 两个不一样,后者输出的是runtime API,这个是运行时要调用的所以torch必须和这个配合。前者是驱动支持的最高版本的cuda,并不是实际安装的cuda

下载——(安装的位置)及配置其对应环境变量

  • 首先要知道在哪里安装:用find [路径] [匹配条件]去寻找。

  • 其次看环境变量里面有没有路径:

    • echo $PATH

    • 以及,环境变量都在当下shell的脚本里。比如~/.bashrc.通过vim XX就能看到

      • 如何添加环境变量,修改,这里有:Ubuntu 20.04安装CUDA & CUDNN 手把手带你撸_ubuntu20.04 cuda安装-CSDN博客

装环境要注意,因为依赖,有的顺序不能变。

0.装环境之前你需要知道有关CUDA的事

查看官网安装教程,我们首先发现,要区分以下几个:

OS:你使用GPU所用的操作系统

NVIDIA hardware:GPU物理意义上的显卡

NVIDIA CUDA:加速GPU显卡使用的(用c++写的)库

和他的驱动CUDA driver:使用CUDA需要的编译驱动.即nvcc

(下载CUDA包把这两个都包括了)

所以,要为深度学习配置环境,要安装CUDA及其驱动,cuDNN,pytorch(版本要对应才能成功)

进一步理解(optional)

打开官网给出的表格Support Matrix :: NVIDIA cuDNN Documentation,最右边的Maxwell, pascal等属于GPU架构。你可以直接搜索自己的GPU型号+architecture就能找到是什么架构。比如GTX 4090就是Ada架构。这些架构是时间顺序推出的,可以说是随着工艺发展nm越来越小,所以性能越来越好(类似以前的古董机和现在的智能手机,当然是首选现在的)。Ada架构算是最新的。一个系列的产品可能会随着架构的更新不断推出新的。

RTX是一种平台platform,集成了显卡工作可能需要的一些低层技术,比如渲染图形的光流追踪,AI计算的加速功能。(只需要调用对应API即可)

Geforce是一个产品系列的名字。主打面向游戏的,普通消费级显卡。能搜到该系列产品的网站,看到都有什么产品。并列的有Quadro,Tesla。前后两个是专业级显卡产品。还有面向数据中心系列,面向边缘硬件端计算的。

  • 但是产品都有交叉功能。比如Geforce 4090也能跑深度学习,quadro系列专门面向计算,但是价格贵。对有的人来说,可能4090更划算。
  • 常听的Tesla是数据中心产品中的一个系列,面向工作站

从右往左第二列:CUDA compute capability,,所有显卡,不同版本除了性能不同,功能也有区别,所以挑选时

  • 首先找到符合你性能的

  • 然后看你需要的功能或技术该GPU上有没有。比如你AI计算,对数据精度有要求,32还是64bit的计算,对应的GPU版本上有没有。(当然我现在还没到这个程度)

下一列:GPU的驱动,不同cuDNN库需要不同版本驱动。

下一列:我们知道c++编译的时候,有动态链接和静态链接两种(虽然我还不知道这两种有什么应用场景需求)

下一列:CUDA Toolllkit:开发CUDA,更好使用GPU的环境,能让用户自己编程(类似java也有toolkit?开发时用到的必要、辅助工具等)。安装驱动时的一个工具。(比如选择下载文档?重新下载驱动等)

第一列:cuDNN库,同样是开发CUDA时,用到的库(类似python写时各种import)

  • CUDA11和12系列支持的cnDNN的库版本也不一样。

如何查看你当前的GPU型号?

lspci | grep -i vga命令输出的:

VGA compatible controller指的是计算机显示图形的一种软件/方式。

NVIDIA Corporation Device 2684 (rev a1),最后的2684通过网站能查出设备型号,每个设备有唯一型号Linux-ubuntu系统查看显卡型号、显卡信息详解、显卡天梯图_ubuntu查看显卡-CSDN博客

发现GPU驱动装的乱七八糟的,网上各种环境变量路径我也没有,决定重装一次。

1. 从驱动重装GPU环境

根据官网教程Installation Guide :: NVIDIA cuDNN Documentation

按照1.1.1下载驱动的run文件,运行

  • 然后会有提示,可能报错说还有X server调用了nvidia-kernel。尝试了网上几种关闭X server的方法:xorg - How to close X Server, to avoid errors while updating nVidia driver? - Unix & Linux Stack Exchange,cuda - How to solve ‘ERROR: An NVIDIA kernel module ‘nvidia-uvm’ appears to already be loaded in your kernel’? - Ask Ubuntu不是很有效。

  • 又根据提示重启。还是不行。

  • 想起还是原来有一驱动,可能是这个还在运行?搜索如何卸载驱动。这篇帖子很管用Ubuntu 卸载 Nvidia 驱动和安装最新驱动_ubuntu卸载显卡驱动并重装-CSDN博客

根据1.1.2安装toolkit,根据官网教程链接走,前面的大概浏览一下在说什么。

  • 主要从2. Pre-install开始。装完了,配合这篇文章配置环境变量【ubuntu环境配置】超详细ubuntu20.04/22.04安装nvidia驱动/CUDA/cudnn_ubuntu20安装nvidia显卡驱动-CSDN博客

1.2根据教程安装cuDNN

1.3跟教程走,你下载什么类型的安装包,就找到对应的教程去做

  • 遇到的坑:sudo apt-get install libcudnn8=8.x.x.x-1+cudaX.Y时,可能会出现找不到包的提示。此时参考这篇文:E: 未找到“libcudnn8”的“8.x.x.x-1+cudaX.Y”版本_e: 未找到“libcudnn8”的“8.9.2.26-1+cuda11.7”版本-CSDN博客。
    • 刚刚apt update会根据新加入的cuda 的key,更新对应的包,并显示下载的对应的路径
    • 🍅apt-get update到底是什么原理,这一步会做什么呢

1.4跟着教程测试

  • 可能遇到没有"freeImage.h"的报错,是因为没装这个包,这篇文章解决编译mnistCUDNN时出错:fatal error: FreeImage.h: No such file or directory-CSDN博客

⛏可能用到的命令行工具:

Liunx使用apt安装本地deb软件包_apt安装deb包-CSDN博客

测试每个是否安装成功:

  • 驱动nvcc:
    • nvcc --version
    • nvidia-smi 显示驱动版本和刚才安装的一致

注:

  • nvidia-smi和nvcc显示的版本可能不一样。看网上的说法后者是实际安装的版本号,前者是可支持的最高驱动版本。
  • 最关键的是11和12区别大,如果是11.1, 11.5什么的应该区别不大(🍅大家有懂的可以解惑一下)

2. 装对应的pytorch包

也跟着官方教程来Start Locally | PyTorch

因为cuda最主要是11和12两个大区别,所以根据你安装的选择就行,不用纠结细分。

注:

如果你使用的是conda环境,一定要注意你当前python环境中,torch使用的是pip下载的还是conda下载的。我按照官网用conda命令下载后,发现还是torch.cuda.is_available()获取不到GPU

我发现我用两种方式都下载过,conda list查看当前环境的包,torch是cpu版本,还有一个pytorch。

实验一下python, import torch显示torch显示获取不到,所以用的是pip下载的。

最后用pip也下载了新的torch才可以

🍅我很好奇conda是如何处理这两种分别下载的torch的?挖个坑。有懂的小伙伴解惑一下

⛏查看当前环境:python3 -m torch.utils.collect_env

3. mmsegmention等安装

根据教程mmsegmentation/docs/en/get_started.md at main · open-mmlab/mmsegmentation (github.com),主要是mmcv的安装,直接用mim装最新版就完了

插个空,有问题以后再补充。

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

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

相关文章

2024美赛数学建模B题思路分析 - 搜索潜水器

1 赛题 问题B:搜索潜水器 总部位于希腊的小型海上巡航潜艇(MCMS)公司,制造能够将人类运送到海洋最深处的潜水器。潜水器被移动到该位置,并不受主船的束缚。MCMS现在希望用他们的潜水器带游客在爱奥尼亚海底探险&…

oracle 19c上安装样例数据库

样例schema的分类 HR: Human Resources OE: Order Entry PM: Product Media IX: Information Exchange SH: Sales History BI: Business Intelligence 安装样例数据库 1:HR的安装,通过dbca时候 2:HR的安装,安装完数据库后&#…

基于Go-Kit的Golang整洁架构实践

如何用Golang实现简洁架构?本文介绍了基于Go-Kit实现简洁架构的尝试,通过示例介绍了简洁架构的具体实现。原文: Why is Go-Kit Perfect For Clean Architecture in Golang? 简介 Go是整洁架构(Clean Architecture)的完美选择。整洁架构本身只是一种方法…

MySQL数据库基础第一篇(SQL通用语法与分类)

文章目录 一、SQL通用语法二、SQL分类三、DDL语句四、DML语句1.案例代码2.读出结果 五、DQL语句1.DQL-基本查询2.DQL-条件查询3.DQL-聚合函数4.DQL-分组查询5.DQL-排序查询6.DQL-分页查询7.DQL语句-执行顺序1.案例代码2.读出结果 六、DCL语句1.DCL-管理用户2.DCL-权限控制1.案例…

Kubernetes实战(二十三)-k8s event监控利器kube-eventer对接企微告警

1 背景 监控是保障系统稳定性的重要组成部分,在Kubernetes开源生态中,资源类的监控工具与组件监控比较多。 cAdvisor:kubelet内置的cAdvisor,监控容器资源,如容器cpu、内存;Kube-state-metrics&#xff1…

Node.js EventEmitter详解

文章目录 一、EventEmitter介绍二、EventEmitter方法三、EventEmitter类方法四、EventEmitter事件五、EventEmitter的error 事件六、node介绍七、相关链接 一、EventEmitter介绍 Node.js 的 EventEmitter 是一个核心模块,用于处理事件驱动的编程。它提供了一个事件…

微信小程序for循环嵌套

<view wx:for"{{arrayA}}" wx:key"item">数组嵌套的数组 order_info<view wx:for"{{item.order_info}}" wx:key"*this" wx:for-item"items"></view> </view>wx:for-item“pro” pro 自定义循环体参…

Maya------创建多边形工具

配合导入图像使用 Tab键可以删除一个点&#xff01; 模型不能超过4边面&#xff01;多切割工具进行连接&#xff01; 15.maya常用命令5.创建多边形工具 反转 双显 挤出_哔哩哔哩_bilibili

kubecolor让kubelet更好看

kubecolor让kubelet更好看 默认情况下kubectl输出都是白色,在列特别多的情况下比较难分清楚具体是哪个对应哪个. 发现kubecolor可以完美解决这样的问题. 1. 安装kubecolor mkdir kubecolor cd kubecolor wget https://github.com/kubecolor/kubecolor/releases/download/v0.…

vue2+html2pdf下载PDF,PDF分页切割

问题&#xff1a; PDF下载下来后&#xff0c;文档内容被暴力分割。 解决方案&#xff1a; HTML <!-- 打印按钮 --> <el-button type"primary" size"small" class"el-icon-download right_btn" click"downloadPDF">PDF&…

three.js CSS3DRenderer、CSS3DObject渲染HTML标签

有空的老铁关注一下我的抖音&#xff1a; 效果&#xff1a; <template><div><el-container><el-main><div class"box-card-left"><div id"threejs" style"border: 1px solid red;position: relative;"><…

CSS3的新盒子,选择器等

新增的选择器&#xff1a; 属性选择器&#xff1a; 结构伪类选择选器&#xff1a; nth较为重要&#xff1a;但公式中的字母必须是n 区别&#xff1a; nth-child&#xff1a; 认为父类下的都是儿子&#xff0c;此时就需要有对应的需要&#xff0c;如下&#xff0c;此时即使排1&…

SQL Server 函数参考手册(SQL Server 高级函数)

目录 SQL Server CAST() 函数 SQL Server COALESCE() 函数 SQL Server CONVERT() 函数 SQL Server CURRENT_USER 函数 SQL Server IIF() 函数 SQL Server ISNULL() 函数 SQL Server ISNUMERIC() 函数 SQL Server NULLIF() 函数 SQL Server SESSION_USER 函数 SQL Se…

【Bugs】Jmeter报错:NoSuchMethodError: org.apache.jmeter.samplers.

报错情况 Jmeter版本&#xff1a;5.4.3 报错场景&#xff1a;在线程组中添加了jpgc - PerfMon Metrics Collector性能监控组件后出现报错。 Jmeter中无法运行测试&#xff0c;cmd命令行中出现以下报错。 cmd报错详细内容&#xff1a; Uncaught Exception java.lang.NoSuchMe…

cocoapi的 rle 解码使用

cocoapi 是目前mask数据记录的一个比较好的解决方案, 网上有很多相关的使用资料.如COCO数据集介绍, 这里感谢大家的贡献. cocoapi 数据本身是一组json描述结构, cocoapi 项目是解析和生成json数据结构, json有个不能嵌套的弊端, 所以一个json文件往往比较大. cocoapi核心部分…

废品上门回收小程序搭建全过程

随着人们对环境保护意识的不断增强&#xff0c;废品回收成为了一项重要的社会活动。为了方便废品回收的顾客和回收者之间的联系&#xff0c;废品上门回收小程序成为了一种流行的解决方案。然而&#xff0c;如何选择一款合适的废品上门回收小程序搭建平台呢&#xff1f;下面将为…

数据表的增删改查(上)

这一章的主角是数据表&#xff0c;但因为上篇文章还有一些数据库的知识没解决&#xff0c;因此先写了数据库。 选择数据库 在数据库创建后&#xff0c;不会将当前创建的数据库作为后续操作的默认数据库&#xff0c;如果需要在数据库中创建数据表并插入数据&#xff0c;需要先…

二层设备与三层设备的区别--总结

1、计算机网络 学过计算机网络的人都知道&#xff0c;网络是分层次的。执行流程与邮局非常类似。例如从省寄信到某个乡村&#xff0c;邮局顺序一次是省邮局、市邮局、县邮局、镇邮局。一级一级的&#xff0c;最终送到乡村。iso给出网络标准是七层&#xff0c;而实际网络则是四层…

leetcode189.轮转数组|超简单易于理解方法

题目 https://leetcode.cn/problems/rotate-array/description/https://leetcode.cn/problems/rotate-array/description/ 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输…

springboot完成一个线上图片存放地址+实现前后端上传图片+回显

1.路径 注意路径 2.代码&#xff1a;&#xff08;那个imagePath没什么用&#xff0c;懒的删了&#xff09;&#xff0c;注意你的本地文件夹要有图片&#xff0c;才可以在线上地址中打开查看 package com.xxx.common.config;import org.springframework.beans.factory.annotat…