深度学习环境配置(pytorch)_mx330显卡能玩跑深度学习程序吗-程序员宅基地

技术标签: python  深度学习  pytorch  


title: 深度学习环境配置(pytorch)
date: 2023-04-22 11:26:28


深度学习显卡与CUDA

CPU(Central Processing Unit) vs GPU(Graohics Processing Unit)

如下图所示,CPU中有大量的控制电路和缓存,计算能力(ALU)只是CPU中很小的一部分;而在GPU中有很多算术逻辑处理单元用于运算,只有很少的缓存。因此我们可以将图片放到GPU的处理单元进行运算,加速深度学习网络的训练。

CPU vs GPU

下面简单介绍一下深度学习用到的显卡:

  • 显卡,主要用于在屏幕上显示图像,用于与视频、图像处理相关的任务
  • 主流的显卡分为独显(独立显卡)和核显(核心显卡),独显一般较大,性能更加强,深度学习中常用。核显,比较小,跟CPU合在一起,性能较低,但完全可以胜任日常工作
  • 在深度学习中使用的显卡一般都是NVIDIA的显卡,一般不用amd的显卡做深度学习
  • 有了CUDA,我们就可以使用NVIDIA显卡了。像pytorch,tensorflow这种深度学习库,可以通过调用CUDA这个库,把相关数据发送给GPU进行运算,以加速深度学习网络的训练
    请添加图片描述

Windows下判断有无NVIDIA GPU:
检查任务管理器,如果GPU中带有NVIDIA字眼,说明有NVIDIA GPU
请添加图片描述

安装Anaconda

在配置深度学习环境的过程中,我们并不直接从python官网下载安装,更多的是安装Anaconda这个软件,那么Anaconda用什么作用呢?

我们安装好Anaconda后,直接就有了一个python的环境,并且可以使用conda install 包名命令。此外,anaconda的虚拟环境功能是我们选择它的一个重要原因,我们可以利用anaconda在计算机上创建多个虚拟环境,类似于一个个的虚拟机,它们互不干扰。当我们经常需要用到不同版本的python解释器/库时,我们可以在不同的虚拟环境中安装不同版本的解释器/库,当我们需要用到某个版本时切换一下虚拟环境即可,而不必反复卸载重装。

安装:

  1. 到anaconda官网下载安装包:https://www.anaconda.com/
  2. 也可以下载距今一两年左右的历史版本,比较稳定(https://repo.anaconda.com/archive/)。 注意安装anaconda后我们可以给不同的虚拟环境配置不同版本的python解释器,但python的版本小于等于安装的anaconda的python版本
  3. 如果下载很慢的话可以右键赋值地址,粘贴到迅雷上下载
  4. 安装路径最好全英文
  5. 安装完成后,在开始菜单中找到anaconda,打开它的图形化界面。如果在environment中有base,说明安装成功
    请添加图片描述

请添加图片描述

创建虚拟环境

什么是虚拟环境?打个比方,虚拟环境相当于一个工作室,它有序地管理这不同的包和库这些工具,当我们要做一个项目时就需要一个工作室。那为什么需要虚拟环境呢,一个直接的原因,例如我们一个项目要用pytorch开发,而另一个要用tensorflow开发,这样,我们可以创建两个虚拟环境,在里面分别安装pytorch和tensorflow,两个虚拟环境中的包和库不会互相冲突

为了创建虚拟环境,首相我们要为它取一个名字,这个名字最好有意义,方便我们以后看到它就知道它是做什么的。打开anaconda的命令行:
请添加图片描述

  • 使用conda creat指令创建虚拟新的虚拟环境
    conda create -n 虚拟环境的名字 python=版本

    请添加图片描述

    在创建虚拟环境的过程中会下载一些包,它会问你是否继续,选择y。接下来等待环境创建完毕即可。新创建的虚拟环境位于ananconda安装目录的envs文件夹下。
    请添加图片描述

  • 使用conda env list可以查看目前有哪些虚拟环境

  • 虚拟环境创建好之后,使用conda activate 虚拟环境名切换虚拟环境,然后可以用conda list命令查看当前这歌虚拟环境下有哪些包

  • 如果在创建虚拟环境时,下载包的速度很慢,可以使用conda create -n 虚拟环境的名字 python=版本 -c 镜像地址命令添加镜像加速

    镜像名 用于创建虚拟环境的地址
    清华镜像 https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
    北京外国语大学镜像 https://mirrors.bfsu.edu.cn/anaconda/pkgs/main
    阿里巴巴镜像 https://mirrors.aliyun.com/anaconda/pkgs/main
  • 删除虚拟环境:conda remove -n 虚拟环境名 --all

补充:conda的通道与镜像地址

当我们使用conda install xxx或者conda creat -n xxx命令时,就会从一个叫做配置文件的地方去下载一些包,通道(channel)就在配置文件中,其实就相当于下载地址。当我们安装anaconda之后,就有一个默认的下载地址defaults,它是anaconda服务器的地址。当conda想要下载一些包,它就会去配置文件里面找有哪些下载地址,然后从这些地址去下载需要的内容。

使用conda config --get或者conda config --show可用查看配置文件中有哪些通道

但是defaults的下载地址在国外的服务器上,当我们的配置文件中只有defaults这个通道时,(在国内)使用conda下载一些包的时候就会很慢。于是我们可用通过在使用的命令后面添加-c 通道地址来告诉conda从指定的地址(国内的镜像地址)里面去找想要的包,例如conda install xxx -c xxx,但是这个镜像地址只会对当前这一条指令生效。

我们也可以在配置文件里面添加一些镜像地址,当配置文件里面有多个地址是,conda会优先使用最新添加的通道地址。

  • 持久添加通道:conda config --add channels 通道地址
  • 删除通道:conda config --remove channels 通道地址

添加/删除后可以通过conda config --get来查看

GPU与CUDA准备工作

前面我们已经创建好了虚拟环境,但在安装pytorch包之前,我们还需要进行一些准备工作。进入pytorch官网,点击install后我们可以看到一些选择,其中一项是选择CUDA的版本,这一部分主要介绍如何配置CUDA和选择CUDA的版本。

请添加图片描述

整个CUDA涉及到三个方面的内容:硬件显卡(算力)、显卡驱动(cuda driver version)、cuda runtime version(上图中要选择的内容)。一定要让它们三个之间互相匹配,pytorch的GPU版本才能够运用显卡。
请添加图片描述

显卡是一个硬件,需要有一个驱动才能够被我们计算机识别出来,在安装驱动的时候,会随着驱动安装一个叫做cuda driver的东西,cuda是可以让显卡进行并行运算的一个平台,当我们的计算机想利用显卡做一些并行运算的时候,它就可以通过cuda driver去操作显卡。但是对于pytorch或者一些其它软件来说,还得有一个cuda runtime才能去调用cuda driver里面的一些东西,进而去调用显卡去做一些加速运算。为了使上述三者能够协调工作,它们之间的版本需要满足:

  1. cuda runtime version ≤ cuda driver version (如果cuda runtime的版本较高的话,可能会增加新功能,当它调用cuda runtime时,可能会没有相应的功能)
  2. cuda runtime version支持显卡对应的算力

了解上述三个的关系后,我们需要进行如下工作:

  1. 确定自己显卡的算力
  • 首先通过驱动软件或者任务管理器确定自己的显卡型号 (NVIDIA GeForce MX350)
    请添加图片描述

  • google搜索cuda,点进Wikipedia后往下翻可以看到一张表格,找到上面显卡型号对应的算力(这个网站里面输入显卡型号也可以查询)(6.1)
    请添加图片描述

  1. 确定自己可选择的cuda runtime version
    根据下图确定cuda runtime version (8.0-12.0都可以)
    请添加图片描述
  1. 进入NVIDIA官网根据自己的显卡型号安装显卡驱动最新版本
    请添加图片描述
  1. 查看自己的cuda driver version
    打开命令行窗口,输入nvidia-smi (11.8)
    请添加图片描述
  1. 最终确定适用的cuda runtime version,确保cuda driver version ≥ cuda runtime version。(可以选择小于自己cuda driver version的最高版本,这里我们选择11.7)

安装pytorch

安装pytorch需要安装pytorch,torchvison,torchaudio三个包

利用conda安装pytorch:

  1. 进入pytorch官网,点击install,根据自己的情况进行选择后,复制最后一行的指令

    请添加图片描述

  2. 打开anaconda的命令行,用conda activate xxx切换到要安装pytorch的虚拟环境

  3. 执行第1步复制好的指令,会显示需要下载的一些包,我们先检查这些包的版本是否正确后,输入y回车后继续执行
    请添加图片描述

    主要检查pytorch这一项,后面的py3.9表示适用于python3.9,cuda11.7是之前选择的cuda版本,cudnn是神经网络可以利用gpu加速的包(很多教程会要你单独安装cudnn,其实并不需要,pytorch现在已经将它集成进来了)

    由于pytorch的通道的服务器在国外,可能会出现下载速度非常慢的情况,可以ctrl+c关掉当前下载,在添加镜像源后重新进行下载(将之前命令中的-c pytorch改成-c + 镜像地址

    镜像名 镜像地址
    清华镜像 https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/win-64/
    北京外国语大学镜像 https://mirrors.bfsu.edu.cn/anaconda/cloud/pytorch/win-64/
    阿里巴巴镜像 https://mirrors.aliyun.com/anaconda/cloud/pytorch/win-64
    南京大学镜像 https://mirrors.nju.edu.cn/pub/anaconda/cloud/pytorch/win-64/

验证pytorch是否安装成功

  1. 打开anaconda命令行窗口,输入conda activate xxx激活安装pytorch的虚拟环境

  2. 输入conda list,看有没有pytorch或者torch

  3. 输入python,进入python解释器

  4. 输入import torch

  5. 输入torch.cuda.is_available(),如果显示True,就说明pytorch安装成功

安装PyCharm并进行配置

  1. 下载PyCharm(https://www.jetbrains.com/pycharm/):下载社区版即可,学生也可以免费申请专业版

  2. 安装PyCharm:安装路径中最好不要有中文字符,在安装选项中按下图勾选

    请添加图片描述

  3. 配置合适的python解释器
    我们的python项目,要运行起来就需要一个python解释器,在pycharm中新建项目时,它会我们先配置一个python解释器。接下来介绍一下如何配置python解释器。

    打开PyCharm,点击New Project新建项目

    请添加图片描述

    如果选择创建新的环境,它就需要重新下载一下包和库,所以我们一般选择使用之前已经配置好的虚拟环境

    请添加图片描述

    点击①下拉找到虚拟环境,再点击create即可

    请添加图片描述

    如果点击①没有找到需要的环境,那么点击②,之后选择Conda Environment,它会自动检测我们之前创建虚拟环境

    请添加图片描述

    可以发现这里只有我们自己创建的虚拟环境,也就是envs底下的虚拟环境。但是我们在安装anaconda的时候有一个base虚拟环境,它位于我们的安装目录底下如果想添加base虚拟环境,PyCharm又没有检测到的话,我们可以按照下面步骤添加。

    首先确定你的虚拟环境位于什么地方(base在安装目录底下,自己创建的环境在安装目录的envs文件夹底下),点击右边的按钮,找到anaconda的安装目录,下拉找到python.exe选中即可(如果要添加自己创建的虚拟环境,就选envs文件夹下面的对应环境中的python.exe)

    请添加图片描述

    请添加图片描述

给下载的项目设置合适的虚拟环境

在上一部分已经介绍了在pycharm中新建一个项目如何选择虚拟环境,但是我们有的时候并不是新建项目,而是从网上下载一个项目再用pycharm打开它,这一部分就来介绍一下我们拿到这些项目代码或文件夹,怎么用pycharm打开它并进行合适的配置。

以github上的项目为例
请添加图片描述

  1. 首先下载项目。用git clone或者下载压缩包后解压。

  2. 打开PyCharm,找到项目位置并打开
    请添加图片描述

    如果打开pycharm是下面的界面的话就按找下图步骤选择项目
    请添加图片描述

  3. 有的项目因为有一个叫requirements.txt的文件,它里面写了这个项目中需要用到哪些包,我们在用pycharm打开这个项目时会跳出一个弹窗,问我们是否根据requirements.txt文件创建虚拟环境。但一般情况下我们都不按照这种方式创建虚拟环境,选择cancel即可。
    请添加图片描述

  4. 点击File->Settings->Project->Python Interpreter,选择想要的python解释器后点击OK
    请添加图片描述

  5. 打开requirements.txt,它会提示还有哪些包需要安装,点击安装即可
    请添加图片描述

    如果我们的项目没有requirements.txt文件,我们可以先直接点击运行,它缺什么包就会报错,然后直接根据报错的信息用命令行安装相应的包


参考:最详细的 Windows 下 PyTorch 入门深度学习环境安装与配置 CPU GPU 版

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_57003521/article/details/130333131

智能推荐

ABAP替换字符串中的千分位字符_替换千分位符号-程序员宅基地

文章浏览阅读1.4k次。处理逻辑:abap小数点有两种:逗号(,)跟点号(.),千分位字符也分为这两种,本方法只为去掉千分位字符1、查找点号跟逗号的个数2、若点号个数大于1且逗号个数也大于1,则该数字为错误类型数字,退出程序3、若点号个数大于1,则用空格替换到字符串中的所有点号,然后去空格4、若逗号个数大于1,则用空格替换掉字符串中的所有逗号,然后去空格5、若点号个数 = 逗号个数 = 1:_替换千分位符号

java事件监听器_java监听器-程序员宅基地

文章浏览阅读1w次,点赞22次,收藏172次。1.动作事件监听器动作事件(ActionEvent)监听器是Swing中比较常用的事件监听器,很组件的动作都会使用它监听,如按钮单击,下表描述了动作事件监听器的接口与事件源。事件名称 事件源 监听接口 添加或删除相应类型监听器的方法 ActionEvent JButton、JList、JTextField等 ActionListener addAct..._java监听器

OpenLayers基础教程——要素的编辑_openlayers 选中编辑-程序员宅基地

文章浏览阅读1.9k次,点赞3次,收藏12次。1、前言在OpenLayers中,要素的编辑主要使用ol.interaction.Select和ol.interaction.Modify配合实现,下面开始介绍。2、编辑要素编辑功能的实现很简答,ol.interaction.Select负责选择要素,ol.interaction.Modify对被选择的要素进行编辑,代码如下:<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head> _openlayers 选中编辑

Android Material Design控件使用(二)_android 使用 material desingn ui 控件-程序员宅基地

文章浏览阅读790次,点赞3次,收藏2次。Android Material Design控件使用(二)_android 使用 material desingn ui 控件

servlet 异常处理_Servlet异常和错误处理示例教程-程序员宅基地

文章浏览阅读4.5k次,点赞3次,收藏4次。servlet异常处理Today we will look into Servlet Exception and Error Handling. Sometime back I wrote a post about Exception Handling in Java but when it comes to web application, we need more than normal ex..._servletexception

elementUI中复选框checkbox的使用_elementui checkbox-程序员宅基地

文章浏览阅读8.8k次,点赞6次,收藏8次。elementUI中复选框checkbox的使用<template> <div style="padding:20px;"> <el-card> <el-checkbox v-model="checked">备选项</el-checkbox> <div>{{ checked }}</div> </el-card> <el-card style="marg_elementui checkbox

随便推点

Openstack 从云硬盘(卷)中创建虚拟机_openstack volume create-程序员宅基地

文章浏览阅读1.8k次。Openstack 从云硬盘(卷)中创建虚拟机_openstack volume create

redis入门(三)_redis slot open-程序员宅基地

文章浏览阅读6.4k次。文章目录@[toc]redis入门(三)目录前言事务原理Lua脚本安装脚本命令EVALEVALSHAlua和redis互操作SCRIPT EXISTSSCRIPT FLUSHSCRIPT KILL脚本复制集群搭建工具redis-trib.rbredis官方集群搭建集群横向扩展故障转移redis管理参考文档redis入门(三)目录redis入门(一)redis入门(二)redis入门(三)..._redis slot open

idea生成SpringBoot项目端口号的修改_idea如何设置8080端口-程序员宅基地

文章浏览阅读2.4k次。idea生成SpringBoot项目端口号的修改第一次使用idea,在生成SpringBoot项目的时候,提示端口8080被占用,这个时候有两个办法:1、修改端口号(推荐)①如果是.yml配置文件,添加server:port:8888,格式和下图相同,需要注意的一点是,server必须和spring同列,否则无效②如果是properties文件,配置文件中添加 server.port=88..._idea如何设置8080端口

编程语言和操作系统是什么关系?编程语言如何被计算机执行的?驱动程序的理解?_操作系统和编程语言的关系-程序员宅基地

文章浏览阅读2.2k次。我们平常所提到的计算机的内存指的是动态内存(即DRAM),动态内存中所谓的“动态”,指的是当我们将数据写入DRAM后,经过一段时间,数据会丢失,因此需要一个额外设电路进行内存刷新操作。但时间一长,代表1的电容会放电,代表0的电容会吸收电荷,这就是数据丢失的原因。我们都知道,中间层是为了提供抽象转换而存在的,而这套叫做操作系统的中间层,定义了一套规则,使得后续的可执行程序能够更容易的被运行起来,而且能更容易的利用各种硬件(显示,键盘等等),能够调用一些库来消除不同的程序间重复的运行逻辑。_操作系统和编程语言的关系

ACProtect2.0脱壳-程序员宅基地

文章浏览阅读378次。这上以前加入黑手安全网上做的教程,也搬过来吧目标程序:红盟(内部版)TNT社工辅助.exe所加的壳:ACProtect 2.00 - RISCO Software Inc.首先忽略所有异常,隐藏下od脱壳步骤:1.程序附加(程序附加后会停在系统的领空)代码:7C92120F C3 RETN7C921210 8BFF MOV EDI,EDI7C921212 > CC INT3..._acprotect 教程

下垂控制实现混合储能功率分配控制,下垂电流均衡控制,母线电压补偿_蓄电池下垂控制-程序员宅基地

文章浏览阅读174次。混合储能功率分配,下垂控制,功率均衡,母线电压补偿_蓄电池下垂控制