前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >计算资源有限的人如何在深度学习领域成长?

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

作者头像
AI研习社
发布2019-09-17 17:22:08
9270
发布2019-09-17 17:22:08
举报
文章被收录于专栏:AI研习社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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-09-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI研习社 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
NLP 服务
NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档