【Pytorch】PytorchCPU版或GPU报错异常处理(10X~4090D)

2024-04-21 09:28

本文主要是介绍【Pytorch】PytorchCPU版或GPU报错异常处理(10X~4090D),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Pytorch为CPU版或GPU使用报错异常处理

文章目录

  • Pytorch为CPU版或GPU使用报错异常处理
    • 0.检查阶段
    • 1. 在conda虚拟环境中安装了torch
    • 2.卸载cpuonly
    • 3.从tsinghua清华源安装不完善误为cpu版本
    • 4.用tsinghua清华源安装成cpu错误版本
    • 5.conda中torch/vision/cudatoolkit版本与本机cuda版本不配套
    • 6.总结

最新买的4090d到货啦!开始快乐输出o( ̄▽ ̄)ブ
在进行实验时想把cpu版的yolov5使用gpu来跑,结果出了巨多麻烦!
首先是切换成gpu,把pytorch及yolov5全套都安装完毕后,就只剩最后一步了
打开train.py 搜索找到device,大概在400~500行之间将default参数改为device = “0”,注意加引号,后边代表的是不写就默认用cpu(慢的要死真的还容易炸掉),写0是使用1个gpu,10X的4G也挺难绷,但是跑是没问题,4090的24G相对很棒,但尺寸or参数太大还是会炸,而且会炸出来奇怪的异常,且按下不表。
改完后然后直接运行train.py,在输出阶段如果可以看到显卡型号和GPU,说明已经成功调用GPU了
在这里插入图片描述那运算速度相当快:
在这里插入图片描述
但是!在此之前结果出现了错误,一大堆奇怪的报错

0.检查阶段

查看是否能使用gpu

import torch
torch.device('cpu'), torch.device('cuda'), torch.device('cuda:1') # 分别是访问CPU,访问第0个GPU,访问第1个GPU。第 𝑖 块GPU( 𝑖 从0开始)
print(torch.cuda.device_count()) # 查询可用gpu的数量。
print(torch.cuda.is_available())# 查询gpu是否可用

看torch版本

import torch
print(torch.__version__)

1. 在conda虚拟环境中安装了torch

一般命令都可以正常使用,但是使用cuda的命令torch.cuda.is_available()则输出False。
该问题的根本原因是CUDA环境与Torch版本不匹配,因此最直接的解决方式就是使用官方推荐的版本进行适配。
查看本机安装的cuda版本,在虚拟环境下一定以nvcc -V查到的版本为主

nvcc -V

有些人可能只是cudatoolkit版本对不上,如果运气好,只针对cudatoolkit进行版本匹配即可完成,

2.卸载cpuonly

1.用conda list 看看有没有cpuonly这个包,有的话删掉,这个包是装不上gpu版本的罪魁祸首。
conda uninstall cpuonly
2.装pytorch cudatoolkit(新建一个anaconda环境,或者把环境清空,注意版本号不要写错,清华源不是很智能,一定要加上详细的版本号搭配)

conda install python==3.12
conda install pytorch==2.2.2 cudatoolkit==11.8.0
附注:pip安装方式
pip install torch==2.2.2+cu121 torchvision==0.17.2+cu121 torchaudio==2.2.2+cu121 -f https://download.pytorch.org/whl/torch_stable.html

3.从tsinghua清华源安装不完善误为cpu版本

如果想要新建环境的话直接换源处理
1.可能因conda换源的不完善
下面是完整的国内清华源文件.condarc内容,打开你的电脑里的.condarc文件直接复制就行。
ubuntu 的话命令行 sudo vim ~/.condarc可以直接打开编辑,win10的话一般在C:\Users\用户名下面。

channels:- defaults
show_channel_urls: true
channel_alias: http://mirrors.tuna.tsinghua.edu.cn/anaconda
default_channels:- http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main- http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free- http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r- http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro- http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
custom_channels:conda-forge: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloudmsys2: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloudbioconda: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloudmenpo: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloudpytorch: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloudsimpleitk: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

2. 在conda 里搜寻可以安装的pytorch版本
更新最新版的,选择是pytorch2.2.2,python3.12,cudatoolkit11.8的搭配。

conda search pytorch

3. 选择直接安装这三个包。
注意cudatoolkit版本号可能需要精确到比如11.8才会安装的比较顺利。可以conda search cudatoolkit来查看当前库里能安装的cudatoolkit版本。

conda search cudatoolkit
conda install python==3.12
conda install pytorch==2.2.2 cudatoolkit==11.8

然后编写python代码测试下看看显卡能不能用,命令行里可以先输入python进入代码编写模式。返回Ture的话代表安装gpu版本成功。

import torch
print(torch.cuda.is_available())

4.用tsinghua清华源安装成cpu错误版本

如果发现是CPU,并且在发现前已经执行类似于下载了大量依赖,不想再重新弄的

pip install -r requirements.txt  -i https://pypi.tuna.tsinghua.edu.cn/simple 

把已经安装好的cpu版本手动替换成gpu版本。

1.没有安pytorch的话不论cpugpu首先是下载,执行官方给的建议方式:
Start Locally | PyTorch
2.如果默认是用清华源下载的话可能会推送cpu版本的pytorch
3.我们可以先下载cpu的版本,然后手动替换成gpu版本。
安装完cpu版本后用import torch 实验一下,不报错的话说明cpu版本安装成功,报错的话则不能进行下一步。

import torch

4.去清华镜像下载离线安装包
不报错证明ok,那么conda成功安装完cpu的版本后,去conda清华源找到对应的pytorch gpu版本(cuda版本)
清华大学开源软件镜像站
清华源conda 安装gpu版本的pytorch总是推送cpu版本解决办法
网站资源包比较多,可以用Ctrl+F搜索,找pytorch以及附属包点下载
5.离线安装
下载完成后,激活conda 环境, cd 到下载的文件目录,安装

conda install --offline pytorch-2.10.0-py3.6_cuda10.2_cudnn7.6.5_0.tar.bz2
conda install --offline torchaudio-0.10.0-py36_cu102.tar.bz2
conda install --offline torchvision-0.11.0-py36_cu102.tar.bz2

6.验证检查
conda list,查看是否已经被替换。替换完成就行了,不要在用conda install pytorch torchvision torchaudio cudatoolkit=10.2 指令下载了,因为conda 还是会推送cpu的包,会被替换掉。。。。。。
在这里插入图片描述
换之前,用import torch不报错,但显示无GPU可跑,仔细一看是CPU!根本跑不动一点
在这里插入图片描述
可能的报错情况:pytorch和CUDA版本不一致,不是最新的,直接卡住import torch,第一步就报错(见下方介绍),处理方法为全更新到最新 or 找适配cuda的pytorch版本
在这里插入图片描述
安装最新的后终于能够跑起来,不知道安装什么才匹配的不妨多下载几个试试

在这里插入图片描述
安装的是上面↑这些,失败的是下面↓这些(版本不匹配)
在这里插入图片描述

5.conda中torch/vision/cudatoolkit版本与本机cuda版本不配套

会爆出连import torch都打不开的情况,错误描述:

OSError: 
[WinError 126] 找不到指定的模块。Error loading 
“D:\Anaconda3\envs\MyCode\Lib\site-packages\torch\lib\caffe2_detectron_ops_gpu.dll” 
or one of its dependencies

首先可以考虑的是安装Microsoft Visual C++ Redistributable。
如果依旧未能解决。这个error提示的是找不到caffe2_detectron_ops_gpu.dll,这个文件尾缀前面加了gpu,也许是之前未安装cudatoolkit的缘故。
使用官网给的命令,重新把缺少的cudatoolkit和其他包安装一下。

conda install pytorch torchvision torchaudio cudatoolkit=10.2 -c pytorch

注意安装的时候也是版本对应。

6.总结

通过以上应用基本上能够解决Pytorch因为清华源错误安装成为CPU版本,或者其他原因想换成GPU版本的难题。
也能适用于一些GPU版本下显示无法使用GPU,检验得到false,甚至import torch报错根本进不去检测页面的问题。
换到GPU上用4090d跑是真的迅速又开心!希望大家的烦恼也能顺利解决√

嘛,如果对您有帮助的话就开心的复制吧,整理不易转载请注明qwq!
如果有更好的建议或意见欢迎补充!
我是亓云鹏(亓Qí),努力与大家一同分享算法的快乐!

每博一图(1/1)↓
在这里插入图片描述
Reference:
清华源conda 安装gpu版本的pytorch总是推送cpu版本解决办法

这篇关于【Pytorch】PytorchCPU版或GPU报错异常处理(10X~4090D)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/922730

相关文章

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

AI Toolkit + H100 GPU,一小时内微调最新热门文生图模型 FLUX

上个月,FLUX 席卷了互联网,这并非没有原因。他们声称优于 DALLE 3、Ideogram 和 Stable Diffusion 3 等模型,而这一点已被证明是有依据的。随着越来越多的流行图像生成工具(如 Stable Diffusion Web UI Forge 和 ComyUI)开始支持这些模型,FLUX 在 Stable Diffusion 领域的扩展将会持续下去。 自 FLU

如何用GPU算力卡P100玩黑神话悟空?

精力有限,只记录关键信息,希望未来能够有助于其他人。 文章目录 综述背景评估游戏性能需求显卡需求CPU和内存系统需求主机需求显式需求 实操硬件安装安装操作系统Win11安装驱动修改注册表选择程序使用什么GPU 安装黑神话悟空其他 综述 用P100 + PCIe Gen3.0 + Dell720服务器(32C64G),运行黑神话悟空画质中等流畅运行。 背景 假设有一张P100-

Thymeleaf:生成静态文件及异常处理java.lang.NoClassDefFoundError: ognl/PropertyAccessor

我们需要引入包: <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>org.springframework</groupId><artifactId>sp

深入理解数据库的 4NF:多值依赖与消除数据异常

在数据库设计中, "范式" 是一个常常被提到的重要概念。许多初学者在学习数据库设计时,经常听到第一范式(1NF)、第二范式(2NF)、第三范式(3NF)以及 BCNF(Boyce-Codd范式)。这些范式都旨在通过消除数据冗余和异常来优化数据库结构。然而,当我们谈到 4NF(第四范式)时,事情变得更加复杂。本文将带你深入了解 多值依赖 和 4NF,帮助你在数据库设计中消除更高级别的异常。 什么是

消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法

消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法   消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法 [转载]原地址:http://blog.csdn.net/x605940745/article/details/17911115 消除SDK更新时的“

jenkins 插件执行shell命令时,提示“Command not found”处理方法

首先提示找不到“Command not found,可能我们第一反应是查看目标机器是否已支持该命令,不过如果相信能找到这里来的朋友估计遇到的跟我一样,其实目标机器是没有问题的通过一些远程工具执行shell命令是可以执行。奇怪的就是通过jenkinsSSH插件无法执行,经一番折腾各种搜索发现是jenkins没有加载/etc/profile导致。 【解决办法】: 需要在jenkins调用shell脚

Jenkins 插件 地址证书报错问题解决思路

问题提示摘要: SunCertPathBuilderException: unable to find valid certification path to requested target...... 网上很多的解决方式是更新站点的地址,我这里修改了一个日本的地址(清华镜像也好),其实发现是解决不了上述的报错问题的,其实,最终拉去插件的时候,会提示证书的问题,几经周折找到了其中一遍博文

JVM 常见异常及内存诊断

栈内存溢出 栈内存大小设置:-Xss size 默认除了window以外的所有操作系统默认情况大小为 1MB,window 的默认大小依赖于虚拟机内存。 栈帧过多导致栈内存溢出 下述示例代码,由于递归深度没有限制且没有设置出口,每次方法的调用都会产生一个栈帧导致了创建的栈帧过多,而导致内存溢出(StackOverflowError)。 示例代码: 运行结果: 栈帧过大导致栈内存