Py学习  »  机器学习算法

实验室一块GPU都没有!怎么做深度学习?

深度学习这件小事 • 2 年前 • 304 次点击  

来源|知乎
转自 | CVer   编辑|Amusi
https://www.zhihu.com/question/299434830
本文仅作为学术分享,如果侵权,会删文处理


   实验室一块GPU都没有怎么做深度学习


没错,一块GPU都没有,今年突然新研一的学生都要搞深度学习了,老师还催着有想法实现一下,硬件都没有如何实现呢



作者:目楽
https://www.zhihu.com/question/299434830/answer/1329278982

Google colab应该是非常不错的选择,长期免费,褥资本主义羊毛,我们绝不手软2333,下面是一个非常简单的三步上手使用教程


首先是介绍(甚至可以跳过):


它的配置大概是15g硬盘(Google drive的云空间)当然各种库文件是不算在内的,你可以把它理解成一个数据存储空间,内存大概是12gb左右,gpu目前有4种,p100,T4,P4,K80,内置tensorflow以及pytorch的完整库文件,如果想用其他深度学习库,一个pip就可以搞定,基本可以满足大部分项目或者比赛的使用体验。


比如之前参加的,情绪识别比赛,数据集大概是10w条文本,使用bert之类的超大预训练模型,也能保证正常运算,不至于内存外存溢出,显存也是8gb-16gb不等


对于colab使用其实只需三个步骤就可以轻松上手:


使用前的必备条件:

一个可以上Google的工具,这里的工具一般有按时间计费还有按流量计费(当然也有各种免费的)我推荐用流量计费的工具比较划算。


Google账号,这个有手机有上一个工具就行。


1. 创建一个colab文件


https://drive.google.com/drive/my-drive


进入Google云盘后



如上图所示,红框是新建文件(比如colab文件)绿框是对已有文件,共享文件之类的查看,黄框是储存空间显示,蓝框是存储空间文件可视化。



在使用上,点击之前图里的新建,然后点击更多,再点击colab就可以新建文件了,当然如果是第一次使用,可能存在colab选项不显示的情况,点击关联更多应用即可。



点击colab选项后会跳转到该页面,它与jupyter基本一模一样,黄框是输入代码段,绿框是连接服务器,白框是文件目录,红框是colab文件名,蓝框是使用选项。


2. 配置colab环境(无需任何代码)



使用第一步,选择gpu,点击前一张图蓝框里的修改,再点击笔记本设置就可以配置gpu了。


蓝框点击选择gpu即可



然后点之前绿框的连接即配置好环境


点击图中红框,再点击蓝框即可将Google drive的云空间连接起来



这时就有了drive文件夹

现在配置已经全部完成


3. 简单的上手与配置



既然已经配置完了,那么就上手使用一下吧,看看我们配置的gpu会是哪一个

很幸运是P100,拥有16g显存,这块卡京东大概3w RMB。


这句其实就是把根目录定位到drive下,这样你的文件和你在Google drive页显示的是相同目录


4. 后记


一些要点:

1. 如果不知道该写一个什么样的项目,下面这篇文章是一篇关于nlp当中情绪识别分类项目的实战,代码已放到github上,包括lstm,bert,xlnet等多种分类模型的使用。(路过别忘了点个赞,github加个star吧)

https://github.com/SuperpeakZhou/emotion_reg


2. 对于colab使用的一些窍门:

  • 如果gpu不是p100而是k80,两者计算速度还是有明显差距的,可以选择再新建一个colab文件,一般两三次就可以开到p100了。

  • 如果Google drive的云空间不够了,建议不要买,因为真的很贵,你可以选择更明智的方式,再弄一个Google账号2333,因为drive互相分享文件是非常便捷的,且分享文件是不占据当前用户存储空间。

  • 如果gpu资源用尽,基本上如果你天天使用10小时以上colab,可能就会面临只能用cpu,gpu用完的场景,需要1天时间恢复,解决方案和上面一样,再弄一个谷歌账号。


具体想到就这些,之后再补充。



作者:snowhou
https://www.zhihu.com/question/299434830/answer/1231487151


你这一块卡没有做深度学习不太现实,最好说服你老师最好买几张卡(1080ti)以上,毕竟也不是你一个人在用。这是其实是最划算的方式,在网上无论是免费还是付费的资源,终究不是长远之计,而且有一定的使用限制。争取不到卡的话还是乘早弃坑吧,深度学习不用大量的卡"喂",很难研究出什么东西。



分享下我自己的"卡"路,你可以参考下我的"贫民"历程。


一开始有4块1080,和师兄们一起用,当时刚开始入门,也就跑下 cs231n 和当时还是caffe 版本的 R-CNN,电脑系统太老了caffe总是出问题,也在网上用过服务器(国内付费的,谷歌云的300美金,Colab 等),也就随便跑了跑。后来随着 detectron 等的开源,发现 1080 显存太小了,而且速度太慢,只能跑 VOC,跑 COCO 不太现实,一度很奔溃,想着是不是要换个方向。


以后对老师软磨硬泡,加了台 双2080ti  的机器,终于可以跑 COCO 了,虽然训练时间还是略长,不过已经在接受范围内了。


后来机缘巧合下发现了些免费的平台(百度 AIStudio等),第一次用到 V100 ,爽过吸大麻。多注册了几个账户,终于不在担心算力的问题,就这样开始了升级打怪之路,跑跑论文代码,打打比赛,好多任务都可以并行展开了,这时候就相当舒服了,没有了算力的约束,成长起来也是很快的。假如没有了这些免费平台,怕不是要在入门的地方原地踏步了。


其实缺少算力还可以去企业实习,不过如果基本的 1080ti 都用不上,大概门都入不了,公司估计也进不去。所以还是最开始的话,尽早联合你同届同学说服老师买卡,不然还是乘早弃坑。自己学(无人指导) + 没卡 = 天坑 ️,切记!




作者:Albertforgcn
https://www.zhihu.com/question/299434830/answer/1042475523


不知题主是硕士还是博士,作为一名末流双一流B类高校土博,我来交流交流我的经验吧。先介绍背景,导师是软件工程专业出身,主要在外面开公司做生意。所以实验室别说是GPU,连一台电脑都没有。所有硕士博士自带笔记本,只有去他公司实习的学生才能在公司用电脑。一开始导师叫我去给他做一个纵向项目,经过我的分析,此项目工程性太强,用的都是成熟的技术,不太好写SCI论文,况且甲方还要求帮他们写SCI,此坑很深,我果断通过我的人脉关系给导师介绍了个经费为此项目两倍的另外一个项目,但条件是放过我,我自己搞,导师同意了,但是也不会给我经费支持,他就把此项目交给新来的一个博士学弟做。于是没有其他杂事的干扰,我就自己研究深度学习。选这个方向是因为好发论文,我们的毕业要求是四篇SCI,其中有一篇必须中科院二区。没有资源怎么办,找资源呗。我同期一个博士,是其他研究所过来的,已经有副高级职称,比我年长很多,可称之为老大哥。老大哥原来学的微电子,由于跨专业考的计算机,编程不是很熟练,没关系啊,我熟练啊,他的实验我就帮他写代码,他在他原单位就有一台拥有着四块RTX2080ti的计算机,我就借用着他的机器做实验,当然他家人病了我也介绍了一些医疗上的人脉给他免费看病。另外,给我导师项目的那个人脉关系也是我的好兄弟,我帮他联系了另一个学校读博士,也帮他解决了一些家人工作安排的问题。他在另外一个研究所工作,有一台2张rtx titan的机器可以给随时用。有了这两台机器,我现在已经中了一篇二区,还有两篇一区在投,第四篇实验也做完了,着手准备写。总之,期间也通过人介绍认识了一些会写文章的大牛,给予了充分的指导,写论文的水平在稳步提高。非常感谢在我科研道路上帮助过我的人,老大哥,好兄弟,还有几位大牛都是我的人生导师,当然也包括我导师在内,至少他没有过多干涉我的研究方向和内容,这点我也很感激他。


所以总结一下:


1、平时多积累人脉,力所能及的事能帮忙就帮忙,而且帮忙一定要帮雪中送炭的忙,而不是锦上添花的忙。当然选择帮忙的对象也很重要,这个就是另外一个话题了。


2、有啥样的材料就做啥样的菜。比如我借用的两台机器比不上有些大组几十块GV100的显卡,我去参观过,真的是一层楼都是显卡。于是我选择做的方向之一是如何在有限的计算资源下提高模型的准确率,也就是说要在保证准确率的条件下轻量化模型,这样就不会用到太多的计算资源,虽然是有些被逼无奈。


3、跟导师谈判一定要把对方当成商人,尤其是计算机专业,基本上都在外面有产业,你要是把他当老师来沟通,跟他讲师德师风什么的,他会觉得你就是个SB。你要是跟他进行利益交换,只要不是个特别轴的导师,他基本上都会同意。所以切记不要用学生思维去想这件事,我们需要的是解决眼前的问题,尽快毕业,而不是在实验室跟他撕逼。


4、大牛的指导很重要!很重要!很重要!很多东西你自己搞没什么进展,但是经过大牛给你点一下,一点就通。我最近正在拉关系套近乎,看能不能让大牛给指点指点投顶会。怎么认识大牛且他愿意帮助你又是另外一个话题了。


5、最后的一点,搞科研智商情商都很重要,尤其是读博士,就像是人的两条腿,断一条就一瘸一拐的走不顺,断两条腿你就只能爬着走了。智商能够帮助你抓住idea,做实验,推公式;情商能够帮助你获得很多外围资源和支持。


总之,现在读了快三年了,一路下来很辛苦,还有家里的事情要处理权衡,尤其是第一篇论文投出去没消息,第二篇论文被大牛批评的体无完肤不断修改没有尽头的时候,当时感觉真的是邻近崩溃了,还好努力没有白费,至少第一篇录用了,后面不断努力我相信也会水到渠成的。这是我的经验,和你分享分享。



作者:叶小飞
https://www.zhihu.com/question/299434830/answer/1709239142

看了很多大佬提出了如何白嫖云端GPU等巧妙的技巧,但我的建议是勒紧裤腰带,给自己攒一个带GPU的笔记本电脑。理由如下:


  1. 科研虽然有老师带领,但终究是给自己做的。你买了这笔记本电脑后可以随时随地写深度学习代码,训练自己的模型(根据你的描述,我不认为你们实验室的项目需要很强的算力,单块性能不错的GPU估计基本满足),基本不受网络、地理限制,能更快地推进自己科研进度,尽早出论文。

  2. 鉴于你正处于深度学习入门阶段,有一台带GPU的私人笔记本可以大大加速你的学习进度。一般入门者都会上一些深度学习的课程,许多课程设置的作业往往需要你至少有一块GPU来完成。同时,由于这笔记本是你私人产物,你可以用来开发一些业余有趣的项目,参加Kaggle比赛等等,从长远来看,它绝对会为你创造额外的价值。

  3. 云端服务器一般用来做大规模的训练,prototyping最好用的永远是本地的机器。假设你发现代码有问题,要一步步debug你的代码,查看每个变量的内存,结果你发现只能面对冰冷的没有UI的console,或者卡的要死的云端VM,亦或者还要排队等GPU资源,你会不会感到很抓狂?这就是为什么在知名的实验室或者大厂里,标配是人手一个带着Gpu的workstation做算法原型 + 大型的gpu cluster做大规模训练。

  4. 之所以建议买笔记本而不是workstation, 主要是因为workstation体积太大,要么放到实验室里用,要么放在家里用,使用场所受到很大的限制。而且目前来看笔记本的性能应该足以满足你的需求。


写在最后,当年我暑假在美国西北大学mHealth实验室做科研的时候,实验室里一块GPU都没有,我就是咬紧牙买了一台MSI笔记本(自带一块1060),后来这笔记本立下了汗马功劳,我有两篇论文的实验都是在上面跑出来的。



作者:张航
https://www.zhihu.com/question/299434830/answer/1693216384


这个问题,5年前我也想问。


还记得 CVPR 2015 开完会回来,感觉大家都在讨论 deep learning,convolutional neural network,当时觉得应该试试。我就用网上开源的 LetNet 在笔记本上训练了一下我们当时自己采集的数据集,结果完爆我们费尽心思手动设计的传统方法。我当时就鼓动我老板,让她给实验室买个带 GPU 的机器。结果她语重心长地说: "你看实验室这些旧电脑,我之前给每一个 PhD 学生都配一台电脑,结果没过多长时间,大家都不用了,只用自己的笔记本,所以不要把钱花在硬件上"。我竟无言以对。。。


但是 Research 还是要做,我就一狠心买了个 Titan-Z GPU,大概花了博士一个月的工资,然后就有了下面这张图:



那时候还没有 eGPU,我就自己搞了个解决方案,用一个外置台式机电源带动 thunderbolt to PCIe 的转接器。有了这些“装备”之后,我就开始了调参的不归路。


比较早入坑,16 年用 MatConvNet 复现了一下 ResNet ,然后用 ResNet 提了下 feature,比较容易水 paper。在 NVIDIA 实习的时候,听说可以自己写 proposal 向 NVIDIA 申请免费的 GPU,之后就每年都申请一块,直到毕业。在发了几篇 deep learning 的 paper 之后,我老板也开始换方向了,而且给组里的学弟们买了8卡的GPU Server(当时是我毕业前帮老板挑的机器,可惜自己没有用到)。


很难想象,当初如果自己没有自费买 GPU,现在我会在哪里,在做什么。如果客观条件不好,尽量想办法克服一下,机会要好好把握


技术交流群邀请函



△长按添加小助手

扫描二维码添加小助手微信(ID : HIT_NLP

请备注:姓名-学校/公司-研究方向-城市
(如:小事-浙大-对话系统-北京)
即可申请加入深度学习/机器学习等技术交流群
为您推荐

思考丨到底什么叫算法工程师的落地能力?

Transformer模型有多少种变体?看看这篇全面综述
从SGD到NadaMax,十种优化算法原理及实现
各种注意力机制的PyTorch实现
你写的ML代码占多少内存?这件事很重要

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/117195
 
304 次点击