文 | 卖萌酱

大家好,我是卖萌酱。

对一个深度学习从业者来说,无论你的场景是CV、NLP、Speech还是搜广推现金牛,手头使用最高频的工具莫过于深度学习框架,涵盖了模型训练、模型部署,乃至数据标注、数据清洗等环节。

站在2022年的视角下,回顾曾经被深度学习框架搞崩溃的瞬间,真心觉得现在的框架、工具链已经被打磨的太好用了。。

来吧,忆苦思甜开始!

框架选择:选择困难症患者的噩梦

卖萌酱在入门深度学习时,光在“我要学习哪个深度学习框架”的问题上,就精神内耗了接近一个月。当时框架选择方面的参考资料和分析帖比较匮乏,最后无奈之下,把当时流行的Theano、Caffe、TensorFlow、Torch(注意不是Pytorch)、Keras(当时还不属于TF)全都入门上手了一遍,最后竟然丧心病狂的觉得当时的TF是最好用的。

你以为卖萌酱从此变成了“TF高阶工程师”?

不不,就在卖萌酱好不容易把TF 1.x自认为玩的比较溜的时候,Pytorch的风就袭来了。在师兄师姐的强力安利下,又强行试了试Pytorch,结果由于当时还不成熟,踩了个框架层面的bug,在github上跟开发者反馈后等了好久也没解决,又切回去TF 1.x了。

就在卖萌酱终于要把精力聚焦在业务问题上时,TF2.0又出现了。更新按道理是个好事啊,然而,TF2.0与TF1.0的兼容性,几乎等于没有。。你坚持TF1.0,就要面临将来无人维护的必然结局。你要升级2.0吧,所有积累的TF代码全废了。

TF这点如果当年能像现在的飞桨PaddlePaddle一样,2.X强力兼容1.X,卖萌酱可能就不会抛弃TF了。。

最后,就在卖萌酱终于要彻底拥抱Pytorch的时候,又被大规模分布式训练和模型部署问题给折腾懵了。这时候有大佬跟卖萌酱说了一句:“搞分布式训练和部署,不应该优先考虑PaddlePaddle么?”于是,半信半疑的卖萌酱又跑去试了一把飞桨PaddlePaddle,嗯,真香。。果然从工业界打磨出来的深度学习框架最懂工业界的痛点。

6年的时间里,卖萌酱学习了7个深度学习框架,对耐心差的开发者来说频繁切换框架真的会非常崩溃。

听卖萌酱一句劝,2022年了,如果你要all in做学术,第一时间跑通Arxiv上昨天刚挂的论文中的开源代码,那就无脑选择Pytorch;如果你要all in工业界,既要训练爽又要部署省心,就无脑飞桨PaddlePaddle,尤其在国内,有中文团队本土支持简直不要太爽。

机制纠结:静态图的极客感还是动态图的傻瓜式?

在TF2.0出现以前,很多人都纠结过选择静态图还是动态图。虽然静态图跑起来真的快,但是debug起来又比较痛苦(虽然看起来很极客范),部署的时候又觉得香。当时就在想,如果有一个深度学习框架,能够编程和调试的时候用动态图,等到要大规模训练和部署的时候无需改代码就直接自动转静态图运行就好了。

卖萌酱这个愿望终于在不久前实现了!

飞桨PaddlePaddle从2.X的版本后,默认开启动态图模式进行模型开发、调试和训练,但是由于Paddle的API实现了“动静统一”,在开发调试完成后,可以直接通过paddle.enable_static()来切换到静态图模式进行模型训练加速和模型部署。简直就是现代深度学习框架的理想态好不好。

为啥我的任务跑的这么慢!GPU利用率这么低!

每次要尝试一个比较大胆的idea,除了要面临方法效果层面的挑战外,新模型新算法的训练、推理效率也经常出奇的低,甚至一些经典的模型,要做大规模数据推理时发现别人3天能跑完的任务,我却要跑7天,完全不知道到底是哪里拖慢了速度。

这时候可能就有老司机跑过来嘲讽:

卖萌酱,你这工程能力是不是不大行啊~~~

刚开始的时候,卖萌酱会尝试往代码里疯狂插入time.time()打印多个点的运行时间,不但插入费时费力,删除也费力,调试粒度还非常粗,有些时间是消耗在GPU上、CPU上还是内存显存通信上也搞不清楚。

不过,最近听飞桨PaddlePaddle框架团队的同学说,Paddle计划在即将发布的2.3版本中推出9个性能分析API,不仅非常易用,而且全面、专业,在训练、推理过程中收集、导出和统计性能数据,到时候定位运行效率瓶颈,实现极限的工程效率优化就不再是一个让人崩溃的事情了!

Sparse运算,深度学习框架之痛

你想象过,把一个dense Tensor替换成sparse Tensor后,模型计算速度会被整整拖慢一倍吗?

没错,卖萌酱几年前曾经为了优化巨型word embedding的显存占用,曾经尝试将其从dense Tensor转成sparse Tensor,结果,naive了。。。不仅没省下多少显存,整个计算速度变成了龟速,就不吐槽是哪个框架了。。。

其实不仅是词向量查询,sparse Tensor和sparse运算在相当多的深度学习应用场景中都有很强的需求。比如计算机视觉中是3D、点云数据类型也非常稀疏,在推荐、广告等业务场景也有大量的稀疏数据和稀疏运算。在这方面,主流深度学习框架要么支持差,容易出奇怪的报错,要么性能无法达到效果,数据处理、模型组网非常复杂,而且运算效率低下。

以至于,在涉及到大量稀疏运算的场景,有实力的大厂甚至搞起了自研框架,或从开源框架拉分支来重点优化稀疏计算。。

不过,这个多年未解的痛点,可能会在飞桨PaddlePaddle即将发布的2.3版本中被大大缓解甚至解决,飞桨PaddlePaddle 2.3对sparse tensor做了全面梳理,预计会新增11个sparse tensor运算的API,常见的COO、CRS格式的Sparse Tensor以及与Dense Tensor互相转换等基础功能可能会得到简洁易用且高性能的实现。

除了以上提到的新特性外,据传即将发布的飞桨PaddlePaddle 2.3还会有一系列充满想象力的重磅升级,比如将傅里叶变换放进神经网络?让科学计算甚至信号处理问题都能接入深度学习框架?

可以确信的是,AI的应用边界将被持续打破,AI落地的想象力也会因飞桨而变得不同。对框架底层突破与升级感兴趣的小伙伴,请扫描以下海报预约WAVE SUMMIT深度学习开发者峰会!

被深度学习框架逼疯的N大瞬间!何解?相关推荐

  1. 训练 GPT-3,为什么原有的深度学习框架吃不消?

    本文梳理了深度学习框架在支持大规模预训练模型时面临的技术挑战,以及当前各类框架的基本解决思路,帮助算法工程师对业界各类框架的分布式训练能力有更清晰的认知. 作者 | 一流科技CEO袁进辉 头图 | 下 ...

  2. 2021年了,该拥有自己的深度学习框架了

    2020国内深度学习框架领域百花齐放.各大公司也都陆续推出了自己的框架,大大推动了深度学习的发展.深度学习俨然已经渗入到我们生活中的每个角落,给生活带来极大便利. 深度学习能够针对生产生活所面临的复杂 ...

  3. 清华「计图」、旷视「天元」纷纷重磅开源,国产深度学习框架迎来高光时刻...

    来源:CSDN 本文约3141字,建议阅读7分钟. 本文介绍清华开源的深度学习框架 Jittor(计图) 引起了广泛关注,支撑旷视诸多业务和战绩的深度学习框架 MegEngine(天元) 也将在近日开 ...

  4. 国产深度学习框架迎来高光时刻,继清华 Jittor开源后,旷视「天元」纷纷重磅开源!...

    关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 1956年,美国的达特茅斯会议成为人工智能开启的标志性事件.同年,中国第一批自主制 ...

  5. 华为开源深度学习框架MindSpore背后的商业野心

    最近华为开源了深度学习框架MindSpore,一时成为了热点.我之前也点评了很多微软.Google.腾讯等厂商的框架,有些点评文章还被官方社区收录,今天为大家解析下MindSpore. 首先阐明下我个 ...

  6. 【华为云技术分享】Spark如何与深度学习框架协作,处理非结构化数据

    随着大数据和AI业务的不断融合,大数据分析和处理过程中,通过深度学习技术对非结构化数据(如图片.音频.文本)进行大数据处理的业务场景越来越多.本文会介绍Spark如何与深度学习框架进行协同工作,在大数 ...

  7. 超越 PyTorch,他立志做全球最有影响力的深度学习框架!

    近年来,深度学习发展火热,深度学习框架也成为了各大企业重点发展研究的方向.而他,一个"但行好事莫问前程"的创业者,却立志建设全球最受尊重的 AI 企业,他的底气在哪?一流科技 On ...

  8. 手撕深度学习框架,原理很简单

    2020国内深度学习框架领域百花齐放.各大公司也都陆续推出了自己的框架,大大推动了深度学习的发展.深度学习俨然已经渗入到我们生活中的每个角落,给生活带来极大便利. 深度学习能够针对生产生活所面临的复杂 ...

  9. 盘一盘 这些深度学习框架够你用一年

    2020国内深度学习框架领域百花齐放.各大公司也都陆续推出了自己的框架,大大推动了深度学习的发展.深度学习俨然已经渗入到我们生活中的每个角落,给生活带来极大便利. 深度学习能够针对生产生活所面临的复杂 ...

最新文章

  1. 【内网穿透】生壳SSH映射 for Linux 使用教程
  2. mysql 文件放网络盘_MySQL InnoDB的磁盘文件及落盘机制
  3. 手把手教你用Python实现“坦克大战”,附详细代码!
  4. pytorch实现dcgan_PyTorch版本DCGAN实现的注解
  5. Get IAT Table
  6. 服务器芯片组 硒武,不到两个月的服务器,武器炼化出这属性是什么水平?
  7. 学科竞赛管理系统服务器错误,学科竞赛管理系统.docx
  8. 甘超波:NLP潜意识和意识
  9. 调用so库文件以及里面的方法
  10. 观察者模式实际应用场景「扩展点实战系列」- 第439篇
  11. 2021-18.面向对象进阶
  12. NSSCTF web题记录
  13. XSS朝花夕拾代码简单分析(XSSgame)
  14. 什么是CV2以及如何安装?
  15. 起来,起来........
  16. 文本文件和二进制文件详解(转)
  17. hdu4526威威猫系列故事——拼车记
  18. ESI ProCAST v2019.0.Suite.Win64 Linux641DVD
  19. 粉笔黑板教师节PPT模板
  20. 希尔排序(分组插入法)

热门文章

  1. 对于斗地主残局,用python实现solver
  2. C++小练习-求长方体表面积(同名覆盖)
  3. 幼儿园计算机教室管理规则,幼儿园微机室管理制度
  4. “人在美国刚下飞机”,IP属地显示湖南
  5. c# wpf 试题_C#/WPF 面试题(Microsoft, Morgan stanley)
  6. DVWA暴力破解LOW级别 爆破时间过长 字典
  7. Keil软件勾选框(复选框)不显示勾号,而是填充实心黑色,导致软件不能用。
  8. 你好,我的Dev-C++ 5.15被烦人的360杀毒软件给删了,放到白名单里之后就360竟然把所有的浏览器全部删掉了,请问怎么办
  9. access 战地1不加入ea_《战地5》即日起加入EA Access免费阵容
  10. java 1.7 64下载_jre1.7 64位官方下载