从分布式计算的角度看pytorch和TensorFlow哪个更优?

发布时间 2023-12-21 00:20:09作者: Angry_Panda

背景:

pytorch框架是一个从学术圈出来的框架,因此pytorch并不原生支持分布式计算,而且在大模型火爆的今年以外好像在深度学习领域使用分布式计算的场景确实不多,所以pytorch并不原生支持分布式计算的事情好像也并无大碍,而且pytorch可以通过安装第三方库的方式实现同步形式的分布式计算。


Tensorflow是由Google推出的,诞生之日的定位就是工业界(不像pytorch最初的定位是科研领域),因此Tensorflow本身属于工业界级的产品,Tensorflow有有着更快的计算性能(在2020年前pytorch没有成为AI领域排名第一的框架之前由于优化不足的问题导致计算性能明显差于Tensorflow,但是在大规模优化后pytorch即使使用动态图的构建方法却达到与TensorFlow计算性能持平甚至是超越的水平)。作为工业产品的Tensorflow更加的鲁棒,稳定,支持的功能也更多,同时Tensorflow有着原生的同步形式的分布式计算能力以及异步形式的分布式计算能力,而Tensorflow的分布式计算通信框架使用了Google公司自研的gRPC (Google Remote Procedure Call)协议,因此即使是AI领域发展到了今天Tensorflow依旧是唯一一个原生支持异步形式的分布式计算的框架。


正题:

在2020年后,pytorch的计算性能追平Tensorflow后凭借更加pythonic的编程风格,以极强的易用性带来数倍于Tensorflow的编程效率,而Tensorflow由于过多的冗余API,数不清的扩展框架,繁琐的编码风格,以及大幅度更改API后推出Tensorflow2.0后彻底被大多数的工业界企业和高校及科研院所放弃。除了一些由于历史原因一直使用TensorFlow的项目外大多数的AI项目均改换pytorch框架,这时候的AI领域势必要面对的一个问题就是pytorch没有原生分布式计算能力的这个问题,即使使用第三方框架后pytorch依旧不具备异步形式的分布式计算能力,而作为唯一具备该能力的计算框架Tensorflow又被弃用了,而分布式计算又是工业级项目的必备能力,那么这个同步形式的分布式计算真的没有问题吗?


答案:

在最开始的时候,大多数的人们确实认为同步形式的分布式计算是不如异步形式的分布式计算好的,因为异步形式具备更高的计算效率,尤其在当时大多数算法模型其实并不复杂,所以使用异步形式的分布式计算往往可以得到更好的算法性能;但是,随着算法模型的复杂化,数据和模型的大型化,人们发现使用异步的分布式计算虽然有着更好的计算效率,但是在收敛性上往往不如同步式的分布式计算,因而最终的算法性能也是以异步计算的更优,由此之后TensorFlow的那个独有的分布式计算优势(唯一具有异步通信能力的分布式计算框架)也就不再是优势了,至少对于大多数问题时该种分布式通信方式已不具备优势了。


可以说,在同步式分布式计算的大背景下,Tensorflow与pytorch相比已经不具备在分布式计算上的能力了。至少在当前的AI问题背景下,使用同步通信的分布式计算要优于异步通信的分布式计算。