记一次跑项目的经历
in 乱折腾 with 0 comment

起因

最近在实验室,有实验室的同学需要跑一个透明度检测的开源项目,好像是这样的吧,好像就是和抠图有点关系,是通过大量数据集来训练出一个AI模型,然后最终实现准确抠图,然后就放在了实验室的一台工作站上跑(当然要放在服务器或者工作站上跑,不然连续开几天,谁扛得住啊哈哈哈)了,配置是这样的

  • CPU:2*Intel Xeon Silver 4110
  • RAM:3*16GB DDR4
  • SSD:无
  • HDD:1*8TB
  • GPU:1*NVIDIA Quadro P2200 5GB

于是我们就开始准备跑项目了,然而当时的我怎么也想不到,我以为很简单的跑项目,在这个过程中真的踩了很多坑,同时也学到了不少东西

开始跑项目踩坑

跑项目吗,那不十分简单,不就那几步吗

  1. 创建虚拟环境
  2. 安装所有依赖
  3. 下载数据集
  4. 在PyCharm里面设定训练参数进行训练
  5. 训练、测试

我一开始想,这也太简单了吧,跟着项目里的README.md来,简直就是猴子都能学会,然而结果这一次跑项目真的让我刷新了认知,真的觉得有时候自己总是会把很多事情想得太简单了>︿<

装依赖

所以我们就开始浩浩荡荡的跑项目,先创建了一个虚拟环境,直接开始安装依赖,嘿,真的让我没想到,就是这第一步装依赖就让我踩到了坑啊
项目作者的测试环境是Ubuntu20.04,python版本3.7,我想着反正python的包直接都可以用pip装,没问题,直接在Windows下跑吧,所以直接一顿操作猛如虎

conda create -n sd python=3.7
conda activate sd
pip install -r requirements.txt

以为就大功告成,结果过了一会儿看,好家伙,整个屏幕都是报错!!!
仔细一看,原来是一个叫做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的问题吧

Responses