首页 > 其他分享 >大规模分布式训练经验

大规模分布式训练经验

时间:2023-03-16 20:01:05浏览次数:54  
标签:输出 训练 模型 大规模 反向 算子 分布式 设备

一、单机单卡训练

1. 基本概念

  1. 芯片的内存
  2. 模型训练时的内存主要消耗在:
    神经元的中间值
    参数值(包括权重、梯度值和优化器的状态值)

2. 优化方法

单卡速度主要由单块AI加速芯片的运算速度、数据IO来决定。

  • 优化方法:可以用激活重计算这个方法来进行优化。
  • 具体操作为:
    在网络中标记少量的算子 ,前向计算只保留这些被标记的算子的输出结果(激活值), 其余前向算子的输出结果直接被释放,这样就可以极大减少激活值消耗的内存。当反向更新梯度需要前向算子的输出时,利用被标记的算子重新计算获取。
    激活重计算是一个以时间换空间的策略。
    通过类似于检查点的机制,通过标记部分算子,存储他们的输出值,其他算子的输出值就直接忽略,在反向传播时,利用标记算子,来继续前项传递,求出其余算子的前项输出来进行梯度调整。反向阶段完成后,优化器进行权重调整。
    神经元的中间值主要指的是前向算子的output,这些output在训练结束后是不需要保留的,所以称为中间值。如果是推理网络,算子执行完,输出给下一个当完输入后,就可以释放了。但训练网络不同,前向算子的输出要一直保留到反向网络执行时,因为前向算子的输出还是对应反向算子的输入。即前向网络中的中间值的声明周期延长到了反向网络阶段了。

二、分布式训练

1. 基本概念

为什么要分布式训练?

  1. 大模型训练需要的内存超过了单个机器的内存
  2. 大模型训练的数据太大
  3. 想要减少训练时间
    在多台机器上面训练模型。假设有两台机器,每台机器上有2个GPU,那么我们就启动了4个进程。
    进程之间用如下方式通信:
  4. peer-to-peer:一个进程向另一个进程发送数据
  5. collective:一组进程执行分散、聚集、all-reduce、广播等操作

2. 分类

2.1 数据并行

将数据分割成几部分,分配到不同的设备上。这相当于沿批次维度对训练过程进行并行。在反向传播之后,每张卡上的梯度和权值、优化器的状态值是一样的,即各张卡之间进行的是完全一样的计算。因此可以将这部分的计算分散到各张卡,每张卡仅保存部分的梯度和状态值,在不同的设备上的模型参数保持同步。
缺点:每个GPU都有全部的模型参数。

2.2 模型并行

将模型分割成几部分,分配到不同的设备上。

2.2.1 流水线并行

将模型按层分割成若干块,分配到不同的设备上。在前向传递过程中,每个设备将中间的激活传递给下一个阶段。在后向传递的过程中,每个设备将输入张量的梯度传回给前一个流水线阶段。
缺点:会有设备参与计算的冒泡时间,造成浪费。

2.2.2 张量并行

将一个张量沿特定维度分成N块,每个设备只持有张量的1/N。
将设要计算C = AB,将B沿着列分割成[B0 B1 B2 B3],每个设备上有一列。然后将A与每个设备的B的一列相乘,得到[AB0 AB1 AB2 AB3],每个设备仍持有一部分的结果。然后将张量串联起来,得到最后的结果。

3. 小结

三、参考

  1. https://colossalai.org/zh-Hans/docs/concepts/distributed_training
  2. https://blog.csdn.net/RogersStar/article/details/123617394
  3. https://zhuanlan.zhihu.com/p/432289008

标签:输出,训练,模型,大规模,反向,算子,分布式,设备
From: https://www.cnblogs.com/AudreyXu/p/17223920.html

相关文章

  • 听音训练软件/工具
    个人小记:最近在研究音视频的测试,里面包括很多概念,比如主观测试和客观测试,音频和视频等等。这里主要介绍一下关于主观音频测试部分需要用到的技能或者工具。首先主观音频......
  • 分布式架构-可观测性-聚合度量
    系列目录分布式架构-可观测性(一)-原理概览分布式架构-可观测性(二)-事件日志分布式架构-可观测性(三)-链路追踪分布式架构-可观测性(四)-聚合度量引子分布式架......
  • cpu分布式训练论文阅读
    LargeScaleDistributedDeepNetworksDownpourSGD:模型的副本采用异步方式从参数服务器(ParameterServer)中获取参数w和上传Δw到参数服务器模型副本之间运行独立......
  • Redis中是如何实现分布式锁的?
    分布式锁常见的三种实现方式:数据库乐观锁;基于Redis的分布式锁;基于ZooKeeper的分布式锁。Redis要实现分布式锁,以下条件应该得到满足:互斥性:在任意时刻,只有一个客户端......
  • 代码随想录算法训练营第一天| javascript |二分查找_LeetCode704, 移除元素_LeetCode2
    二分查找题目链接:https://leetcode.cn/problems/binary-search/文章讲解:https://programmercarl.com/0704.%E4%BA%8C%E5%88%86%E6%9F%A5%E6%89%BE.html视频讲解:ht......
  • 2000+题目训练(++t)
    Kateandimperfection2200https://www.luogu.com.cn/problem/CF1333F题解:其等价于依次放入一个元素使得每步集合gcd最大值最小。贪心地想,若下一步放入x那么如果有y|x,......
  • Minio分布式文件系统
    Minio分布式文件系统注意:192.168.118.35是我的虚拟机ip,使用的时候记得改成自己的拉取minio镜像dockerpullminio/minio系统环境基本配置cat>>/etc/sysctl.conf......
  • 图数据库中的“分布式”和“数据切分”(切图)
    今天,我试着简要综述几类不同的图数据库的分布式与切图的设计,希望可以帮助大家了解不同项目、产品的设计差异。如果有理解不对的地方,欢迎留言讨论。什么是分布式系统一般......
  • YOLOv8训练
    以下文件全放在ultralytics/yolo/data目录下一、使用labelimg进行数据标记1.按以下顺序建立文件夹VOCdevkit→VOC2007→Annotations、Images、labels、pre......
  • 【大数据】Centos7、Hadoop3.3.1、分布式搭建
    主要遵照 https://www.cnblogs.com/lehoso/p/15550119.html进行搭建,文章里写的很清楚了,我就不多说了。在搭建过程中,用思维导图绘制了一个大纲。可点击下载安装过程中的......