(一)GPU进行深度学习训练——新手指南

前言

最近在训练语义分割网络时决定使用GPU,本文记录新手在使用GPU时遇到的一些坑。想要在win10系统上配置GPU运行Pytorch代码可以考虑以下几种方式:

  1. 安装cuda,以及GPU版本的pytorch和torchvision,使用电脑自带的GPU进行网络训练;
  2. 远程连接实验室的服务器,通过IP、账号以及密码进行访问,可以在pycharm专业版以及vscode上利用SSH进行配置;
  3. 选用在线网址,利用线上提供的免费GPU。

需要注意的是,每种方式都有自己的优劣:
方案一最为方便,但是并非所有的电脑都可以使用,pytorch只支持算力超过3.0的GPU,比如我的电脑就无法配置。
方案二最为可靠,但是可能会出现访问超时的情况说明受到了对方服务器防火墙的阻止,即使使用VPN访问也未必有效,可能需要校园网连接(对于学生来说)。
方案三是成功率最高的方法,但是可能会出现免费GPU资源受限、文件无法实时保存容易丢失文件或者本地数据集上传困难等等问题,本文主要推荐谷歌在线平台Google Colab。

一、本机自带的cuda

首先需要在自己的电脑上安装CUDA、cuDNN以及GPU版本的pytorch和torchvision。(建议先考虑自己的电脑能否支持该操作,我的联想笔记本性能和算力就不够用)
参考:

  • CUDA、cuDNN的安装:GPU版pytorch安装
    命令行nvcc -V判断CUDA是否安装成功,输入 nvidai-smi输出显卡与驱动信息,正确说明安装成功。
  • 下载GPU版本下的pytorch和pytorchvision:GPU版本安装Pytorch教程最新方法
    命令行进入python环境,检测是否可用:
>>> import torch
>>> torch.cuda.is_available()
True
>>> torch.cuda.get_device_name(0)
'NVIDIA GeForce RTX 3070 Ti Laptop GPU'

有可能这时会出现False,考虑到之前CUDA已经配置成功那么大概率说明GPU的算力不够,pytorch无法支持。
(参考:“K1000M - CUDA driver initialization failed, you might not have a CUDA gpu”)

二、使用SSH远程连接实验室的服务器

目前主流并且对ssh支持比较好的python编译器,主要是pycharm和vscode:

  • Pycharm专业版:可以通过学信网利用学生邮箱申请免费的pycharm专业版,网上有相关的教程,只有专业版才支持Tool - Deployment功能。具体连接方式参考下文:Pycharm通过ssh远程连接GPU服务器训练深度学习代码
  • VS Code:目前已经有很多相关教程,我不进行赘述。

需要注意的是,我在使用上述两种方式时均遇到了报错,显示访问超时,最后即使使用命令行进行访问依旧超时,防火墙确认关闭后也不行。经过一定的排查发现很可能是收到了对面服务器防火墙的阻止,参考:
首先找出出现故障的原因:SSH远程连接故障排错
我最后发现我在ping的时候就连接超时,经过一定的搜索我发现了这个网址:Why do I get Request Timed Out when trying to ping a computer?
最后得出结论是访问受到了对方服务器防火墙的阻止,考虑到我现在是大四阶段,还有半年才能去研究生的实验室连接校园网我在经过了两天的无数次尝试以后放弃了这个方案,说实话非常失落,但是还是得加油干活(bushi)。

三、使用线上免费的GPU资源

如果上面两种方式都不能成功那么只剩下最后的选择,使用线上的GPU资源。
可以参考这篇文章中的介绍:
推荐几个提供免费GPU计算资源的平台,助力你的AI之路
我主要就自己使用过的两个平台:Google Colab和百度的AI Studio飞桨进行介绍。

Google Colab

最开始是因为B站李沐老师动手学深度学习的课程接触到Google Colab。(顺便安利一波这个课程,非常良心!)跑一些简单的代码比较方便,首先下载谷歌Driver客户端,在桌面上会形成一个G硬盘,这样就可以进行本地数据集与在线代码的传输了,同时也可以直接下载文件到本地。运行代码时在google colab上挂靠到谷歌Driver上就行。
但是随着我的数据集和模型的增大,对GPU的要求越来越高,弊端很快显示出来:

  1. 硬盘最多只能支持15G的文件,而且删除文件的操作非常繁琐(我甚至出现了在线回收站越清空越占内存的情况,后来发现是所有想在回收站删掉的文件都又回到了回收站,问就是人都麻了)。同时上传数据非常缓慢,我计划上传一个10G左右的数据集,上传预计时间20小时,你是否有很多问号。。。
  2. GPU限制非常严重,经常莫名其妙就会把GPU停掉,谷歌有一些奇怪的限制规则导致我也搞不清理由。此外每次在GPU和CPU之间切换所有的代码都需要重新跑一遍,非常不方便。建议不跑GPU时就把连接断掉,不然想用的时候也用不了了。
  3. 收费版价格昂贵,一个月10美金,并且只支持visa卡和美国存储卡付款,支付宝微信啥的都不行,而且不fq也访问不了。

不过毕竟是免费的,咱们还是不要要求太高,有时间我将会详细记录如何解决上述列举的每一个问题。

百度飞桨

这是我昨天才了解到的平台,可以接受的数据集是60G,而且GPU资源也非常丰富,目前打算常驻在这儿了。等我这几天使用的体验,如果不错后面可能会继续分享使用的一些操作。

追更:原本以为飞桨是难得的良心平台,用了一下发现居然只能支持百度中间的paddle框架,GPU对torch、tensorflow这些全都禁了,还是继续尝试Google Colab吧,遇到的问题只能一个个解决了。

本文所有引用到的文章,如果有任何侵权的地方可以私信我,我会立刻删除。
转载请联系我,绝对不是打广告哈,良心推荐。如果因为我个人知识的局限造成了错误,欢迎在评论区指正。

你可能感兴趣的:(毕设,pytorch)