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

机器学习深度学习——非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. 集成学习的原理 集成学习的核心思想是“三个臭皮匠&#xff…...

动画制作选择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> 中&#xff0c;我们使用了 RNN 将名称分类为来源语言。 这次&#xff…...

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 请求&#xff1f; ​…...

医疗知识图谱问答——文本分类解析

前言 Neo4j的数据库构建完成后&#xff0c;现在就是要实现医疗知识的解答功能了。因为是初版&#xff0c;这里的问题解答不会涉及深度学习&#xff0c;目前只是一个条件查询的过程。而这个过程包括对问题的关键词拆解分类&#xff0c;然后提取词语和类型去图数据库查询&#xf…...

JS关于多张图片上传显示报错不影响后面图片上传方法

关于多张图片上传或者下载显示报错后会程序会终止执行&#xff0c;从而影响后面图片上传。 解决方法&#xff1a; /*能正常访问的图片*/ 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种生产者发布确认的模式&#xff1a; 简单模式&#xff08;Simple Mode&#xff09;&#xff1a;生产者发送消息后&#xff0c;等待服务器确认消息已经被接收。这种模式下&#xff0c;生产者发送消息后会阻塞&am…...

websocket服务端大报文发送连接自动断开分析

概述 当前springboot版本&#xff1a;2.7.4 使用依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId> </dependency>现象概述&#xff1a; 客户端和服务端已经有心跳…...

想写几个上位机,是选择学c#还是 c++ qt呢?

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

JavaScript 简单实现观察者模式和发布-订阅模式

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

java集成短信服务 测试版 qq邮箱简单思路

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

#P0994. [NOIP2004普及组] 花生采摘

题目描述 鲁宾逊先生有一只宠物猴&#xff0c;名叫多多。这天&#xff0c;他们两个正沿着乡间小路散步&#xff0c;突然发现路边的告示牌上贴着一张小小的纸条&#xff1a;“欢迎免费品尝我种的花生&#xff01;――熊字”。 鲁宾逊先生和多多都很开心&#xff0c;因为花生正…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中&#xff0c;手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力&#xff0c;既支持点击、长按、拖拽等基础单一手势的精细控制&#xff0c;也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

Python如何给视频添加音频和字幕

在Python中&#xff0c;给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加&#xff0c;包括必要的代码示例和详细解释。 环境准备 在开始之前&#xff0c;需要安装以下Python库&#xff1a;…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

关于 WASM:1. WASM 基础原理

一、WASM 简介 1.1 WebAssembly 是什么&#xff1f; WebAssembly&#xff08;WASM&#xff09; 是一种能在现代浏览器中高效运行的二进制指令格式&#xff0c;它不是传统的编程语言&#xff0c;而是一种 低级字节码格式&#xff0c;可由高级语言&#xff08;如 C、C、Rust&am…...

使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度

文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...

【JavaSE】多线程基础学习笔记

多线程基础 -线程相关概念 程序&#xff08;Program&#xff09; 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序&#xff0c;比如我们使用QQ&#xff0c;就启动了一个进程&#xff0c;操作系统就会为该进程分配内存…...

django blank 与 null的区别

1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是&#xff0c;要注意以下几点&#xff1a; Django的表单验证与null无关&#xff1a;null参数控制的是数据库层面字段是否可以为NULL&#xff0c;而blank参数控制的是Django表单验证时字…...

掌握 HTTP 请求:理解 cURL GET 语法

cURL 是一个强大的命令行工具&#xff0c;用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中&#xff0c;cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...