背景:

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哪个更优?的更多相关文章

  1. pytorch和tensorflow的爱恨情仇之基本数据类型

    自己一直以来都是使用的pytorch,最近打算好好的看下tensorflow,新开一个系列:pytorch和tensorflow的爱恨情仇(相爱相杀...) 无论学习什么框架或者是什么编程语言,最基础 ...

  2. pytorch和tensorflow的爱恨情仇之定义可训练的参数

    pytorch和tensorflow的爱恨情仇之基本数据类型 pytorch和tensorflow的爱恨情仇之张量 pytorch版本:1.6.0 tensorflow版本:1.15.0 之前我们就已 ...

  3. pytorch和tensorflow的爱恨情仇之张量

    pytorch和tensorflow的爱恨情仇之基本数据类型:https://www.cnblogs.com/xiximayou/p/13759451.html pytorch版本:1.6.0 ten ...

  4. pytorch和tensorflow的爱恨情仇之参数初始化

    pytorch和tensorflow的爱恨情仇之基本数据类型 pytorch和tensorflow的爱恨情仇之张量 pytorch和tensorflow的爱恨情仇之定义可训练的参数 pytorch版本 ...

  5. Android IOS WebRTC 音视频开发总结(四八)-- 从商业和技术的角度看视频行业的机会

    本文主要从不同角度介绍视频行业的机会,文章来自博客园RTC.Blacker,支持原创,转载必须说明出处,欢迎关注个人微信公众号blacker ----------------------------- ...

  6. 【阿里云产品公测】以开发者角度看ACE服务『ACE应用构建指南』

    作者:阿里云用户mr_wid ,z)NKt#   @I6A9do   如果感觉该评测对您有所帮助, 欢迎投票给本文: UO<claV   RsfTUb)<   投票标题:  28.[阿里云 ...

  7. [置顶] 从引爆点的角度看360随身wifi的发展

    从引爆点的角度看360随身wifi的发展 不到一个月的时间,随身wifi预定量就数百万.它的引爆点在哪里,为什么相同的产品这么多它却能火起来,通过对随身wifi的了解和我知识层面分析,主要是因为随身w ...

  8. 站在Java的角度看LinkedList

    站在Java的角度看,玩队列不就是玩对象引用对象嘛! public class LinkedList<E> implements List<E>, Deque<E> ...

  9. 从源码的角度看 React JS 中批量更新 State 的策略(下)

    这篇文章我们继续从源码的角度学习 React JS 中的批量更新 State 的策略,供我们继续深入学习研究 React 之用. 前置文章列表 深入理解 React JS 中的 setState 从源 ...

  10. 从线程模型的角度看Netty的高性能

    转载:Netty(二) 从线程模型的角度看 Netty 为什么是高性能的? 传统 IO 在 Netty 以及 NIO 出现之前,我们写 IO 应用其实用的都是用 java.io.* 下所提供的包. 比 ...

随机推荐

  1. Easysearch压缩模式深度比较:ZSTD+source_reuse的优势分析

    引言 在使用 Easysearch 时,如何在存储和查询性能之间找到平衡是一个常见的挑战.Easysearch 具备多种压缩模式,各有千秋.本文将重点探讨一种特别的压缩模式:zstd + source ...

  2. categraf托管与自升级

    categraf支持多种方式进行部署.托管,社区里部署和管理categraf也是五花八门,大家自己使用方便即可. 之前我们觉得大家通过ansible之类的工具批量下发/更新就能很简单地完成任务,最近很 ...

  3. Task2 -- 关于Lecture3

    Smiling & Weeping ---- 玲珑骰子安红豆, 入骨相思知不知. 1. 学习Git分支管理: Git分支是灵活开发的关键.创建.切换和合并分支是基础操作.使用如下命令: bas ...

  4. Kubernetes(三)实战入门

    实战入门 本章介绍如何在kubernetes集群中部署一个nginx服务,并能够对其进行访问. 1. Namespace Namespace主要作用是实现多套环境的资源隔离或者多租户的资源隔离. 默认 ...

  5. Lfu缓存在Rust中的实现及源码解析

    一个 lfu(least frequently used/最不经常使用页置换算法 ) 缓存的实现,其核心思想是淘汰一段时间内被访问次数最少的数据项.与LRU(最近最少使用)算法不同,LFU更侧重于数据 ...

  6. FFMpeg 中的数据结构

    FFMpeg 中比较重要的函数以及数据结构如下: 数据结构: (1) AVFormatContext (2) AVOutputFormat (3) AVInputFormat (4) AVCodecC ...

  7. Gitlab的安装和使用

    安装和配置必要的依赖项 yum install dnf sudo dnf install -y curl policycoreutils openssh-server #将SSH服务设置成开机自启动 ...

  8. VS License Header Manager 插件

    /************************************************************************************* * * 文 件 名: %F ...

  9. Basic_pentesting_1靶机渗透流程

    Basic_pentesting_1 Description This is a small boot2root VM I created for my university's cyber secu ...

  10. Docker运维之容器的日志清理

    在容器运行的过程中,通常会产生大量的日志,尤其是应用程序本身记录了info级别的日志时候,程序的标准输出记录到容器的日志.这样会占用大量的磁盘空间,严重者导致IO异常,最终服务会宕机. 方案一:定期手 ...