从分布式计算的角度看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.* 下所提供的包. 比 ...
随机推荐
- Jenkins技术概述与开发实战
本文详细讲解了Jenkins的安装与配置.构建作业.流水线.构建.测试和部署的具体方法,涵盖关键概念.详细步骤及代码示例,旨在帮助专业从业者实现高效的CI/CD自动化流程. 关注作者,复旦博士,分享云 ...
- RSS 解析:全球内容分发的利器及使用技巧
使用 RSS 可以将最新的网络内容从一个网站分发到全球数千个其他网站. RSS 允许快速浏览新闻和更新. RSS 文档示例 <?xml version="1.0" encod ...
- 可以把 FolkMQ 内嵌到 SpringBoot3 项目里(可内嵌的消息中间件,纯血国产)
之前发了<把 FolkMQ 内嵌到 SpringBoot2 项目里(比如 "诺依" 啊)>.有人说都淘态了,有什么好内嵌的...所以再发个 SpringBoot3 Fo ...
- Nuxt3 的生命周期和钩子函数(二)
title: Nuxt3 的生命周期和钩子函数(二) date: 2024/6/26 updated: 2024/6/26 author: cmdragon excerpt: 摘要:本文深入介绍了Nu ...
- 函数式编程(Lambda、Stream流、Optional等)
# 声明 文档来源:Github@shuhongfan 源文档:B站UP主:三更草堂 # 函数式编程-Stream流 # 概述 # 为什么学? 基操,否则看不懂别人写的优雅代码 简化代码,不想看到有些 ...
- 用const修饰指针
1)常量指针 语法:const 数据类型 *变量名; 不能通过解引用的方法修改内存地址中的值(用原始的变量名是可以修改的). 注意: l 指向的变量(对象)可以改变(之前是指向变量a的,后来可以改为指 ...
- dubbo面试题及答案
Dubbo是什么? Dubbo是阿里巴巴开源的基于 Java 的高性能 RPC 分布式服务框架,现已成为 Apache 基金会孵化项目. 面试官问你如果这个都不清楚,那下面的就没必要问了. 官网:ht ...
- 【一天一点.NET小知识】运用向量Vector<T>加速求和计算
随着 .NET 版本的演进,从 .NET Standard 2.0 版本开始,支持 Vector<T> 类型. Vector<T> 类型:表示指定数值类型(适用于并行算法的低级 ...
- ComfyUI进阶篇:ControlNet核心节点
前言: ControlNet_aux库包含大量的图片预处理节点,功能丰富,适用于图像分割.边缘检测.姿势检测.深度图处理等多种预处理方式.掌握这些节点的使用是利用ControlNet的关键,本篇文章将 ...
- 解决方案 | win10任务栏假死,桌面鼠标可以动但是无法点击任务栏图标
1 背景 今天电脑不知道什么原因,鼠标出现了无法点击任务栏图标的情况,但是桌面上可以晃动. 2 解决过程 (方法1-3对我无效,但是不代表对你们无效,) 方法1:重启资源管理器. 方法2:电脑重启.或 ...