title: 深度学习环境配置(pytorch)
date: 2023-04-22 11:26:28
CPU(Central Processing Unit) vs GPU(Graohics Processing Unit)
如下图所示,CPU中有大量的控制电路和缓存,计算能力(ALU)只是CPU中很小的一部分;而在GPU中有很多算术逻辑处理单元用于运算,只有很少的缓存。因此我们可以将图片放到GPU的处理单元进行运算,加速深度学习网络的训练。
下面简单介绍一下深度学习用到的显卡:
Windows下判断有无NVIDIA GPU:
检查任务管理器,如果GPU中带有NVIDIA字眼,说明有NVIDIA GPU
在配置深度学习环境的过程中,我们并不直接从python官网下载安装,更多的是安装Anaconda这个软件,那么Anaconda用什么作用呢?
我们安装好Anaconda后,直接就有了一个python的环境,并且可以使用conda install 包名
命令。此外,anaconda的虚拟环境功能是我们选择它的一个重要原因,我们可以利用anaconda在计算机上创建多个虚拟环境,类似于一个个的虚拟机,它们互不干扰。当我们经常需要用到不同版本的python解释器/库时,我们可以在不同的虚拟环境中安装不同版本的解释器/库,当我们需要用到某个版本时切换一下虚拟环境即可,而不必反复卸载重装。
安装:
什么是虚拟环境?打个比方,虚拟环境相当于一个工作室,它有序地管理这不同的包和库这些工具,当我们要做一个项目时就需要一个工作室。那为什么需要虚拟环境呢,一个直接的原因,例如我们一个项目要用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
来查看
前面我们已经创建好了虚拟环境,但在安装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里面的一些东西,进而去调用显卡去做一些加速运算。为了使上述三者能够协调工作,它们之间的版本需要满足:
- cuda runtime version ≤ cuda driver version (如果cuda runtime的版本较高的话,可能会增加新功能,当它调用cuda runtime时,可能会没有相应的功能)
- cuda runtime version支持显卡对应的算力
了解上述三个的关系后,我们需要进行如下工作:
- 确定自己显卡的算力
首先通过驱动软件或者任务管理器确定自己的显卡型号 (NVIDIA GeForce MX350)
google搜索cuda,点进Wikipedia后往下翻可以看到一张表格,找到上面显卡型号对应的算力(这个网站里面输入显卡型号也可以查询)(6.1)
- 确定自己可选择的cuda runtime version
根据下图确定cuda runtime version (8.0-12.0都可以)
- 进入NVIDIA官网根据自己的显卡型号安装显卡驱动最新版本
- 查看自己的cuda driver version
打开命令行窗口,输入nvidia-smi
(11.8)
- 最终确定适用的cuda runtime version,确保cuda driver version ≥ cuda runtime version。(可以选择小于自己cuda driver version的最高版本,这里我们选择11.7)
安装pytorch需要安装pytorch,torchvison,torchaudio三个包
利用conda安装pytorch:
进入pytorch官网,点击install,根据自己的情况进行选择后,复制最后一行的指令
打开anaconda的命令行,用conda activate xxx
切换到要安装pytorch的虚拟环境
执行第1步复制好的指令,会显示需要下载的一些包,我们先检查这些包的版本是否正确后,输入y回车后继续执行
主要检查pytorch这一项,后面的py3.9表示适用于python3.9,cuda11.7是之前选择的cuda版本,cudnn是神经网络可以利用gpu加速的包(很多教程会要你单独安装cudnn,其实并不需要,pytorch现在已经将它集成进来了)
由于pytorch的通道的服务器在国外,可能会出现下载速度非常慢的情况,可以
ctrl+c
关掉当前下载,在添加镜像源后重新进行下载(将之前命令中的-c pytorch
改成-c + 镜像地址
)
打开anaconda命令行窗口,输入conda activate xxx
激活安装pytorch的虚拟环境
输入conda list
,看有没有pytorch或者torch
输入python
,进入python解释器
输入import torch
输入torch.cuda.is_available()
,如果显示True,就说明pytorch安装成功
下载PyCharm(https://www.jetbrains.com/pycharm/):下载社区版即可,学生也可以免费申请专业版
安装PyCharm:安装路径中最好不要有中文字符,在安装选项中按下图勾选
配置合适的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上的项目为例
首先下载项目。用git clone
或者下载压缩包后解压。
打开PyCharm,找到项目位置并打开
如果打开pycharm是下面的界面的话就按找下图步骤选择项目
有的项目因为有一个叫requirements.txt的文件,它里面写了这个项目中需要用到哪些包,我们在用pycharm打开这个项目时会跳出一个弹窗,问我们是否根据requirements.txt文件创建虚拟环境。但一般情况下我们都不按照这种方式创建虚拟环境,选择cancel即可。
点击File->Settings->Project->Python Interpreter,选择想要的python解释器后点击OK
打开requirements.txt,它会提示还有哪些包需要安装,点击安装即可
如果我们的项目没有requirements.txt文件,我们可以先直接点击运行,它缺什么包就会报错,然后直接根据报错的信息用命令行安装相应的包
文章浏览阅读1.4k次。处理逻辑:abap小数点有两种:逗号(,)跟点号(.),千分位字符也分为这两种,本方法只为去掉千分位字符1、查找点号跟逗号的个数2、若点号个数大于1且逗号个数也大于1,则该数字为错误类型数字,退出程序3、若点号个数大于1,则用空格替换到字符串中的所有点号,然后去空格4、若逗号个数大于1,则用空格替换掉字符串中的所有逗号,然后去空格5、若点号个数 = 逗号个数 = 1:_替换千分位符号
文章浏览阅读1w次,点赞22次,收藏172次。1.动作事件监听器动作事件(ActionEvent)监听器是Swing中比较常用的事件监听器,很组件的动作都会使用它监听,如按钮单击,下表描述了动作事件监听器的接口与事件源。事件名称 事件源 监听接口 添加或删除相应类型监听器的方法 ActionEvent JButton、JList、JTextField等 ActionListener addAct..._java监听器
文章浏览阅读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 选中编辑
文章浏览阅读790次,点赞3次,收藏2次。Android Material Design控件使用(二)_android 使用 material desingn ui 控件
文章浏览阅读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
文章浏览阅读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
文章浏览阅读1.8k次。Openstack 从云硬盘(卷)中创建虚拟机_openstack volume create
文章浏览阅读6.4k次。文章目录@[toc]redis入门(三)目录前言事务原理Lua脚本安装脚本命令EVALEVALSHAlua和redis互操作SCRIPT EXISTSSCRIPT FLUSHSCRIPT KILL脚本复制集群搭建工具redis-trib.rbredis官方集群搭建集群横向扩展故障转移redis管理参考文档redis入门(三)目录redis入门(一)redis入门(二)redis入门(三)..._redis slot open
文章浏览阅读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的电容会吸收电荷,这就是数据丢失的原因。我们都知道,中间层是为了提供抽象转换而存在的,而这套叫做操作系统的中间层,定义了一套规则,使得后续的可执行程序能够更容易的被运行起来,而且能更容易的利用各种硬件(显示,键盘等等),能够调用一些库来消除不同的程序间重复的运行逻辑。_操作系统和编程语言的关系
文章浏览阅读378次。这上以前加入黑手安全网上做的教程,也搬过来吧目标程序:红盟(内部版)TNT社工辅助.exe所加的壳:ACProtect 2.00 - RISCO Software Inc.首先忽略所有异常,隐藏下od脱壳步骤:1.程序附加(程序附加后会停在系统的领空)代码:7C92120F C3 RETN7C921210 8BFF MOV EDI,EDI7C921212 > CC INT3..._acprotect 教程
文章浏览阅读174次。混合储能功率分配,下垂控制,功率均衡,母线电压补偿_蓄电池下垂控制