PyTorch——配置深度学习环境
PyTorch——配置深度学习环境
还在为各种包的版本匹配发愁,还在冥想这个错误到底从何而来。
放弃吧,重装才是王道。
安装Cuda
tensor在GPU上运行是可以提高一定的处理效果的
首先需要检查一下你的GPU,查看一下版本
很简单进入任务管理器,打开性能,就能看见你GPU的参数啦(一般游戏笔记本是有两张显卡的,一张独显,一张集显)
前往Cuda官网 下载驱动,安装即可
下载后,默认安装就好(前提你没有电脑里没有Cuda)。然后打开cmd,输入 nvidia-smi 即可查看
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels http://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
但是当你的环境下默认有一个Cuda环境的时候,你想安装一个新的Cuda环境时,需要注意的是你就不能再添加新的Cuda 驱动了。
有的环境这时使用nvcc -V
的时候,没有办法显示。其实只要去配置一下环境变量就OK
vim ~/.bashrc
#下面加进去有
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
export PATH=$PATH:/usr/local/cuda/bin
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda
#source一下
source ~/.bashrc
接下来要安装Cudnn.
安装Anaconda
硬件好了,我们需要一个集成环境帮我们管理包和他们之间的依赖 anaconda当然是很好的选择
这里推荐两个路径:Anaconda官网和清华软件镜像园
同样也是下载安装即可,注意勾选默认到Path环境变量就行。
这里我们需要注意,修改一下anaconda的源:清华大学开源软件镜像站和中国科技大学镜像站 方便我们下载
conda config --add channels http://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --add channels http://mirrors.ustc.edu.cn/anaconda/pkgs/main/
conda config --add channels http://mirrors.ustc.edu.cn/anaconda/cloud/menpo/
conda config --add channels http://mirrors.ustc.edu.cn/anaconda/cloud/bioconda/
conda config --add channels http://mirrors.ustc.edu.cn/anaconda/cloud/msys2/
conda config --add channels http://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/menpo/
conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/peterjc123/
conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/ #安装pytorch的小伙伴这个源一定不要漏
conda config --set show_channel_urls yes
衷心提醒网址一定要是http 不能是https,要不然会访问报错。 网址也不需要加引号切记
当然也可以自己手动去 C:用户下修改.condarc(这里贴出我的文件内容)
ssl_verify: true
channels:
- defaults
show_channel_urls: true
channel_alias: https://mirrors.tuna.tsinghua.edu.cn/anaconda
default_channels:
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/peterjc123/
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/menpo/
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
custom_channels:
conda-forge: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
simpleitk: http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
查看conda版本 conda -version
升级conda工具包 conda upgrade --all
查看当前conda环境 conda env list
生成所需环境的txt文件 pip freeze > requirements.txt
conda安装txt conda install --yes --file requirements.txt
conda环境,导出格式为.yml文件或.txt文件: conda env export > requirements.yml
conda list -e > requirements.txt
安装环境 : conda env create -f requirements.yml
创建虚拟环境 conda create -n <name> python=3.8
这样anaconda就会去找python对应的包 耐心等待就好
删除环境conda remove -n <name> --all
激活环境 conda activate py38
我这里的py38就是我新建的虚拟环境名称
conda还有一个好处 就是可以版本回滚 方便回到之间的状态
conda list --revisions
若想回滚到某个时刻,直接输入那个版本号就行了,例如我想回滚到第10个版本,即
conda install --revision 10
安装torch
直接在官网寻找就好了,对应好自己的操作平台,和cuda版本下载即可
之前设置的源,会为我们找到国内的镜像路径,加快下载速度
测试torch
如果在Pycharm内,直接进入project选择新建虚拟环境的python.exe即可
如果在Jupyter Notebook中,则需要多安装一个包 nb_conda
安装完以后你就会发现你的jupyter会多一个conda插卡,可以查看conda的虚拟环境
运行的程序的时候,注意选择kernel是哪个环境的 以免发生版本错误
这些都是显示torch信息的一些命令可以用于测试的哦
import torch
print(torch.__version__)
torch.cuda.is_available()
torch.cuda.device_count()
torch.cuda.get_device_name(0)
安装PyG
首先安装torch-geometric之前需要准备的是,要查看好你当前的环境需要配置的文件
硬性要求python版本在3.7-3.10之间、Pytorch版本最低为1.8。
同样也是要在官网寻找,对应好自己的操作平台,和torch版本、cuda版本。详细的版本对应在这
对于目前比较稳定的torch1.12版本,在conda的镜像源中没直接的版本对应pyg。即使换成1.11版本的 运行conda install pyg -c pyg
代码后测试的仍然存在一点小问题
这里我之前安装的环境是python3.8和torch1.11.0,cuda11.5
所以我这里安装的代码就是
pip install torch-scatter -f https://data.pyg.org/whl/torch-1.11.0+cu113.html
pip install torch-sparse -f https://data.pyg.org/whl/torch-1.11.0+cu113.html
pip install torch-geometric
pip install torch-cluster -f https://data.pyg.org/whl/torch-1.11.0+cu113.html
pip install torch-spline-conv -f https://data.pyg.org/whl/torch-1.11.0+cu113.html
当然如果安装出现错误,不妨看看pyg官网最下面有一些Frequently Asked Questions还是相当不错的
在Neural Network 2022 关于GTN的文章中,涉及到一个关于torch-sparse-old的包
从作者的md中可以看到,为了解决torch.geometric删除了稀疏矩阵的backward()这个bug,他们把自己的torch-sparse上传到pip上,名字是torch-sparse-old。
但是
pip install torch-sparse-old
会出现错误
cuda/spspmm_kernel.cu(76): error: identifier "cusparseXcsrgemmNnz" is undefined
cuda/spspmm_kernel.cu(84): error: identifier "cusparseScsrgemm" is undefined
cuda/spspmm_kernel.cu(84): error: identifier "cusparseDcsrgemm" is undefined
这个问题我尝试了很多方法,包括但不仅限于修改gcc,修改cuda版本,修改python、torch版本,以及删除环境重新来过。在这个关于pytorch_sparse的issue内我也同样发现一个朋友有同样的错误。但是并没有看到好的解决方法
我后来直接在代码中把 import torch_sparse_old 修正为 import torch_sparse as torch_sparse_old.
竟然惊奇的发现可以运行代码, 按理说backward()存在问题,model的train是无法正常进行的。那么一个合理的解释就是,新的torch-sparse、torch-geometric已经修正了这里无法传播的问题。
有时会发现学习是一件很快乐的事情 比一直跑步容易多了 不是嘛