机器学习深度学习——非NVIDIA显卡怎么做深度学习(坑点排查)
👨🎓作者简介:一位即将上大四,正专攻机器学习的保研er
🌌上期文章:机器学习&&深度学习——数值稳定性和模型化参数(详细数学推导)
📚订阅专栏:机器学习&&深度学习
希望文章对你们有所帮助
这一部分掉坑真的不知道掉了多少个。我是AMD卡的,我想AMD卡的同志们很多都掉过坑了,也许就在我掉过众多坑里面。网上很多说法是AMD卡做深度学习可以使用RCom,然而我发现几乎没有太多资料,毕竟做深度学习的大多数用的是N卡。emmmm,万一掉坑了都没有人能启发到我,所以当时我就放弃了,接下来给出坑点并且排查,最终给出绝对可行的解决方案。
AMD显卡怎么做深度学习
- 卸载CPU版本的torch
- 卸载方式
- 问题
- 安装GPU版本的torch
- 安装方式
- 问题
- Anaconda配置虚拟环境
- 下载cuda
- 问题
- 最终解决方案
之前的内容中,我都是使用了CPU版本的torch来进行深度学习,在前面的线性模型当然很好跑,因为线性模式确实是比较简单的。但是随着之后的模型越发的复杂,我们很需要GPU来帮助我们实现并行运算,因此我们需要安装GPU版本的torch。
卸载CPU版本的torch
因为听说有了GPU版本的torch,在一些使用的过程中可能会出现冲突,所以我第一下想到的就是卸载CPU版本的torch。卸载的时候还需要把这个torch中所包含的包也一并卸载了。
卸载方式
使用cmd终端卸载,卸载的方式有两种:
1、pip方式卸载:
pip uninstall torch
pip uninstall torchvision
2、conda方式卸载:
conda uninstall pytorch
conda uninstall libtorch
据说是使用了conda方式下载的话就用第二种,pip方式下载的话就用第一种,感觉好像又不是很有道理,总之两个都试过了,也都告诉我卸载成功了。
问题
但是接下来就出现了很奇怪的一幕。我在cmd终端输入如下语句:
pythonimport torchtorch.__version__
最终告诉我的答案里面是不存在torch,那理论上应该是成功了才对。。。然而我去pycharm中执行:
import torchprint(torch.__version__)
额。。。居然给我输出了CPU版本的torch,我还猜测是不是亲爱的pycharm没缓过来。。。无论重启还是关机都显示含有CPU版本的torch。。。原地捣鼓半天,网上好像也没个针对这个具体问题的解决方案,最终放弃卸载。
安装GPU版本的torch
安装方式
进入pytorch官网:
pytorch官网
用上面的conda或者pip语句都是可以的,在终端中运行就好,连cuda版本都给咱们指定好了。
问题
我以为pycharm是出了什么毛病,明明终端显示没有CPU版本的torch了,偏偏pycharm输出了。。。我就以为换个GPU版本的torch应该就没事了,这其实也是瞎捣鼓,最终在pycharm中输出CPU版本的torch,在终端输出GPU版本的torch。
因此在pycharm中跑GPU方式的代码是行不通的。。。
Anaconda配置虚拟环境
既然卸载的方式行不通,我就找别的方法,之前已经安装过了Anaconda,我们靠着这个工具来实现环境的配置。步骤如下:
1、我们可以自行创建虚拟环境:
conda create --name pytorch python=3.9
我们可以通过
conda env list
来查看当前的环境,其中base是本来的环境,pytorch是我们创建的虚拟环境。
2、我们需要激活这个环境,那么接下来下载的东西(包括各种的包、包括GPU版本的torch)都可以下载到这个虚拟环境去,也就是说这个虚拟环境本来就是干净的,不像base环境那样装过CPU版本的torch。
激活的语句为:
avtivate pytorch
再打开当前的环境列表,可以看出pytorch已经被激活:
3、下载GPU版本的torch
将上面的语句进行下载,接下来就可以把torch下载到自己新建的虚拟环境pytorch中去了。
4、在pycharm中配置它。
打开File-Settings-Project:Python-Python Interpreter:
点开Add Local Interpreter,即可选择之前的路径成功切换。
但是此时我还是不能运行相关语句,搜相关资料以后知道是没有cuda,运行语句:
print(torch.cuda.is_available())
最后会返回False,因此我们需要下载cuda。
下载cuda
这个步骤就不细说了,这个下载过程是傻瓜式教程,网上有。
问题
这个问题就比较严重了。。。安装都安装不成,安装了我才知道只有NVIDIA卡是可以下载cuda的,那我的方向再一次断了,而且我很难在原有基础上转变思路。
最终解决方案
接下来就是我最终的解决方案了,租借线上平台。
我是用的autodl平台去租借的,大家可以放心使用(我觉得官网有点话都写的不太清楚,我一直不知道到底只是租一个GPU而已还是啥,因为如果只是租一个GPU我没有cuda照样不行,最终还是搞了点钱去试了一下),点开以后里面有使用文档,使用方法很容易,大家可以放心使用。
相关文章:

机器学习深度学习——非NVIDIA显卡怎么做深度学习(坑点排查)
👨🎓作者简介:一位即将上大四,正专攻机器学习的保研er 🌌上期文章:机器学习&&深度学习——数值稳定性和模型化参数(详细数学推导) 📚订阅专栏:机器…...
2021 Robocom 决赛 第四题
原题链接: PTA | 程序设计类实验辅助教学平台 题面: 在一个名叫刀塔的国家里,有一只猛犸正在到处跑着,希望能够用它的长角抛物技能来撞飞别人。已知刀塔国有 N 座城市,城市之间由 M 条道路互相连接,为了拦…...

线程池-手写线程池Linux C简单版本(生产者-消费者模型)
目录 简介手写线程池线程池结构体分析task_ttask_queue_tthread_pool_t 线程池函数分析thread_pool_createthread_pool_postthread_workerthread_pool_destroywait_all_donethread_pool_free 主函数调用 运行结果 简介 本线程池采用C语言实现 线程池的场景: 当某些…...

05-向量的意义_n维欧式空间
线性代数 什么是向量?究竟为什么引入向量? 为什么线性代数这么重要?从研究一个数拓展到研究一组数 一组数的基本表示方法——向量(Vector) 向量是线性代数研究的基本元素 e.g. 一个数: 666,…...

交通运输安全大数据分析解决方案
当前运输市场竞争激烈,道路运输企业受传统经营观念影响,企业管理者安全意识淡薄,从业人员规范化、流程化的管理水平较低,导致制度规范在落实过程中未能有效监督与管理,执行过程中出现较严重的偏差,其营运车…...
vimrc 配置 (持续跟新中)
vimrc 配置 #显示行号 set nu #自动换行 set autoindent #设置tab键 宽度为四个空格 set tabstop4 set shiftwidth4 set expandtab更多文章,详见我的博客网站...
【集成学习介绍】
1. 引言 在机器学习领域,集成学习(Ensemble Learning)是一种强大的技术,通过将多个弱学习器组合成一个更强大的集成模型,来提升模型的鲁棒性和性能。 2. 集成学习的原理 集成学习的核心思想是“三个臭皮匠ÿ…...

动画制作选择Blender还是Maya
Blender和Maya是两种最广泛使用的 3D 建模和动画应用程序。许多经验丰富的用户表示,Blender 在雕刻工具方面远远领先于 Maya,并且在 3D 建模方面达到了相同的质量水平。对于刚接触动画行业的人来说,您可能会问“我应该使用 Blender 还是 Maya…...

215. 数组中的第K个最大元素
题目链接:力扣 解题思路: 方法一:基于快速排序 因为题目中只需要找到第k大的元素,而快速排序中,每一趟排序都可以确定一个最终元素的位置。 当使用快速排序对数组进行降序排序时,那么如果有一趟排序过程…...

NLP From Scratch: 生成名称与字符级RNN
NLP From Scratch: 生成名称与字符级RNN 这是我们关于“NLP From Scratch”的三个教程中的第二个。 在<cite>第一个教程< / intermediate / char_rnn_classification_tutorial ></cite> 中,我们使用了 RNN 将名称分类为来源语言。 这次ÿ…...

Spring MVC程序开发
目录 1.什么是Spring MVC? 1.1MVC定义 1.2MVC和Spring MVC的关系 2.为什么要学习Spring MVC? 3.怎么学Spring MVC? 3.1Spring MVC的创建和连接 3.1.1创建Spring MVC项目 3.1.2RequestMapping 注解介绍 3.1.3 RequestMapping 是 post 还是 get 请求? …...

医疗知识图谱问答——文本分类解析
前言 Neo4j的数据库构建完成后,现在就是要实现医疗知识的解答功能了。因为是初版,这里的问题解答不会涉及深度学习,目前只是一个条件查询的过程。而这个过程包括对问题的关键词拆解分类,然后提取词语和类型去图数据库查询…...
JS关于多张图片上传显示报错不影响后面图片上传方法
关于多张图片上传或者下载显示报错后会程序会终止执行,从而影响后面图片上传。 解决方法: /*能正常访问的图片*/ const url https://2vimg.hitv.com/100/2308/0109/5359/dqKIZ7d4cnHL/81Vu0c.jpg?x-oss-processimage/format,webp; /*不能正常下载的图…...
MySQL踩坑之sql_mode的用法
目录 定义 报错重现 编辑 原因分析 sql_mode值说明 查看当前sql_mode 设置sql_mode 定义 什么是sql_mode?玩了这么久的MySQL语句...

消息队列总结(4)- RabbitMQ Kafka RocketMQ高性能方案
1.RabbitMQ的高性能解决方案 1.1 发布确认机制 RabbitMQ提供了3种生产者发布确认的模式: 简单模式(Simple Mode):生产者发送消息后,等待服务器确认消息已经被接收。这种模式下,生产者发送消息后会阻塞&am…...

websocket服务端大报文发送连接自动断开分析
概述 当前springboot版本:2.7.4 使用依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dependency>现象概述: 客户端和服务端已经有心跳…...

想写几个上位机,是选择学c#还是 c++ qt呢?
C#基本也就上位机开发开发,另外做做日常用的小工具很方便。 结合PLC,以太网做上位机,这个基本上控制这块都比较有需求。 另外我们用C#也做一些工具的二次开发,感觉还行。 C用qt框架其实学习起来可能稍微复杂些,但是…...

JavaScript 简单实现观察者模式和发布-订阅模式
JavaScript 简单实现观察者模式和发布-订阅模式 1. 观察者模式1.1 什么是观察者模式1.2 代码实现 2. 发布-订阅模式2.1 什么是发布-订阅模式2.2 代码实现2.2.1 基础版2.2.2 取消订阅2.2.3 订阅一次 1. 观察者模式 1.1 什么是观察者模式 概念:观察者模式定义对象间…...

java集成短信服务 测试版 qq邮箱简单思路
java集成短信服务 注册一个帐号 使用的是容联云,百度搜一下官网 用手机注册一个帐号就行,免费体验不需要认证 注册后会有八块钱送,可以使用免费的给自己设置三个固定手机号发送短信,不需要认证。 此页面的 三个信息需要在代码中…...

#P0994. [NOIP2004普及组] 花生采摘
题目描述 鲁宾逊先生有一只宠物猴,名叫多多。这天,他们两个正沿着乡间小路散步,突然发现路边的告示牌上贴着一张小小的纸条:“欢迎免费品尝我种的花生!――熊字”。 鲁宾逊先生和多多都很开心,因为花生正…...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...

stm32G473的flash模式是单bank还是双bank?
今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

python打卡day49
知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果:工厂方法模式、单例模式和生成器模式
简介 在我的 QT/C 开发工作中,合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式:工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...

高考志愿填报管理系统---开发介绍
高考志愿填报管理系统是一款专为教育机构、学校和教师设计的学生信息管理和志愿填报辅助平台。系统基于Django框架开发,采用现代化的Web技术,为教育工作者提供高效、安全、便捷的学生管理解决方案。 ## 📋 系统概述 ### 🎯 系统定…...