从分布式计算的角度看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.* 下所提供的包. 比 ...
随机推荐
- 快速识别你家的猫猫狗狗,教你用ModelBox开发AI萌宠应用
本文分享自华为云社区<ModelBox-AI应用开发:动物目标检测[玩转华为云]>,作者:阳光大猫. 一.准备环境 ModelBox端云协同AI开发套件(Windows)环境准备[视频教程 ...
- Vue2复习
Vue2 插值.指令.动态属性.表达式.v-html 插值:{{ data }} 指令 & 动态属性:例子(:id="xxx") 表达式:可以用于赋值,写在{{}}里面 v ...
- Gradle查看依赖及排除依赖的方法
查看项目的编译依赖,同时写入文件aa.txt F:\sts4\order-test>gradlew :order-test-api:dependencies --configuration co ...
- MySQL常见的后端面试题,你会几道?
为什么分库分表 单表数据量过大,会出现慢查询,所以需要水平分表 可以把低频.高频的字段分开为多个表,低频的表作为附加表,且逻辑更加清晰,性能更优 随着系统的业务模块的增多,放到单库会增加其复杂度,逻辑 ...
- Nginx+Fail2ban 实现同一ip在一分钟内连续三次请求同一接口并响应成功时进行封禁
1. 安装 Fail2Ban 和 Nginx 如果尚未安装 Fail2Ban 和 Nginx,可以使用以下命令进行安装: # CentOS默认的仓库中可能不包含Nginx,所以需要添加EPEL(Ext ...
- [AGC020D] Min Max Repetition
牛子题 优先满足第二个条件,长度是 \(\lceil \frac{max(A,B)}{min(A,B)+1}\rceil\) ,那么现在要满足字典序最小,发现先填 \(A..ABA..ABA..AB. ...
- Android JACK 编译错误SSL error when connecting to the Jack server
背景 之前编译好好,今天居然遇到了这样子的问题.还以为是和之前一样,Android7.0 配置JACK支持多用户同时编译. 结果不是: /bin/bash -c "(prebuilts/sd ...
- 为什么Linux不能在中断中睡眠
中断分析 首先来看中断的流程: 1.进入中断处理程序---> 2.保存关键上下文----> 3.开中断(sti指令)---> /* 硬中断:对应于1.2.3步骤. 在这几个步骤中,所 ...
- 合并STM32 iap的hex文件合并为一个hex文件
--- title: 合并STM32 iap的hex文件合并为一个hex文件 date: 2020-06-15 04:32:26 categories: tags: - iap - stm32 --- ...
- VS License Header Manager 插件
/************************************************************************************* * * 文 件 名: %F ...