记一次跑项目的经历
# 起因 最近在实验室,有实验室的同学需要跑一个透明度检测的开源项目,好像是这样的吧,好像就是和抠图有点关系,是通过大量数据集来训练出一个AI模型,然后最终实现准确抠图,然后就放在了实验室的一台工作站上跑(当然要放在服务器或者工作站上跑,不然连续开几天,谁…
# 起因
最近在实验室,有实验室的同学需要跑一个透明度检测的开源项目,好像是这样的吧,好像就是和抠图有点关系,是通过大量数据集来训练出一个AI模型,然后最终实现准确抠图,然后就放在了实验室的一台工作站上跑(当然要放在服务器或者工作站上跑,不然连续开几天,谁扛得住啊哈哈哈)了,配置是这样的
- CPU:2*Intel Xeon Silver 4110
- RAM:3*16GB DDR4
- SSD:无
- HDD:1*8TB
- GPU:1*NVIDIA Quadro P2200 5GB
于是我们就开始准备跑项目了,然而当时的我怎么也想不到,我以为很简单的跑项目,在这个过程中真的踩了很多坑,同时也学到了不少东西
开始跑项目踩坑
跑项目吗,那不十分简单,不就那几步吗
- 创建虚拟环境
- 安装所有依赖
- 下载数据集
- 在PyCharm里面设定训练参数进行训练
- 训练、测试
我一开始想,这也太简单了吧,跟着项目里的README.md
来,简直就是猴子都能学会,然而结果这一次跑项目真的让我刷新了认知,真的觉得有时候自己总是会把很多事情想得太简单了>︿<
装依赖
所以我们就开始浩浩荡荡的跑项目,先创建了一个虚拟环境,直接开始安装依赖,嘿,真的让我没想到,就是这第一步装依赖就让我踩到了坑啊
项目作者的测试环境是Ubuntu20.04
,python版本3.7,我想着反正python的包直接都可以用pip装,没问题,直接在Windows下跑吧,所以直接一顿操作猛如虎
1 | conda create -n sd python=3.7 |
以为就大功告成,结果过了一会儿看,好家伙,整个屏幕都是报错!!!
仔细一看,原来是一个叫做torchaudio
的包没有找到,我心里纳闷了,怎么回事,这个应该是和pytorch在一起的包啊,怎么会Not Found
呢,我又试了几次,甚至是新建了几个其他的python版本的虚拟环境,结果都是这个问题怎么回事呢?
我不甘心,直接去pypi的官网上找这个包,好家伙,不看不知道,一看吓一跳: 原来0.7.2这个版本的torchaudio没有Windows的包啊,只有Linux和macOS的!
但是这个依赖又是不得不装的,算了吧,还是老老实实和作者保持一致,用虚拟机创建一个Ubuntu20.04来跑吧(哭丧脸)
本以为换了Ubuntu以后问题应该就没了吧,还是和刚刚一样,创建虚拟环境,然后再安装依赖就好,结果又又出问题了!
这一次用的是python3.7,conda create -n sd python=3.7
,结果装依赖的时候居然又报错了,满屏的红色啊,看的我真害怕……仔细一阅读,发现居然是因为python版本太低了,导致有的依赖装不上去……那我就纳闷了,他们测试环境是怎么装上去的呢……好吧,没办法了,只能一个一个版本去尝试了,最后试了python3.8就可以,总算是可以了
其实装依赖的时候还遇到了其他很多报错,例如在装一些依赖的时候似乎需要现场带参数编译,所以在这个过程中还需要安装一些编译工具,例如
build-essential
,g++
,cmake
这样的依赖,报错了很多,好在最后都解决了。
依赖总算是装完了,然而我人确实快麻掉了下载并处理数据集
这一部分是我印象最深刻的,踩坑最多的一部分啊啊啊
本来我以为数据集不就是下载一些大文件,然后再将这些文件放到该放的目录吗,也不会很难的啊,最多就是多等一会儿而已,结果我真的发现,我懂得太少了,眼界真的很垃圾很垃圾……
项目开发者是提供了一个脚本来完成所有的文件夹创建和下载的,像这样一共又400多GB的数据需要下载,这也太大了吧!!!
好吧,不过既然开发者是这么写的,那就这么来嘛,直接wget下载就好,文件比较大,我就用screen命令让他后台运行就好,我就挂机几个晚上,下载完就好,我就安稳的睡觉了?? 结果,第二天早上起床一看,好吧,确实screen很有用,脚本都在运行着,wget一直都在下载,但是这20k的速度是什么鬼???好家伙,学校的校园网这么快,结果wget就只有几十kb的速度???我的心态是真的直接爆炸。
好吧,看来Linux下使用wget下载这样的大规模的文件好像不是特别稳定,所以我决定在宿主机下使用迅雷下载好了文件,然后再使用scp或者sftp这样的文件从宿主机传输到虚拟机内。
不得不说,迅雷下载文件是真的快,这接近500GB的文件下载的很快很快,一天不到就下载完成了,我就开始准备将文件传输到虚拟机内了。
我本以为
我把虚拟机新建了一块磁盘,分好区,做好文件系统就开始传输数据了,我用的是一个叫做WinSCP的文件,这样很方便,可以有一些图形化界面,帮助我正确的将文件放到正确的目录。
结果就很离谱,本来以为是宿主机到虚拟机很快就可以传过去,毕竟是一台机器中的内部带宽传输,应该会很快的,但是结果却不是很快,可能是因为scp的问题吧