首页 > 其他分享 >multi-GPU环境下的batch normalization需要特殊实现吗?

multi-GPU环境下的batch normalization需要特殊实现吗?

时间:2023-07-27 17:22:07浏览次数:44  
标签:异步 multi 多卡 batch 算子 GPU normalization 分布式

3年前曾经写过关于分布式环境下batch normalization是否需要特殊实现的讨论:

batch normalization的multi-GPU版本该怎么实现? 【Tensorflow 分布式PS/Worker模式下异步更新的情况】

 

 

当时我给出的观点就是在多卡环境下batch normalization使用每个step内的各显卡batch上的相关值进行同步的话会和单卡情况取得相似的结果,因此我给出的结论就是多卡情况下是没有必要针对batch normalization算子开发什么高深的替代版本,你不论是同步更新还是异步更新的情况下对每个显卡上运行得到的batch normalization算子中的参数进行同样的update就可以了,因为从我之前做的仿真使用中可以看出不论是单机情况还是多卡同/异步更新情况下都是对batch normalization算子中参数的估计,而这几种方法之间的差别其实不大,可以说极为相近,也正是如此在几年前我就得出了没有必要为多卡/分布式环境下设计特殊的batch normalization算子,不管是同步更新还是异步更新同时对batch normalization算子中的参数进行同样操作就和单卡情况下不会有太大的差距。几年前得到这个结论的时候只是考个人推断和仿真实验获得的,并没有在实际的代码上跑过,当时主要的原因就是省时、省力,同时也是对但是网上的各种针对多卡/分布式环境下开发出的特殊batch normalization算子的一种反对意见,最近看到一篇可以佐证我观点的文章这里给出相关链接并摘录出部分内容:

https://zhuanlan.zhihu.com/p/402198819

 

 

=========================================

标签:异步,multi,多卡,batch,算子,GPU,normalization,分布式
From: https://www.cnblogs.com/devilmaycry812839668/p/17585527.html

相关文章

  • nvidia-smi显示GPU上无进程但GPU显存却被占用
        问题:有时我们在使用GPU的时候,因为某个原因,导致GPU被占,但有无法通过nvidia-smi看到进程编号,就会产生一个现象,GPU被未知程序所占用,我们只能使用GPU的一部分,针对这种现象怎么解决呢   方法1.重启电脑,如果win系统的话,直接关机重启即可;如果是linux系统,有图形界面......
  • python使用多进程multiprocessing执行报错
        inthemainmodule:      if__name__=='__main__':        freeze_support()        ...    The"freeze_support()"linecanbeomittediftheprogram    isnotgoingtobefrozentop......
  • 多节点高性能计算GPU集群的构建
    建议参考原文:https://www.volcengine.com/docs/6535/78310 ============================================= 一直都在使用超算的GPU集群,但是从来没有实际操作过,虽然在自己的个人的三台主机上安装过小型的MPI集群,但是毕竟没有实际超算平台的构建经验,比如NCCL的超算平台上的......
  • GPU的硬件组成及运行原理
    GPU的硬件组成GPU是一种专门为图形处理而设计的处理器,它的设计目标是在处理大规模、高并发的图形数据时提供高效的计算能力。与CPU相比,GPU的处理器数量更多,每个处理器的计算能力相对较弱,但它们可以同时处理大量的数据,从而提供更高的计算效率。GPU的硬件组成包括:处理器单......
  • pytorch 选定多GPU训练
    PyTorch多GPU训练实现在本文中,我将向你介绍如何使用PyTorch进行多GPU训练。作为一名经验丰富的开发者,我将以表格的形式展示整个实现流程,并在每一步中提供需要使用的代码和对其意义的注释。实现流程步骤代码说明1importtorch导入PyTorch库2importtorch.nnasn......
  • 117.STL中的multiset
    117.STL中的multiset1.multiset的介绍1.multiset是按照特定顺序存储元素的容器,其中元素是可以重复的2.在multiset在,元素的value也会识别它组成的键值对,multiset元素的值不能在容器中进行修改,但可以插入和删除3.在内部,multiset按照特定的严格弱排序准则进行排序4.multiset容......
  • 115.STL中的multimap
    115.STL中的multimap1.multimap的基本性质multimap容器是和map容器相似的关联式容器,所谓“相似”,是指multimap容器具有和map容器相同的特性,即multimap容器也存储pair<constK,T>类型的键值对(其中K表示键的类型,T表示值的类型),其中各个键值对的键的值不能被修改;并且,该容器也会自行......
  • Xv6 Lab7: Multithreading
    Uthread:switchingbetweenthreads这个题还是对的起它moderate的难度了,如果认真看了book-riscv-rev2.pdf的Scheduling章节,以及看了这个课程翻译,那么这题可以很快做出来,个人觉得pdf讲得更加清楚一些。这个题甚至帮你把需要添加代码的地方都标注出来了,参照题目说明,主要......
  • spring batch 框架进行元数据管理表 mysql
    使用SpringBatch框架进行元数据管理表MySQL的实现1.简介在进行大规模数据处理时,SpringBatch框架是一个非常有用的工具。它提供了一个强大的批处理框架,可以轻松地处理大量的数据,并具备事务管理、监控、错误处理等功能。为了进行元数据管理,我们可以使用MySQL数据库来存储和管理S......
  • SLF4J: Class path contains multiple SLF4J bindings报错,logback-classic.jar与slf4j
    1.问题:控制台一直报错: 1SLF4J:ClasspathcontainsmultipleSLF4Jbindings.2SLF4J:Foundbindingin[jar:file:/logback-classic/1.1.11/logback-classic-1.1.11.jar!/org/slf4j/impl/StaticLoggerBinder.class]3SLF4J:Foundbindingin[jar:file:/slf4j/slf4j-log......