主题:
- 滴滴云服务器上安装PyTorch GPU版本
- 本机PyCharm连接云服务器做代码调试和同步(云服务器不限于滴滴云)
背景
做深度学习的实验,尤其是涉及图像的实验,大的预训练模型,如VGG、ResNet等配合规模不小的训练数据集,在未配备高性能显卡的电脑上运行耗时很长,如果没有足够资金购买高性能显卡,推荐使用GPU云服务器,考虑到网速问题,推荐使用国内的云平台,国内BAT等大厂都有GPU云服务器产品,也有一些小的GPU云服务器租赁平台,甚至在某宝上也可以搜索到相关租用服务。选择哪家主要基于价格和稳定性两个因素考虑,综合对比了上述三类平台,最终选择了滴滴云,原因是价格便宜,稳定性相对靠谱,毕竟是有点名气的厂商(虽然是打车软件的名气),服务的稳定性方面相对小厂还是有一定保障的。
下面分别介绍云服务器购买,PyTorch GPU配置,本地PyCharm连接远程服务器
云服务器的购买
注册滴滴云并完成实名认证,到个人控制中心购买符合自己性能需求的GPU服务器,如下图,最便宜的P4只需要不到3元/小时:
其他机器性能选项(硬盘、带宽)等,根据需求选择,博主都是一路最低选下来,到最后注意一下:安全组和密钥两个选项,如果要搭建Jupyter服务器,自己新增安全组开放相应的端口,如果本地机器为Ubuntu系统,密钥建议使用本机SSH公钥。点击“创建实例”,不到一分钟就创建完成了,在shell命令行使用SSH直接登录远程服务器开始配置深度学习环境。
PyTorch GPU环境配置
如上图所示,GPU云服务器只是预装了特定版本的CUDA,至于深度学习所需的科学计算包还是需要自己下载安装。
- 安装Anaconda3。wget ‘Anaconda官网上最新的.sh安装文件下载地址’,如果嫌慢也可以从国内清华镜像源下载安装包或者本机下载好了从本机上传到服务器,直接使用
bash
命令安装,安装完成后看看~/.bashrc
文件中是否更新添加了Anaconda路径信息,没有的话手动添加一下export PATH=~/anaconda3/bin:$PATH
,记得将命令中的~/anaconda3/bin
替换成你Anaconda的安装目录,然后source ~/.bashrc
使修改立即生效,shell里输入python
,查看一下是不是刚才安装的Anaconda中的Python解释器,如果是那就ok了。 - pip安装PyTorch。在滴滴云上不推荐使用conda安装PyTorch,速度慢也容易出现各种问题导致PyTorch无法使用GPU,按照PyTorch官网(https://pytorch.org/)提示,选择使用pip安装,一行命令搞定
pip install torch torchvision
,pip的源默认是滴滴提供的镜像的,因此下载速度很快,不需要更换源。如果以后使用过程中conda和pip需要切换为国内源提高下载速度可以参考博文《更改Anaconda下载源,提高下载速度》和《pip使用清华镜像源》 - 命令行确认GPU能正常使用
nvidia-smi
。前面购买的机器默认是安装好CUDA的,通常执行该命令不会出错,如果报错NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver
,两条命令解决sudo apt-get install dkms
和sudo dkms install -m nvidia -v xxx.xx
,xxx.xx
是本机显卡版本号,进入/usr/src
查看nvidia
文件夹的后缀就知道了。 - 在Python解释器中执行
import torch
和torch.cuda.is_available()
,如果结果为True
表明配置成功了。
本机PyCharm连接云服务器运行、调试、同步项目代码
只有PyCharm的专业版才有此功能,社区版是没有的。专业版一般是付费的,想要免费或者便宜使用请自行去找各种方法。Tools
–>Deployment
–>configuration
–>+
,设置如下图
注意Root path就是你服务器的~
目录,在服务器上该目录下输入pwd
查看具体路径,填写到这里。继续在Mapping选项卡里进行设置,如下图:
注意,Root path+Deployment path恰好构成你服务器上项目的完整路径,所以进入服务器中的项目目录执行pwd
查看完整路径,去掉Root path的部分,剩余部分填写到这里的Deployment path即可。
最后配置一下本地项目使用服务器的Python解释器,这样就可以利用远程服务器配合本地Pycharm进行代编写和码调试工作了,setting
–>Project Interpreter
–>小齿轮
–>add
->SSH Interpreter
,勾选existing server configuration
,在Deployment configuration
中选择刚才部署的远程GPU云服务器即可,然后测试连接成功即可。
PyCharm还可以实现本地和远程项目文件的自动同步和手动同步,以及在IDE中以文件树视图方式增删改查远程服务器上的文件,对比本地和远程服务器文件的差异,这些功能可以通过在项目或者文件上右键或者Tools
–>Deployment
选项卡实现,读者可以自行探索使用。
最后请注意:文件修改可以同步,但是文件删除不会同步,就是说,本地删除文件,并不会同步删除远程服务器的文件,即使以后同步整个项目,远程服务器上也会一直存在本地已经被删除的文件,所以远程服务器上的文件删除需要手工进行,可以通过PyCharm中Tools
–>Deployment
–>Browse Remote Host
以文件树视图的方式管理远程服务器中的项目文件。
后记
机器只要不删除就计费,搭建一次环境也不易,搭建好之后记得建立快照,以后随用随购买GPU实例并安装快照,用完立刻删除实例,并经常更新快照,保存自己最新的配置和项目数据。