草庐IT

从0开始搭建深度学习环境-Pytorch-GPU

Winkyyyyyy 2023-11-02 原文

文章目录

环境配置

Anaconda-Python3.9 —— 开源的 Python 发行版本

  • Anaconda和Python的关系
    Anaconda则是一个打包的集合,里面预装好了conda、某个版本的python、众多packages、科学计算工具等等,所以也称为Python的一种发行版。
  • 包含Python3.9, Conda

Anaconda的安装

  • 从官网直接下载,一切按照默认流程指示安装,除了下图所示步骤(选中Add Anaconda to my PATH environment variable就不用自己添加路径了),可以不装在C盘,但要确保整个安装目录里没有空格全是英文
  • 官网网址:https://www.anaconda.com/products/individual

Conda——包含在Anaconda中

Conda用途

  • conda是包及其依赖项和环境的管理工具
  • 适用于包含Python在内的多种语言
  • 快速安装、运行和升级包及其依赖项
  • 在计算机中便捷地创建、保存、加载和切换环境

如果你需要的包要求不同版本的Python,你无需切换到不同的环境,因为conda同样是一个环境管理器。仅需要几条命令,你可以创建一个完全独立的环境来运行不同的Python版本,同时继续在你常规的环境中使用你常用的Python版本。
——conda官方网站

CUDA和CUDNN——GPU复杂计算架构和DNN加速库

对CUDN和CUDNN的理解

  • 什么是CUDA——使GPU能解决复杂计算问题的架构
    CUDA(ComputeUnified Device Architecture),是显卡厂商NVIDIA推出的运算平台。 CUDA是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。
  • 什么是CUDNN——用于DNN的GPU加速库
    NVIDIA cuDNN是用于深度神经网络的GPU加速库。它强调性能、易用性和低内存开销。NVIDIA cuDNN可以集成到更高级别的机器学习框架中,如谷歌的Tensorflow、加州大学伯克利分校的流行caffe软件。简单的插入式设计可以让开发人员专注于设计和实现神经网络模型,而不是简单调整性能,同时还可以在GPU上实现高性能现代并行计算。
  • CUDA与CUDNN的关系
    CUDA看作是一个工作台,上面配有很多工具,如锤子、螺丝刀等。CUDNN是基于CUDA的深度学习GPU加速库,有了它才能在GPU上完成深度学习的计算。它就相当于工作的工具,比如它就是个扳手。但是CUDA这个工作台买来的时候,并没有送扳手。想要在CUDA上运行深度神经网络,就要安装cuDNN,就像你想要拧个螺帽就要把扳手买回来。这样才能使GPU进行深度神经网络的工作,工作速度相较CPU快很多。

作者:Sunglam
链接:https://www.jianshu.com/p/622f47f94784
来源:简书

CUDA的安装

Pytorch 版本CUDA 环境
0.4.1、1.2.0、1.4.0、1.5.0(1)、1.6.0、1.7.0(1)9.2
1.2.0、1.1.0、1.0.0(1)10.0
1.4.0、1.5.0(1)、1.6.0、1.7.0(1)10.1
1.5.0(1)、1.6.0、1.7.0(1)、1.8.0(1)、1.9.0、1.10.010.2
1.7.0(1)11.0
1.8.0(1)、1.9.0、1.10.011.1
1.8.0(1)、1.9.0、1.10.011.3

CUDNN的安装

  • 根据CUDA的版本型号,下载相应的CUDNN的版本型号,型号对应见CUDNN下载官网
    CUDNN下载官网:https://developer.nvidia.com/rdp/cudnn-archive
  • 解压下载的CUDNN安装包,找到安装CUDA的根目录——C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2(版本号)

Pytorch深度学习框架(模型库 / 积木)

虚拟环境的创建与激活

-用Conda 创建并激活一个Python虚拟环境,虚拟环境命名为Pytorch
Win+R 启动 CMD, 创建一个名为pytorch的python虚拟环境并激活它,用作后续安装Pytorch用,该环境的python版本为3.9(与你安装过的Python要一致,这里使用对应的Anaconda版本带的Python):

conda create –n pytorch python=3.9
activate pytorch
  • 什么是虚拟环境
    它是一个虚拟化,从电脑独立开辟出来的环境。通俗的来讲,虚拟环境就是借助虚拟机docker来把一部分内容独立出来,我们把这部分独立出来的东西称作“容器”,在这个容器中,我们可以只安装我们需要的依赖包,各个容器之间互相隔离,互不影响。

作者:悦悦的小屋
链接:https://www.cnblogs.com/yuehouse/p/10239195.html
来源:博客园

  • 为什么需要Pytorch虚拟环境(也可推及其他虚拟环境的意义)
    在安装某版本PyTorch库的过程中,会自动替换其所有依赖库(比如numpy等科学计算基础库)至相应匹配的版本。而这些基础库又是其他某些高级库(比如Tensorflow、PaddlePaddle)的重要依赖,它们之间也有密切的版本对应关系;又由于那些高级库与PyTorch无关,所以在安装PyTorch的时候不会去自动替换掉那些高级库的版本。因此,自动换掉的基础库很有可能与其他高级库产生不匹配的冲突,导致原先功能无法正常使用,也就是原先的运行环境被污染了。为了避免这种污染的发生,最好新建一个环境,单独安装PyTorch及其依赖的所有库,互不干扰,避免毁坏原先辛辛苦苦配好的运行环境。

作者:乐山乐水
链接:https://www.zhihu.com/question/479904242/answer/2061803100
来源:知乎

对Pytorch的理解

  • Pytorch是一种深度学习网络的框架
  • 对深度学习网络框架的理解
    深度学习网络的框架包括Pytorch,Tensorflow等。
    深度学习框架,包括Pytorch,Tensorflow,简单来说就是库,编程时需要import用到的库。
    作一个简单的比喻,一套深度学习框架就是这个品牌的一套积木,各个组件就是某个模型或算法的一部分,你可以自己设计如何使用积木去堆砌符合你数据集的积木。好处是你不必重复造轮子,模型也就是积木,是给你的,你可以直接组装,但不同的组装方式,也就是不同的数据集则取决于你。
    深度学习框架的出现降低了入门的门槛,你不需要从复杂的神经网络开始编代码,你可以依据需要,使用已有的模型,模型的参数你自己训练得到,你也可以在已有模型的基础上增加自己的layer,或者是在顶端选择自己需要的分类器。当然也正因如此,没有什么框架是完美的,就像一套积木里可能没有你需要的那一种积木,所以不同的框架适用的领域不完全一致。

作者:王弗兰克
链接:https://www.zhihu.com/question/53465308/answer/136653522
来源:知乎

Pytorch安装

直接从官网安装,按照下图所示的配置选择即可:
官网链接:https://pytorch.org/get-started/locally/
配置图:

这里选择了Windows系统下Conda方式安装,匹配之前安装的CUDA版本10.2。

常用库的安装

  • 可以在anaconda命令行中安装,也可以在cmd中用pip一起安装

pip和conda

  • 什么是pip
    pip是用于安装和管理软件包的包管理器,可在cmd中用pip命令安装各种包,在Python 2.7.9及后续版本的Python安装中默认安装pip,无需单独安装。
  • pip和conda的区别
    pip:
    不一定会展示所需其他依赖包。
    安装包时或许会直接忽略依赖项而安装,仅在结果中提示错误。
    conda:
    列出所需其他依赖包。
    安装包时自动安装其依赖项。
    可以便捷地在包的不同版本中自由切换。
    → 环境管理
    pip:维护多个环境难度较大。
    conda:比较方便地在不同环境之间进行切换,环境管理较为简单。
    → 对系统自带Python的影响
    pip:在系统自带Python中包的**更新/回退版本/卸载将影响其他程序。
    conda:不会影响系统自带Python。
    → 适用语言
    pip:仅适用于Python。
    conda:适用于多种语言,包括Python, R, Ruby, Lua, Scala, Java, JavaScript, C/C++, FORTRAN。

作者:Raxxie
链接:https://www.jianshu.com/p/62f155eb6ac5
来源:简书

  • pip和conda安装方式的区别
    两者都可以用于python包的安装,但两者并不冲突,在使用过程中,pip搜索源的包数量比conda更多,往往会出现conda找不到的包但可以使用pip安装

作者:python技巧(数据分析及可视化)
链接:https://ask.csdn.net/questions/7410907
来源:CSDN

conda安装方式

0.任意目录下新建一个txt文件,这里以命名为1.txt为例,在里面写入所有需要安装的库的名字。

numpy
matplotlib
scipy
Pillow
opencv

1.打开anaconda的命令行(Anaconda Powershell Prompt),切换到txt文件的位置,比如我存在桌面,则切换代码如下:

cd C:\Users\LENOVO\Desktop

2.执行1.txt

conda install --file=1.txt

pip安装方式

0.任意目录下新建一个txt文件,这里以命名为1.txt为例,在里面写入所有需要安装的库的名字。
1.在1.txt存储位置右键选择OpenCMD(如果不知道怎么设置让右键出现OpenCMD选项可以看我的另一篇文章:Win10双击exe文件cmd执行后闪退解决办法和右键出现OpenCMD选项设置)
2.执行1.txt

pip install -r 1.txt

Pycharm——Python IDE

IDE和代码编辑器的理解

  • IDE(Integrated Development Environment 集成开发环境)
    IDE 是开发者创建程序时使用的软件包。它通过简单的用户界面集成多个高度关联的组件,从而最大化程序员的生产效率。本质上,IDE 是一种改进代码创建、测试和 debug 流程的工具,它使这些工作更加简单。
    IDE 使用的工具包括:
    文本编辑器
    编译器和/或解释器
    装配自动化工具(assembly automation tool)
    调试器(debugger)

  • 代码编辑器(code editor)
    代码编辑器是一个能够突出显示语法和安排代码版式的文本编辑器。高级代码编辑器可以开发和修改代码。

  • IDE 和代码编辑器的共同点
    存储和重新打开脚本
    运行代码
    debug
    突出显示语法

  • IDE 和代码编辑器的不同点

  • 举例
    Python自带的IDLE就是一个Python的代码编辑器,而Pycharm就是一个很流行的Python IDE

  • 社区版和专业版的区别

    0.专业版是收费的,Professional教育版是免费,社区版是免费的 Free Community
    1.教育版是教学式的,完整的引用了社区版所有的功能,有一个教学功能,更适合学生。老师可以用他创建教学,学生可以通过他完成教学作业。集成了一个python的课程学习平台,可以有题目或者新手指导学习。需要足够的英语来支撑。或者使用汉化也是可以的,汉化存在缺点,python提供新的课程以后,你的汉化也要更新。
    2.社区版,就是功能不全的专业版,是用来解决工作问题的。除了一些功能没有以外(例如:Web开发,Python Web框架,Python的探查,远程开发能力,数据库和SQL支持),其他的功能和专业版是一样的。
    3.专业版,功能丰富。对开发者来说十分棒,是一款十分专业的开发工具。
    注:对于我(一个刚开始使用深度学习环境的小白)来说,专业版和社区版的最大区别就是能不能远程链接实验室服务器,使用服务器上的显卡来跑程序,所以建议如果需要自身电脑GPU资源不够的同学使用专业版。

专业版Pycharm安装教程

可以参考这个链接,亲测有效:
https://www.cnblogs.com/codeguide/p/15924438.html

Pycharm项目使用Pytorch虚拟环境中的Python解释器

  • 常见错误的开始——选择默认Python解释器
    如果一开始新建项目的时候,使用默认的解释器(Python Interpreter),一般是定位在C盘的本地的解释器,是系统里面安装的Python作为解释器,类似下图:

    那之前在conda里配置好的pytorch虚拟环境就没用了。
  • 报错
    在运行项目的时候还是会发现各种报错,说你没有安装torch还有无法使用CUDA之类的,以下是我当时遇到的报错(如果你也遇到了累类似问题可以参考我的解决办法):
    ①torch报错
    torch未安装,这个我一开始给安上了忘记截图错误了,当时我还没有意识到问题,只疑心为啥要重新安,不是刚安装完么(痛苦面具;
    ②CUDA报错
    具体报错是:AssertionError: Torch not compiled with CUDA enabled;
    含义是:在编译torch的时候,CUDA并没有起作用
    这时我意识到事情不太对劲,我不是都安装了一遍么?
  • 解决办法
    在文件-设置中选择之前隔离的虚拟环境中的解释器,入下图所示,Anaconda3-2021.11\python.exe是Anaconda里面附带安装的Python解释器;
    而Anaconda3-2021.11\envs\pytorch\python.exe才是你之前用conda命令创建和激活的名为pytorch的虚拟环境中的解释器,所以选择这个解释器,之前因为缺这个环境那个环境的问题就不存在了。

感受分享

  • 为什么写这个记录
    其实自己也是综合网上的很多教程,加上自己的试错经验来写的,一直在不断的改,希望给自己也给后来人一个能够没有什么问题的环境配置教程,但是每个人遇到的问题总是各不相同,这次我用这个配置的环境把我的代码跑起来了,应该不会再进行修改了,这就是我能跑出代码的环境配置了,我是一个正在做毕设的小白,希望从点滴记录也汇报那些用点滴记录照亮后来者前路的CSDNer。
  • 总体感受
    网上的很多教程只写了过程,却很少有解释清楚为什么这么做,这到底是在干啥,如果想搞清楚每一步到底是在做什么有什么意义,比如这个虚拟环境的create,如果我在配置的时候没有明白这是建立了一个虚拟环境和虚拟环境的意义,只是把命令输入进去了,我只会把他当成安装torch的一个命令步骤,在后边遇到问题的时候也无法想到是虚拟环境隔离解释器的原因。想要明白每一步做什么,还是需要多去搜索几次,多去看看大家遇到的问题,但我觉得这个时间花的是值得的,要不然你之后碰见问题的时候再去探究你当初做了什么,就更费劲儿了。
  • 版本匹配
    还有一小点经验就是,要特别注重有相关性的环境配置之间的版本匹配性,有的环境一旦安上就很难卸载干净,这是我之前在安装通信工程专业软件包时经常遇到的问题,所以尽量保证一次就安装上匹配正确的版本,不过很庆幸,这次环境配置中,即使安装错了版本,uninstall的过程也很顺利和干净还能很快的重新install新版本,但注意点总是好的,因为我以前遇到过最后只能换电脑的情况。

有关从0开始搭建深度学习环境-Pytorch-GPU的更多相关文章

  1. ruby-on-rails - 在 Rails 开发环境中为 .ogv 文件设置 Mime 类型 - 2

    我正在玩HTML5视频并且在ERB中有以下片段:mp4视频从在我的开发环境中运行的服务器很好地流式传输到chrome。然而firefox显示带有海报图像的视频播放器,但带有一个大X。问题似乎是mongrel不确定ogv扩展的mime类型,并且只返回text/plain,如curl所示:$curl-Ihttp://0.0.0.0:3000/pr6.ogvHTTP/1.1200OKConnection:closeDate:Mon,19Apr201012:33:50GMTLast-Modified:Sun,18Apr201012:46:07GMTContent-Type:text/plain

  2. Vscode+Cmake配置并运行opencv环境(Windows和Ubuntu大同小异) - 2

    之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m

  3. Observability:从零开始创建 Java 微服务并监控它 (二) - 2

    这篇文章是继上一篇文章“Observability:从零开始创建Java微服务并监控它(一)”的续篇。在上一篇文章中,我们讲述了如何创建一个Javaweb应用,并使用Filebeat来收集应用所生成的日志。在今天的文章中,我来详述如何收集应用的指标,使用APM来监控应用并监督web服务的在线情况。源码可以在地址 https://github.com/liu-xiao-guo/java_observability 进行下载。摄入指标指标被视为可以随时更改的时间点值。当前请求的数量可以改变任何毫秒。你可能有1000个请求的峰值,然后一切都回到一个请求。这也意味着这些指标可能不准确,你还想提取最小/

  4. LC滤波器设计学习笔记(一)滤波电路入门 - 2

    目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称

  5. CAN协议的学习与理解 - 2

    最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总

  6. 深度学习部署:Windows安装pycocotools报错解决方法 - 2

    深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal

  7. ruby-on-rails - ruby gem如何在rails环境下工作 - 2

    我试图在rails中了解rubygems是如何变得可以自动使用的,而不是在使用required的文件中gem? 最佳答案 这是通过bundler/setup完成的:http://bundler.io/v1.3/bundler_setup.html.它在您的config/boot.rb文件中是必需的。简而言之,它首先将环境变量设置为指向您的Gemfile:ENV['BUNDLE_GEMFILE']||=File.expand_path('../../Gemfile',__FILE__)然后它通过要求bundler/setup将所有ge

  8. ruby - 我正在学习编程并选择了 Ruby。我应该升级到 Ruby 1.9 吗? - 2

    我完全不是程序员,正在学习使用Ruby和Rails框架进行编程。我目前正在使用Ruby1.8.7和Rails3.0.3,但我想知道我是否应该升级到Ruby1.9,因为我真的没有任何升级的“遗留”成本。缺点是什么?我是否会遇到与普通gem的兼容性问题,或者甚至其他我不太了解甚至无法预料的问题? 最佳答案 你应该升级。不要坚持从1.8.7开始。如果您发现不支持1.9.2的gem,请避免使用它们(因为它们很可能不被维护)。如果您对gem是否兼容1.9.2有任何疑问,您可以在以下位置查看:http://www.railsplugins.or

  9. ruby-on-rails - 我需要一个真正的 UNIX RoR 开发环境 - 2

    从一开始,我就是一个Windows高手。我从MS-DOS开始。我安装了Windows2.1以及此后的所有Windows。现在,我家里有10台不同的Windows机器在运行,从Windows7Ultimate到各种版本的WindowsServer。我还没有完成Windows8,也不想去那里。我在服务器和各种软件方面都有UNIX经验,但它并不是我的首选环境。但是,我想我正在转换。我试图假装使用Cygwin和MSYS在Windows下运行UNIX。我的目的是搭建一个开发环境。两者都让我失望了。我花了比开发更多的时间来解决一系列技术问题。这是NotAcceptable。到目前为止,我的Ruby

  10. ruby-on-rails - Ruby/Rails 中的夏令时开始和结束日期 - 2

    我正在开发一个Rails应用程序,我需要在其中找到给定特定偏移量或时区的夏令时开始和结束日期。我基本上在我的数据库中保存了从用户浏览器接收到的时区偏移量(“+3”,“-5”),我想在它出现时修改它由于夏令时的变化。我知道Time实例变量有dst?和isdst方法,如果存储在它们中的日期在夏令时与否。>Time.new.isdst=>true但是使用它来查找夏令时的开始和结束日期会占用太多资源,而且我还必须为我拥有的每个时区偏移量执行此操作。我想知道更好的方法。 最佳答案 好的,基于你所说的和@dhouty'sanswer:您希望能够

随机推荐