专栏首页AI研习社计算资源有限的人如何在深度学习领域成长?

计算资源有限的人如何在深度学习领域成长?

对 AI 学习者而言,算力资源受限算是最让人头痛的问题之一——面对大规模节点的需求,CPU和内存却对问题处理规模表示无能为力。没有BAT这种大企业作为靠山的我们,可以如何进行“自救”呢?针对这个问题,我们在知乎上整理了几个比较具有代表性的回答,希望能对大家有所启发。

@ 一个旅人

结合自己学习Deep Learning以来的经验来谈谈自己的感受吧,实验室刚开始也只有单卡的机器,现在工作了有机会使用更多的计算资源。

如果从学习的角度上来说,一般的机器学习模型或者深度学习模型单卡还是能够支撑的,视觉领域的不是特别了解,在自然语言处理领域常见的任务(情感分类,序列标注,QA,NMT除外吧),常用数据集单卡都是可以应付的。最近比较大的语言模型,ELMo单卡也是可以训练的,只是时间长一点,BERT单卡调用预训练的模型也没有问题。

从做科研的角度来说,个人觉得不要执着于去做和工业界去拼计算资源的问题,BERT是个好东西拿过来用就可以了。在NLP领域,BERT出来之后几乎让单卡刷state-of-the-art变成了很困难的事情,其实这也不是坏事,学术界在有限计算资源的情况下应该更集中的去解决那些deep learning 中fundamental的问题,至于那些需要大量计算资源的的工作就交给工业界吧。

知乎回答链接:

https://www.zhihu.com/question/304263105/answer/617594784

@ Wendell

现在Google Colab上有免费的TPU啊,知道TPU有多快么?常规训练一个Resnet50只要10个小时,和8卡V100的速度相当。

当然Colab的TPU有些坑要爬,说几个最关键的,以免大家浪费时间:

1. 除了Mnist之类可以缓存的小数据集,必须用Google Cloud Storage,否则IO会是瓶颈

2. 有些ops被硬件限制了,自定义ops肯定都不行了,因为backend不是CUDA,Tensorflow自己的很多API也不能用,比如tf.images里头的很多API,所以ROI Align之类的ops都无法实现,也就是Two stages的物体检测算法都无法实现(官方也只给出了retinanet的实现)

3. Notebook经常断线,我准备写个浏览器脚本来实现自动重连。

4. Tensorflow

补充一下:要是觉得Colab不好用,直接花钱用TPU也不贵,抢占式的TPUV2 8核,一个小时只要1.35美元,性价比比GPU高太多了,想跑超大规模的模型,还可以选择TPUV3,TPUV2 32核、 128核、256核。。。

20190102更新:发现最近官方复现了Mask RCNN,使用高级API实现了ROI Align。

另外说明一下为什么必须用GCS:TPU的运作方式和GPU不同,GPU是直接挂载到VM上,然后你就可以像本机使用GPU一样用就好了,TPU是有TPU Server的,VM并不能直接访问TPU,而是在VM上编译好XLA,然后丢给TPU Server,所有的数据读取、预处理、和TPU通讯等,都是在TPU Server上运行,所以你如果把数据放在VM上,IO必然是瓶颈。这也是为什么不管你跑多大的模型,Colab配给你的VM性能都是够用的。

知乎回答链接:

https://www.zhihu.com/question/304263105/answer/543461352

@ 齐国君

在校学生就想办法进有"真正"做深度学习实力的实验室;也工作的人就想办法跳到这方面的岗位上。

这些不是重点,重点是你怎么学、怎么提高对问题和模型的理解?这里的误区是“计算资源有限”。即便在大公司和大实验室,计算资源都不是无限供应的。很可能的情况是你要和其他组其他同学和同事去抢。

所以关键是,你怎么高效地使用有限的计算资源。很多同学容易反的错误是一上来就从Github上下载个模型来跑。跑着跑着就变成了调参,最后模型的性能是上去了,但啥也没学会。

正确的姿势是要搞清楚这个模型或方法的关键是什么?和其他方法比有什么优点,解决了什么问题?但更重要的是搞清楚它不能解决什么问题

研究一个模型或者方法的过程,往往最重要的是找到它不能做什么。一个模型或者方法不可能什么问题都解决的(参考no free lunch)。用这个模型的过程,其实就是要发现这点;搞清楚了这点,就知道了它的适用边界,就能更有效的在有限计算资源下高效的使用它,而不是把资源浪费到它不适应的情形和数据上。

所以高效使用有限计算资源的方法就是反着用,用有限资源去找到模型的适用范围的边界。这个比重复的去在已经反复被证明适用的范围(数据、场景)上浪费有限资源获得的提高要大得多也快得多。

更进一步,如果有办法改进这个模型,并把它的适用边界进一步扩展,那么恭喜你,你就真正掌握了这个模型了。

知乎回答链接:

https://www.zhihu.com/question/304263105/answer/560291142

本文分享自微信公众号 - AI研习社(okweiwu),作者:知乎

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-09-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 谷歌硬件工程师揭秘,TPU为何会比CPU、GPU快30倍?

    在谷歌发布TPU一年后,这款机器学习定制芯片的神秘面纱终于被揭开了。 昨日,谷歌资深硬件工程师Norman Jouppi刊文表示,谷歌的专用机器学习芯片TPU处...

    AI研习社
  • 博客 | 度量学习总结(二) | 如何使用度量学习处理 高维数据?

    本文原载于微信公众号:磐创AI(ID:xunixs),欢迎关注磐创AI微信公众号及AI研习社博客专栏。

    AI研习社
  • 为什么你需要改进训练数据,如何改进?

    Andrej Karpathy 在他的 Train AI 演讲中展示了这张胶片,我非常喜欢。这张胶片完美地揭示了深度学习在研究与生产间的区别。通常来说,学术论文...

    AI研习社
  • python groupby函数

    用户5760343
  • 真的轮到你来说“一年的SQL经验重复了十年而已”?答对这四题再说

    信息系统还停留在 Visual FoxPro 的那个年代,能独立写个 MIS 系统就有人要你的那个年代。我毕业了,在一家电子集团公司(国内第六)做 MES 开发...

    Lenis
  • 平面四节点等参元(Q4)有限元程序算例

    如图所示悬臂梁,假定为平面应力条件。材料弹性模量E=1e6MPa,泊松比v=0.3,板厚度t=10mm,长度l=400mm,高h=100mm。划分8个单元,分别...

    fem178
  • go 并发处理脚本

    最近经常涉及到脚本的编写。本身项目数据量较大,所以经常编写的脚本需要高并发,干脆就提取出来。

    老脸一红
  • 他来了,他终于来了,全网最全分布式解决方案

    相信很多小伙伴都了解过分布式事务或者在项目中也接触到了分布式事务问题,但是基本对分布式事务的认识都是片面的,今天借此给小伙伴们分享我整理的工作中比较常见的分布式...

    IT大咖说
  • Linux系统下的用户密码设定梳理

    随着linux使用的普遍,对于linux用户以及系统的安全要求越来越高,而用户密码复杂程度是系统安全性高低的首要体现。因此如何对linux下用户的密码进行规则限...

    洗尽了浮华
  • 浅谈代码覆盖

    在做单元测试时,代码覆盖率常常被拿来作为衡量测试好坏的指标,甚至,用代码覆盖率来考核测试任务完成情况,比如,代码覆盖率必须达到80%或 90%。于是乎,测试人...

    大闲人柴毛毛

扫码关注云+社区

领取腾讯云代金券