借用实验室老哥工作站好几次了,不大合适,打算自己弄个云服务器,比如微软的azure或阿里云,先去了解一下吧。
认识:
目前大致看了,发现服务器大体上有三大类:
- 国内BAT华为的云服务,不过价格昂贵,尤其是GPU服务,或许可以看看有没有白嫖机会。
- 国内较小云服务平台AutoDL之类,挑选起来相当简单,直接选择显卡,系统之类即可,价格一般在1-5r/h,还可以接受。
- 免费的notebook,按一位老哥介绍打开即用,但只易跑小数据,或许可以看看:
kaggle:https://www.kaggle.com/code
colab:https://colab.research.google.com/#scrollTo=5fCEDCU_qrC0
选择:
发现较多人推荐AutoDL,看了下,感觉价格什么的都不错,决定也试试。
注册与租赁:
手机号注册,前两天sim卡坏了,等到今天才办好。注册之后,发现有学生认证,认证了,成为了炼丹会员,有九五折,还不错的亚子。
要选择的东西少,配置的东西少,门槛低,只需要选择显卡,流量/包月计费,想要的环境,然后就可以了。真的比眼花缭乱的bat省心很多很多。不过,需要注意下显卡最高支持cuda,有的仅支持11.5。
可以选择无卡模式开机,用来上传项目数据或配置环境时用,1毛每小时,是真不戳啊。
这玩意还有专门开发票的功能,它可真懂啊。
文件结构:
在AutoDL上,通过实例右侧“快速工具”的JupyterLab可以进行管理。进入后的文件结构如下所示:
autodl-fs:autodl自带可以上传数据的网盘,在网盘功能那里上传,然后在同区域(比如内蒙A区)的服务器实例文件结构中的autodl-fs中可以查看,不过在此文件夹中读写很慢,所以可以复制到autodl-tmp中,然后使用。网盘如下所示:
autodl-tmp:读写速度很快,我看到别人是用来存放项目的。我也是这样。
autodl-pub:我翻了翻,发现里边是一些公共的数据集。
miniconda3:用来进行python项目环境管理和配置,我自己配的环境就在这里。通过终端运行source miniconda3/bin/activate指令,可以使用conda命令。
tf-logs:不大感兴趣,浅浅地查找,没找到,以后再说。
系统为ubuntu,所有的文件夹都位于/root下。
除了使用上传到网盘的数据,此界面上方的箭头也可以上传本地文件,不过两者速度感觉都在几百K左右,上传稍大的文件实在是得等一会。
配置环境:
在选择显卡的时候说是配置好环境了,不过我不大明白在哪里。这可能和我没学过python,不大了解conda文件结构有关系(又需要去了解下文件结构了)。所以就自己配了环境,流程和之前在自己电脑上没区别,除了上边提到的通过终端运行source miniconda3/bin/activate指令,当然,我觉得这是我不怎么用ubuntu的原因。出乎意料的,在AutoDL上配环境本身倒是很快,这或许是服务器上本来有包吗?我不大清楚,不过舒服很多。配置完的环境如下:
值得一提,在配置完后,我偶然间发现,AutoDL的pip指令默认设置为阿里云的,还是什么,忘记了。
还有,我选择的按量计费,所以按你使用GPU模式的开启小时数计费。当你关机后,你的GPU会被释放,有可能被他人占用,所以我认为最好在同一区域多租几个(关机不计费),它们之间的环境和数据可以相互迁移(我觉得可以粗糙认为是autodl-tmp和miniconda的迁移,速度比较快,尤其是前者,有百兆字节每秒),这样,当你想训练时,发现GPU被占用了,可以看看同一区域的另外几个能不能使用,这很方便。
还有,它的可视化操作太垃圾,删除个文件夹如果里面有东西都不行,一看就是直接调用了rm指令,不带参数的那种。以后多用终端吧。
还有,因为上传的时候多用压缩文件,所以,用比较早的算法,或者怎么说呢?反正就是有些算法压缩的文件,在这里解压不出来,会直接跳过。如果你选择的压缩算法不兼容,上传解压,只能得到一堆空文件夹,这个得注意一下。毕竟半兆字节的网速上传大文件,是个表痛苦的事,尤其是反复上传。
开始训练:
把需要的yolov5工程文件夹和datasets数据集文件夹(新版yolov5的文件结构)放在autodl-tmp中,把环境配置好,在配置好的language环境下运行train.py就开始训练了。值得一提,因为yolov5使用相对路径,所以保持整个工程:yolov5和datasets同级不变就可以在不同的电脑上运行,这很省心。
48G大显存用起来确实很舒服,256一批不在话下。半分钟一轮,根本之前不敢想。也由此,需要去了解下怎么调参能把显卡性能完全调用起来了。
Pycharm远程链接:
右侧是服务器实例的ssh和密码。复制ssh。
pycharm中找到解释器的shh。
输入ssh和密码,链接到服务器实例。
选择实例上的环境。
选择上传位置。
之后会上传项目,完场后,然后就可以在对方的服务器上训练或运行了。
总结:
在服务器上训练,使用云端的算力,真是给人一种新奇感,仿佛过去的人第一次在家里用上自来水,用上天然气,用上电力。这也让我比较直观的意识到什么叫做“基础设施”级别的云计算了。真是有趣,当然,主要是省钱,毕竟,几万的卡卡,还只是用来训练,怎么想都有些亏。