从分布式计算的角度看pytorch和TensorFlow哪个更优?
背景:
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问题背景下,使用同步通信的分布式计算要优于异步通信的分布式计算。
从分布式计算的角度看pytorch和TensorFlow哪个更优?的更多相关文章
- pytorch和tensorflow的爱恨情仇之基本数据类型
自己一直以来都是使用的pytorch,最近打算好好的看下tensorflow,新开一个系列:pytorch和tensorflow的爱恨情仇(相爱相杀...) 无论学习什么框架或者是什么编程语言,最基础 ...
- pytorch和tensorflow的爱恨情仇之定义可训练的参数
pytorch和tensorflow的爱恨情仇之基本数据类型 pytorch和tensorflow的爱恨情仇之张量 pytorch版本:1.6.0 tensorflow版本:1.15.0 之前我们就已 ...
- pytorch和tensorflow的爱恨情仇之张量
pytorch和tensorflow的爱恨情仇之基本数据类型:https://www.cnblogs.com/xiximayou/p/13759451.html pytorch版本:1.6.0 ten ...
- pytorch和tensorflow的爱恨情仇之参数初始化
pytorch和tensorflow的爱恨情仇之基本数据类型 pytorch和tensorflow的爱恨情仇之张量 pytorch和tensorflow的爱恨情仇之定义可训练的参数 pytorch版本 ...
- Android IOS WebRTC 音视频开发总结(四八)-- 从商业和技术的角度看视频行业的机会
本文主要从不同角度介绍视频行业的机会,文章来自博客园RTC.Blacker,支持原创,转载必须说明出处,欢迎关注个人微信公众号blacker ----------------------------- ...
- 【阿里云产品公测】以开发者角度看ACE服务『ACE应用构建指南』
作者:阿里云用户mr_wid ,z)NKt# @I6A9do 如果感觉该评测对您有所帮助, 欢迎投票给本文: UO<claV RsfTUb)< 投票标题: 28.[阿里云 ...
- [置顶] 从引爆点的角度看360随身wifi的发展
从引爆点的角度看360随身wifi的发展 不到一个月的时间,随身wifi预定量就数百万.它的引爆点在哪里,为什么相同的产品这么多它却能火起来,通过对随身wifi的了解和我知识层面分析,主要是因为随身w ...
- 站在Java的角度看LinkedList
站在Java的角度看,玩队列不就是玩对象引用对象嘛! public class LinkedList<E> implements List<E>, Deque<E> ...
- 从源码的角度看 React JS 中批量更新 State 的策略(下)
这篇文章我们继续从源码的角度学习 React JS 中的批量更新 State 的策略,供我们继续深入学习研究 React 之用. 前置文章列表 深入理解 React JS 中的 setState 从源 ...
- 从线程模型的角度看Netty的高性能
转载:Netty(二) 从线程模型的角度看 Netty 为什么是高性能的? 传统 IO 在 Netty 以及 NIO 出现之前,我们写 IO 应用其实用的都是用 java.io.* 下所提供的包. 比 ...
随机推荐
- nfs笔记整理
NFS---共享存储系统 #network file system 网络文件系统 #NFS主要使用在局域网下,让不同的主机之间可以共享文件.或者目录数据.主要用于linux系统上实现文件共享的一种 ...
- GlaDS缘起
题目:Modeling channelized and distributed subglacial drainage in two dimensions 近年来,冰盖表面融化与冰盖动态之间的联 ...
- 函数式表达式基本类型及固定类型 demo
1.常见类型及使用 import java.util.function.BiConsumer; import java.util.function.BiFunction; import java.ut ...
- Python使用.NET开发的类库来提高你的程序执行效率
Python由于本身的特性原因,执行程序期间可能效率并不是很理想.在某些需要自己提高一些代码的执行效率的时候,可以考虑使用C#.C++.Rust等语言开发的库来提高python本身的执行效率.接下来, ...
- VIP视频解析
效果图 新建窗口 import tkinter as tk# 创建一个窗口 root = tk.Tk() # 设置窗口大小 root.geometry('700x250+200+200') # 设置标 ...
- poj1338 ugly number 题解 打表
类似的题目有HDU1058 humble number(翻译下来都是丑陋的数字). Description Ugly numbers are numbers whose only prime fact ...
- python正则表达式替换所有内容并同时保留找到的内容
除了一些专业的工具,例如ue,大部分编程语言的函数包都挺让人迷惑的,例如Java,js. 因为的确有许多功能是很常用的,但是他们又不提供,非得要程序员自己去实现,或者是利用三方的包. 到底是什么理由了 ...
- C++中UNIX时间戳与日期互转
C++中UNIX时间戳与日期互转 使用time.h头文件 localtime 可以把时间戳转为 tm 结构体, tm结构体中可以格式化输出时间 mktime可以把tm结构体转为时间戳 tm 结构体中: ...
- GUI测试还能这么玩(Page Code Gen + Data Gen + Headless)
标签(空格分隔): GUI测试还能这么玩(Page Code Gen + Data Gen + Headless) 页面对象自动生成 在前面的文章中,我已经介绍过页面对象(Page Object)模型 ...
- python3 json.dumps(OrderDict类型) 报错:TypeError: Object of type datetime is not JSON serializable
chatgpt给出的解决方案, 在json.dumps()函数调用中传入default参数来指定如何处理datetime对象 import json from datetime import date ...