2021年,TensorFlow VS PyTorch 又有怎样的进展了?

机器学习实验室

共 2615字,需浏览 6分钟

 ·

2021-04-13 16:22

作者丨思想火龙果、小小将、夕风Twilighty
来源丨知乎问答
转自丨极市平台
本文仅供学术参考,如有侵权请联系做删文处理。

导读

 

深度学习发展至今,深度学习的框架也出现了百花齐放的局面,16年出世风靡世界的TensorFlow和稍晚一年却隐隐有盖住其风头的Pytorch,现在两个的地位有什么变化吗?

回答链接:https://www.zhihu.com/question/452749603

# 回答一

作者:思想火龙果

来源链接:

https://www.zhihu.com/question/452749603/answer/1819357374
pytorch统治学术圈。现在各大顶会开源代码没有一丝丝的tensorflow2.x,就连谷歌家自己的论文也是只有torch和jax。零零星星一些tf1的开源代码。

tensorflow2.x难用吗?真不难用的,基本就是在用keras,tf.data pipeline 和 tf.distribute 用起来真的省心又快。问题就是现在tf2没人用啊,也不是不好用,就是你有的pytorch也有,pytorch用得已经好好的了为啥还要换呢?然后你又再搞一个新库,jax,而且还是用tensorflow写的,而且还不是像keras,sonet一样能跟tf混着用的  ,然后google research开源代码要不是pytorch就是jax,连自家都不用别人会用么。

谷歌真的挺迷惑的,把keras合并了不去好好搞keras推广keras,可能再过两年 import tensorflow as tf 直接报warning “tensorflow is deprecated, please use pytorch instead”


# 回答二

作者:小小将

来源链接:

https://www.zhihu.com/question/452749603/answer/1822694849
变化太大了,今年面试的实习生,当问他们常用的深度学习框架时,他们清一色的选择了:PyTorch。

我个人认为几个原因导致地位逆转:
(1)PyTorch的易用性更好(当一个框架本身能衍生很多上层框架时,你就能知道它本身是多么不友好了,说的就是TF),而且生态已经起来了,大部分论文开源都是用PyTorch;
(2)TF2看起来并不太成功,反而破坏TF1的生态。TF1和TF2往往混杂在一起,让人摸不着头脑。
(3)关于大家最担心的部署优化问题,其实目前PyTorch也在不断提升这块的劣势,目前Torch->ONNX->TensorRT已经相对成熟了,其他的端侧框架如ncnn也支持torch了。当然动态图比静态图确实要多踩一点坑,但带来的可能是模型迭代效率的提升。
(4)关于分布式训练,TensorFlow可能优势更大,但可能大部分人最多跑个单机多卡就够了,所以性能上不会差距太大,而且分布式训练还有很多第三方框架来支持比如horovod。而且本身PyTorch自带的DDP也不差。

其实我从16年开始接触深度学习,最早学习的框架是theano,当TensorFlow出来后,theano的使用者就慢慢转向了TensorFlow,到19年我又开始转向PyTorch。每次转变后,我只能说一句话:真香。

声明:我的观察只限于在比较卷的CV领域。

# 回答三

作者:夕风Twilighty

来源链接:

https://www.zhihu.com/question/452749603/answer/1823164065
全球范围看,经过16-19年这三年的发展,PyTorch在学术圈的「垄断」地位基本已经站稳。这一方面得益于PyTorch一开始主打的动态建图,便于实验室的学生们快速迭代模型,试验想法是否work;另一方面也来自于PyTorch吸收了TF 1.x版本中的某些优点,doc做的也不错,便于初次接触机器学习和深度学习的新人上手,这一点的重要性往往容易被忽视。

TensorFlow在国内目前处在一个相对尴尬的境地,TF 1.x系列面世较早,2015年以及之前就深耕深度学习的程序员和在校同学,大部分用框架时都会从TF(与TF的雏形,即更早的theano)入手。因此在学术界、工业界都有很深的积淀,工业界由于项目更「重」,牵一发而动全身(或者应该说屎山太多),因此目前很多项目仍然停留在TF 1.x(1.1x)上面。因此要说TF快凉了,也不客观。但TF目前面临一个比较尴尬的问题,Google强推TF 2.0版本,但TF 1.x和2.0版本之间的API差异实在不小,导致doc的阅读成本和版本适配成本都相当高。

至于学术界,PyTorch在国内学校也广受欢迎,TF 2.0我知道有一小部分实验室在用。但总的来说 TF 2.0在这方面相对于PyTorch确实没有优势,实验室刷metric的场景下,大家也基本没有太多机会发挥出TF在分布式上的一些buff。而与此同时,PyTorch的生态建构肉眼可见地渐入佳境,TorchVision和TorchText两个库都做的相当漂亮,整体Pipeline的舒适度谁用谁知道。TensorFlow显然也明白自己要补齐什么短板,Keras可以认为就是这样的尝试吧,但Keras的封装做的让人感觉总差点味道。至于MXNet、PaddlePaddle之流,在国内的「市场」确实很小。PyTorch目前的确在蚕食TF的天地,如果在模型部署方面有更稳健的突破(包括对底层C++的某些开放和优化),那么TF确实要做出一些大的改变来应对了。

往期精彩:

【原创首发】机器学习公式推导与代码实现30讲.pdf

【原创首发】深度学习语义分割理论与实战指南.pdf

 谈中小企业算法岗面试

 算法工程师研发技能表

 真正想做算法的,不要害怕内卷

 算法工程师的日常,一定不能脱离产业实践

 技术学习不能眼高手低

 技术人要学会自我营销

 做人不能过拟合

求个在看

浏览 31
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报