一些牢骚:深度学习没怎么学习几次,搭建环境已经把我搞秃了哈哈哈。
之前在网上找到的搭建环境的步骤,我没有root权限,很多操作都不行(比如运行.run文件,cuda
和cudnn的安装和修改也需要root权限 ,下载的时候也是各种不行,后面发现是路径问题..)对linux不熟悉导致光是安装就耗费了我好多好多天时间...
好不容易环境搭建好了 ,服务器又经常因为高温掉了 ,实在是不好多次麻烦管理员重启...
于是请管理员给我换了个服务器,梅开三度,再次安装.....
以下主要针对无sudo权限的情况...
目录
pytorch安装(无root权限,无法安装cuda的情况)
anaconda安装(无root权限也可)
没有root权限,先弄cuda和cudnn会出问题。打算用虚拟环境。所以先安装anaconda。
- 1、安装anaconda前需要查看自己的Ubuntu版本号..参照这篇帖子:
- ubuntu:查看ubuntu系统的版本信息_coldice0521的博客-优快云博客_查看ubuntu版本号
- 2、在官网:Anaconda | Anaconda Distribution 中找到符合自己版本号的anaconda。
- 官网找到linux系统的,右键复制下载链接。
- 在终端用cd+path进入想安装的位置;然后用wget+此下载链接下载 。
- 下载成功后,刷新服务器页面。path中有.sh文件出现。
- 然后用 bash 命令(不需要root权限)
- enter后再次向我们确认安装位置。因为一开始用cd进入了想要的路径,所以enter即可 。
- 安装好后,出现anaconda的文件夹。
- 但在 终端直接输入conda 命令 没有反应。如下
- 所以接下来需要配置环境变量!这一步的目的就是,在终端中输入conda时,能有所反应。
- 运用bashrc文件添加环境变量。这一步,有用 vim命令,也可用gedit命令。都可以,它们的区别我去搜了下:
- Linux下gedit命令及vim的基本操作_S4061222的博客-优快云博客_gedit命令
- 我用的是gedit编辑(测试没有root权限也可)
-
gedit ~/.bashrc
输入这行命令后,会出现一个文本框,在最后 一段加上anaconda3的bin文件路径。(代码中的***需要替换为你的路径)。
-
#added by Anaconda3 installer export PATH="/***/anaconda3/bin:$PATH" #***需要替换为你的路径
点击文本框的save!!!然后在终端运行以下命令。每次修改.bashrc文件后,需要这一行命令加载修改后的设置。可以使环境变量生效。
-
source ~/.bashrc
然后在终端输入conda的一些命令也可以生效了。比如查看conda环境的安装的包;
conda list
能在终端运行conda相关命令,则说明anaconda环境变量配置成功~~
拓展一下 ,和conda相关的一些指令如下(和安装没什么必要关系):
Conda常用命令整理_CharlotteMen的博客-优快云博客_conda命令
pytorch安装(无root权限,无法安装cuda的情况)
以下灰色斜体的内容与安装正文无关,是踩坑记录:之前安装的时候踩了一个坑,自以为cuda和cudnn已经安装好了 ,然后直接 conda install torchvision的时候,安装是成功了,但是训练速度非常慢,后面发现安装成cpu版本了。后面检查发现cuda和cudnn的版本也对不上号。这里踩过的坑在下面这篇帖子:
解决torch.cuda.is_available()一直返回False的玄学方法之一_凛雨时冽的博客-优快云博客_cuda.isavailable(后面找到原因是环境的cuda是root用户的,我自己安装的cudatoolkit和cuda版本对应不上,cudnn就没有安装成功,就没有用到GPU进行训练。)cuda和cudnn安装 好后,一定要用torch.cuda.is_available()检验一下是否成功了(代码详见上面那篇帖子)。否则辛辛苦苦安装很久,可能最后还是用到的cpu进行训练。
首先是cuda的问题,conda安装的cudatoolkit和nvidia安装的cuda的版本问题,我反正是晕的。不知道要不要单独去安装cuda~下面这篇文章解释清楚了。
显卡,显卡驱动,nvcc, cuda driver,cudatoolkit,cudnn到底是什么? - 知乎因为之前我装anaconda时,没有单独安装cuda,就可以运行。之后安装了一次飞桨的框架(paddlepaddle),我以为就不用安装cuda了...结果就把不行!!用飞桨的框架不能用基于conda安装的cuda....NVIDIA的cuda和此cuda是不一样的东西。详细看下面这篇文章。(其中涉及到runtime API和driver API的问题)显卡,显卡驱动,nvcc, cuda driver,cudatoolkit,cudnn到底是什么? - 知乎
pytorch的具体安装参考下面第一篇帖子”1”(直接按照这篇安装会有很多问题,以下梳理问题和解决方案 )
1*:
Anaconda环境安装GPU版本Pytorch_moyemoji的博客-优快云博客_conda安装gpu版pytorch
问题梳理:
1、这篇帖子anaconda是基于root权限的,没有root权限请看我上面的anaconda安装的部分
2、其中创建环境的部分有点问题,参考第2篇(2*)。
Anaconda创建环境、删除环境、激活环境、退出环境_DayDay_Lee的博客-优快云博客_删除环境
无sudo权限运行cuda
3、上面提到的1*这篇文章没有指出cuda安装的问题。因为输入以下命令时,终端未显示cuda版本;
#以下命令得到runtim API版本
nvcc -V
#以下命令得到driver API版本
nvidia-smi
我以为没有安装cuda,因为没有sudo权限,又无法安装cuda...结果在/usr/local/文件夹中发现已经安装了;
这是服务器管理员安装好的。我可以在/home/××× 我的用户文件下,直接用安装好的cuda。我自己的电脑里,还是需要重新安装。通过nvidia-smi可以看到型号(这是更偏底层的cuda版本,偏硬件。nvcc -V才是编译器的cuda版本,受nvidia-smi支配)
既然安装了cuda后,但终端不显示,就是配置环境变量的问题:
配置环境变量,在终端输入:
cd /home/
gedit ~/.bashrc
打开文本框,Ctrl+F搜索"cuda",如果没有搜到,加入如下内容:(或者改变cuda的路径)
##cuda版本见你自己电脑的版本型号,我的是cuda-11.1
export CUDA_HOME=/usr/local/cuda-11.1
export LD_LIBRARY_PATH=/usr/local/cuda-11.1/lib64:$LD_LIBRARY_PATH
export PATH=/usr/local/cuda-11.1/bin:$PATH
修改好后先保存!!再在终端输入以下代码开始编译~然后再输入nvcc -V(大写)得到驱动版本。
source ~/.bashrc
#以下命令得到runtim API版本 --上述的/usr/local里面的版本
nvcc -V #更低版本
#以下命令得到driver API版本
nvidia-smi ##硬件版本
得到nvcc -V的版本型号后,就可以选择cudatoolkit的型号了~见如下(1*第一篇文章),就可以用conda命令进行安装了!下载<= nvcc -V的cuda版本型号的cudatoolkit,因为cudatoolkit的版本是向下兼容的~(比如运行cuda的版本是11.1,可以下载比11.1更低版本的cudatoolkit比如10.2)
4、去pytorch官网查看 运行版的cuda版本对应的pytorch、torchvision的版本进行下载
进入官网,地址:Start Locally | PyTorch
(根据nvcc -V得到的版本号来,不是nvidia-smi的版本 )
比较慢,可以用清华镜像源;
进入官网,发现只有10.2和11.3,比如我是cuda-11.1,,那点击 图中标蓝色的部分,下载其他版本;
ctrl+F,搜索cuda 11.1;找到7项;对应不同的torch版本;有pip方式;也有conda方式;
两种都可;
pip方式对应torch
conda对应pytorch
提醒一下,有的版本的torchvision需要注意看看自己anaconda3中的python版本!python版本和pytorch或者torch的版本有对应关系!(虽然一般不会有问题)
python版本不能太高!比如0.8.1的对应的torchvision版本就只能对应python<=3.8版本的。如果是python3.9版本的,需要重新安装python.
截取一部分,详情见这个:https://github.com/pytorch/vision
如果python版本太高,就需要重新安装python环境;
解决方式很简单。进入我一开始创建的虚拟环境(输入指令 conda activate ***(创建的虚拟环境的名字 ))
然后直接
conda install python=3.8
如下图:前面的(pytorch_env)是我取的虚拟环境的名字;
之后再次输入python,版本就降下来来了
版本没问题的话 ,用官网给的命令安装cudatookit、pytorch、torchvision;
官网给的是conda-forge这个库 ,这样可能很慢 。用清华镜像源替代,速度快到飞起。
终端输入命令编辑:
gedit ~/.condarc
打开
然后把用清华镜像源中的以下内容把原来的 覆盖 掉!
channels:
- defaults
show_channel_urls: true
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
覆盖之后的样子如下,点击右上角 save
这里贴一下清华镜像源的网站,有兴趣可以点进去了解一下
anaconda | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
参考资料:
https://www.youkuaiyun.com/tags/Mtzakg2sNTYxODYtYmxvZwO0O0OO0O0O.html
踩坑记录:一开始,我直接把上面那串代码的conda-forge形式改为
这样不行,显示的结果是The channel is not accessible or is invalid.
像上文所述的编辑condarc即可解决此问题。
测试安装是否成功
安装好后,在终端输入python进入python环境:
python
再在虚拟环境下的终端输入以下代码:
import torch
torch.cuda.is_available()
返回True,即可以用GPU进行训练。
效果如下图:
(一开始就是从这里是False发现自己安装的居然是cpu版本的,之所以安装的是cpu,把cuda的运行版本搞成了驱动版本 ,所以cudatoolkit的版本安装高了,就出问题了。这一条命令用来检验很重要!)
开始发牢骚:总算安装好了 。GPU的速度实在是太快了....飞一般的感觉...搞了这么久,值了!!感谢我的老师给我换服务器!!!
补充:安装cudnn,提升性能
上述只是安装了cudatoolkit,pytorch,和torchvision,没有安装cudnn(被cudatoolkit版本支配,要兼容)。
cudnn也是需要安装的,起加速作用。关于这4者的关系。cudatoolkit是基础作用。
1. **CUDA Toolkit基础地位**
- CUDA Toolkit是整个体系的基础。它提供了在NVIDIA GPU上进行通用计算的工具和库。这个工具集包括CUDA编译器(nvcc)、各种GPU计算数学库(如cuBLAS用于线性代数运算、cuFFT用于快速傅里叶变换)等。这些工具和库使得开发者能够编写可以在GPU上运行的程序,无论是深度学习程序还是其他需要GPU加速的计算程序。 - 例如,在开发一个简单的GPU加速的矩阵乘法程序时,就可以直接利用CUDA Toolkit中的cuBLAS库来实现。它为后续的深度学习框架(如PyTorch)提供了底层的GPU计算支持。
2. **PyTorch与CUDA Toolkit的关系**
- PyTorch是一个深度学习框架,它可以利用CUDA Toolkit来加速模型的训练和推理过程。PyTorch本身支持CPU和GPU两种计算模式。当系统中安装了CUDA Toolkit并且有合适的NVIDIA GPU设备时,PyTorch可以将模型的计算自动转移到GPU上进行。 - 例如,在训练一个深度学习图像分类模型时,如果安装了CUDA Toolkit并且PyTorch配置正确,模型的前向传播和反向传播过程中的大量矩阵运算等都可以在GPU上进行,从而大大加快了训练速度。PyTorch通过抽象的接口隐藏了底层CUDA Toolkit的复杂操作,让开发者能够更方便地使用GPU资源进行深度学习开发。
3. **torchvision与PyTorch和CUDA Toolkit的关系**
- torchvision是PyTorch的一个视觉处理库。它主要用于处理图像、视频等视觉数据,并且提供了许多用于视觉任务的预定义模型(如ResNet、VGG等)、数据集(如CIFAR - 10、MNIST等)和数据转换工具。 - 它是构建在PyTorch之上的,并且同样可以利用CUDA Toolkit提供的GPU加速。例如,当使用torchvision中的预定义模型进行图像分类任务时,如果系统有CUDA Toolkit支持,这些模型可以在GPU上运行,加快分类速度。同时,torchvision在数据处理过程中(如对图像进行缩放、裁剪等转换)也可以受益于GPU加速,提高数据处理效率。
4. **cuDNN与其他三者的关系**
- cuDNN主要是为深度学习中的神经网络操作提供优化的加速库。它与CUDA Toolkit紧密相关,并且构建在CUDA Toolkit之上,利用其GPU计算能力。对于PyTorch和torchvision来说,cuDNN起到了进一步优化深度学习操作的作用。 - 当使用PyTorch训练深度学习模型(如使用torchvision中的模型)时,安装cuDNN可以使模型中的卷积、池化、激活函数等神经网络操作得到更优化的执行。例如,在训练一个卷积神经网络(CNN)模型时,cuDNN提供的优化卷积算法可以显著加快模型的训练和推理速度,这对于PyTorch和torchvision中的视觉相关模型的性能提升尤为重要。
补充:后续在新的linux服务器安装,出现新的一些问题
时隔3年,我在新的服务器装,torch.cuda.is_available()一直返回False
之前都返回True....现在的新的服务器(版本更高),却返回False
原因是,从官方源下载的时候,conda install pytorch给我下载cpu版本了!
详细参考这篇:
conda安装GPU版pytorch,结果却是cpu版本[找到问题根源,从容解决]_为什么conda安装pytorch版本不对-优快云博客
真的是,简而言之:下载的时候,conda自动下载了cpu版本。要解决这个问题,需要保证下载的网站(官方源or清华源)提供了,需要下载的版本。
中途安装着:说磁盘空间不够了:用以下命令查看usr1文件夹里的大小...(du -h --max-depth=2 /home
)
du -h --max-depth=1 /home/usr1
##du -h --max-depth=2 /home #会显示 /home 下两级子目录的大小。
清除了一些文件后,查询可知,再安装出现了问题:
- 有时候,Anaconda 的缓存可能会导致问题。可以尝试清理缓存并重新安装包:
复制
conda clean --all
这将清理 Anaconda 的缓存,包括下载的包文件和临时文件。
然后,再安装:
(确保了清华源有pytorch torchvision torchaudio cudatoolkit对应的版本)
conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
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/pytorch/
conda install cudatoolkit=11.8 -c http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/linux-64/
conda install pytorch==2.2.0 torchvision==0.17.0 torchaudio==2.2.0 cudatoolkit=11.8 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/linux-64/