中途踩了好多坑,折腾了快一个礼拜才跑出来,真的好搞心态!!这篇帖子详细记录怎么用用阿里云服务器运行深度学习代码,雷点也都会说清楚。
我的代码运行环境:
一、购买云服务器
建议买的时候联系客服,说下自己的需求,客服会给出比较好的建议。现在有的优惠是300元优惠券和3个月试用,但3个月试用的配置好像比较一般。
这里提供下我的配置。付费类型,考虑到抢占式实例有可能会被自动释放、影响跑代码,我使用了按量付费。地域选择一个离自己比较近的。网络根据默认。
实例选择GPU类中的共享型GPU。镜像根据环境要求,选择了Ubuntu16.04,并且安全加固。
这里附上阿里云提供的参考:
轻量级GPU是指GPU计算型实例,可以降低小规模AI推理过程的使用成本;共享型GPU是指GPU虚拟化型实例,CPU和网络资源采用共享模式提供,内存和GPU显存采用独享模式提供,为您提供数据隔离和性能保障。GPU与CPU配比:对于深度学习训练,考虑GPU与CPU的最佳比例在1:8到1:12之间。如果是通用深度学习、图像识别推理等场景,GPU与CPU的比例推荐为1:4到1:12之间。如果涉及大规模的深度学习训练,推荐使用GPU加速型实例,如GN系列或P系列,这些实例配备高性能NVIDIA GPU,适合深度学习和科学计算场景。(可以选择安装GPU驱动,就不用自己配啦)
存储部分,开启了快照服务。
带宽和安全组部分,记得勾上公网IP,方便远程连接服务器。安全组默认。
选择密钥对,登录服务器的时候就用密钥对验证。自己创建一个,并且保存好密钥对的.pem文件就好了。
下单,成功购买服务器啦。进入管理控制台,进行接下来的操作。
二、连接服务器
可以使用阿里云提供的workbench进行远程连接。我使用的是Xshell进行远程连接,Xftp进行文件传输。安装教程:Windows 下 xshell 和 xftp 安装与使用_window安装xshell xftp-CSDN博客
连接教程:如何用云服务器进行深度学习 - 知乎 (zhihu.com)(第二节~)
连接上了以后我出现了提示:/usr/bin/xauth: file /root/.Xauthority does not exist,这个不是问题,具体可看:【庖丁解牛】xshell链接服务器 /usr/bin/xauth: file /root/.Xauthority does not exist_/usr/bin/xauth: file /root/.xauthority does not ex-CSDN博客
三、配置环境 1、安装GPU驱动
一般都是上网下载NVIDIA驱动并安装,不过在我各种报错并咨询阿里云客服后,发现因为购买的是GPU虚拟化实例ecs.sgn7i-vws,需要安装GRID驱动^^...
参考文档:通过云助手安装一下grid驱动就可以了,中途遇到问题可以咨询客服解决。在附录补充了NVIDIA驱动的安装教程,别的实例类型也可以参考~
安装好后,输入以下命令查看当前GPU的所有基础信息:
nvidia-smi
这里你会看到有个CUDA的版本,这是CUDA Driver API的型号,也是硬件可以支持的CUDA的最高型号。
2、安装CUDA
这里有个大雷点:一定要注意CUDA版本!!
查看电脑GPU的算力:CUDA GPUs - Compute Capability | NVIDIA Developer,以我为例,在实例中看到型号是NVIDIA A10,查找到算力为8.6。
根据算力,找到支持该算力的对应的CUDA版本。虽然我的开源代码是在CUDA10.1上运行,但是其仅支持算力3.7,5.0,6.0,7.0;于是我重新安装了CUDA11.1,符合算力要求。
补充说下,使用以下命令,在终端进入python,可查看当前版本的pytorch依赖的CUDA算力支持:
import torch
接下来就是安装CUDA11.1,在官网中找到安装链接:CUDA Toolkit 11.1.0 | NVIDIA Developer
根据官网给出的教程操作就好了,附上代码:
接下来进行环境变量的配置:
#修改~/.bashrc文件
vim ~/.bashrc
#在文件的末尾加入下面两行(记得换成自己安装的CUDA版本号)
export PATH=/usr/local/cuda-11.1/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
#按ESC,输入:wq,并回车,保存退出
#更新环境变量
通过以下命令查看CUDA版本(CUDA Runtime API),验证是否安装成功:
nvcc -V
3、安装CUDNN
参考文章:如何用云服务器进行深度学习 - 知乎 (zhihu.com)(3.1.2部分)
补充一些出入,传输文件的端口打开部分,阿里云界面略有变化,点击侧栏的【安全组】【操作-管理规则】:
【快速添加】,之后根据文章中来就好了:
最后验证环节,我找了半天才找到,可以参考:
cat /usr/local/cuda-11.1/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
4、安装anaconda
清华镜像源好像不对阿里云服务器开放,所以我用阿里云镜像源下载了,地址:anaconda-archive安装包下载_开源镜像站-阿里云 (aliyun.com)
找到要下载的版本(这里选择 Anaconda3-5.0.0.1-Linux-x86_64.sh
),复制链接:
#下载安装包
wget https://mirrors.aliyun.com/anaconda/archive/Anaconda3-5.0.0.1-Linux-x86_64.sh
#查看安装包名
ls
#安装
参考文章:如何用云服务器进行深度学习 - 知乎 (zhihu.com)(3.2部分),添加变量就好了~
介绍一些常用的环境管理代码:
#创建环境
conda create -n 环境名 python=python版本
#激活环境,从base进入到创建的环境
conda activate 环境名
#退出该环境
conda deactivate
#删除环境(需要先退出该环境)
conda remove -n 环境名 --all
#查看全部环境
conda env list
#查看环境中安装的包
5、修改conda镜像源
修改成国内的阿里云镜像源,代码如下:
conda config --add channels http://mirrors.aliyun.com/anaconda/pkgs/main
conda config --add channels http://mirrors.aliyun.com/anaconda/pkgs/r
conda config --add channels http://mirrors.aliyun.com/anaconda/pkgs/msys2
四、源码上传
参考文章:记录一次服务器跑数据的全过程_如何使用远程服务器跑数据-CSDN博客(第五节)
五、虚拟环境中配置深度学习框架
又是一个大雷点,一定要注意版本匹配!
这是我的代码需要的包:
1、安装PyTorch
因为安装的CUDA版本变化,所以相应的pytorch版本也发生了变化。根据官网来:
Previous PyTorch Versions | PyTorch
pip install --no-cache-dir torch==1.8.1+cu111 torchvision==0.9.1+cu111 torchaudio==0.8.1 -f https://download.pytorch.org/whl/torch_stable.html
安装好以后,终端进入python验证:
import torch
#查看PyTorch版本
print(torch.__version__)
#验证cuda是否被PyTorch检测到
torch.cuda.is_available()
#output:True
#验证PyTorch能不能调用cuda加速
torch.tensor([1.0, 2.0]).cuda()
2、安装pytorch-geometric
进入链接,找到对应torch版本并进入,安装相关包。
pip install --no-index --upgrade torch-scatter==2.0.6 -f https://pytorch-geometric.com/whl/torch-${TORCH}+${CUDA}.html
pip install --no-index --upgrade torch-sparse==0.6.9 -f https://pytorch-geometric.com/whl/torch-${TORCH}+${CUDA}.html
pip install --no-index --upgrade torch-spline-conv==1.2.1 -f https://pytorch-geometric.com/whl/torch-${TORCH}+${CUDA}.html
3、安装其他相关包
和截图中一样,全部包安装完就可以跑代码啦~
附录A 安装NVIDIA驱动
注意驱动一定要和GPU型号对应!
进入官网Official Drivers | NVIDIA,选择对应配置。我的GPU型号是GA102GL [A10],对应下图:
点击search后,可在supported products中查看支持的型号。点击download,进入下一页面,复制Agree& Download的链接。
wget https://us.download.nvidia.com/tesla/535.154.05/NVIDIA-Linux-x86_64-535.154.05.run
sudo chmod a+x NVIDIA-Linux-x86_64-535.154.05.run
参考文章:Ubuntu18-22.04安装和干净卸载nvidia显卡驱动——超详细、最简单_ubuntu安装nvidia显卡驱动-CSDN博客
补充一个问题和解决方法:“you appear to be running an x server please exit x before installing”
sudo /etc/init.d/lightdm stop