网站建设步骤和流程,做网站 二维码登录,泉州网站设计,建设好的网站怎么发布文 | Connolly知乎大规模模型训练其实就是在和计算、存储和通信玩的过程#xff0c;所以我列一下跟这些相关的文章。1. 大规模模型并行策略先来介绍一下几种经典的并行范式#xff0c;以及他们对应的经典文章1.1 数据并行(Data parallelism)不同设备执行相同模型#xff0c;… 文 | Connolly知乎大规模模型训练其实就是在和计算、存储和通信玩的过程所以我列一下跟这些相关的文章。1. 大规模模型并行策略先来介绍一下几种经典的并行范式以及他们对应的经典文章1.1 数据并行(Data parallelism)不同设备执行相同模型不同数据。▲数据并行这个比较简单贴一篇PyTorch DDPPyTorch Distributed: Experiences on Accelerating Data Parallel Training1.2 模型并行(Model Parallelism or Tensor Parallelism)不同设备执行相同数据模型不同部分图为行切分模型并行的一个例子。▲模型并行代表性工作Megatron-LM: Efficient Large-Scale Language Model Training on GPU ClustersMesh-Tensorflow: Mesh-TensorFlow: Deep Learning for Supercomputers1.2.1 高维模型并行对参数矩阵进行二维以上切分的方法目前尤洋的潞晨科技主推的夸父分布式框架在做这个。夸父Colossal-AI: A Unified Deep Learning System For Large-Scale Parallel Training里面实现了2D2.5D3D并行1.3 流水线并行Pipeline parallelism以前也叫层间模型并行(inter-layer parallelism)。流水线并行分阶段(stage)运行模型不同阶段之间可以流水化执行。1.3.1 PipeDream一族▲PipeDream 1F1B异步流水线微软msr-fiddle团队提出的。不要在谷歌上搜PipeDream...到github上搜。PipeDream一族流水线是异步流水线因为用的是异步更新(第Nm次的前向传播利用的是第N次更新的参数)所以可能存在一定的收敛性问题。但是实际应用上业界还没有发现大问题。PipeDream: Fast and Efficient Pipeline Parallel DNN TrainingPipeDream-2BW: Memory-Efficient Pipeline-Parallel DNN TrainingHetPipe: Enabling Large DNN Training on (Whimpy) Heterogeneous GPU Clusters through Integration of Pipelined Model Parallelism and Data Parallelism1.3.2 GPipe一族Gpipe和DAPPLEGoogle最早提出的同步流水线每一个minibatch计算完后进行同步后再计算下一个minibatch。GPipe: Efficient Training of Giant Neural Networks using Pipeline Parallelism阿里的DAPPLE目前业界最流行的流水线Megatron的PipeDream-1F1B其实跟这个本质上是一个东西: DAPPLE: A Pipelined Data Parallel Approach for Training Large Models双向化的GPipe个人看好的一种内存计算折中方案Chimera: efficiently training large-scale neural networks with bidirectional pipelines1.4 重计算(Recomputation or Checkpointing)华为把他列到了并行策略里所以在这也提一提。重计算将前向计算的激活值丢弃在后向计算时再重新进行计算节省了巨量的激活值开销。pytorch的话用torch.utils.checkpoint就可以实现很方便。原始论文Algorithm 799: Revolve: An implementation of checkpointing for the reverse or adjoint mode of computational differentiation陈天奇最早把他带到了机器学习里Training Deep Nets with Sublinear Memory Cost1.5 零冗余优化器 (Zero REdundancy Optimizer)很多公司把他也当做一种并行的策略(sharding)所以我也列在这里。大名鼎鼎的ZeRO来自于微软的DeepSpeed团队。在执行的逻辑上是数据并行但是同时可以达到模型并行的显存优化效果。ZeRO: memory optimizations toward training trillion parameter modelsMeta(原Facebook)的FSDP不同名字而已[Fully Sharded Data Parallel: faster AI training with fewer GPUs][1] 混进来一篇不是paper的东东1.6 专家并行现在为了扩大模型规模很多人都在使用的方法MoE Outrageously Large Neural Networks: The Sparsely-Gated Mixture-of-Experts Layer谷歌 GShard: Scaling Giant Models with Conditional Computation and Automatic Sharding1.7 其他并行方法几种针对Transformer模型训练中数据sequence_length维度的并行方法谷歌的 TeraPipe: Token-Level Pipeline Parallelism for Training Large-Scale Language Models本质上是一种流水线新加坡国立夸父的 Sequence Parallelism: Making 4D Parallelism Possible2. 显存优化技术2.1 重计算1.4 提到过了不做赘述。2.2 Offload拿通信换显存的一种方法简单来说就是让模型参数、激活值等在CPU内存和GPU显存之间左右横跳。ZeRO-Offload: Democratizing Billion-Scale Model TrainingZeRO-Infinity: Breaking the GPU Memory Wall for Extreme Scale Deep Learning2.3 优化器为分布式训练设计的优化器尤洋提出的用于大批量卷积神经网络训练的自适应优化器LARS: Layer-wise Adaptive Moments optimizer for Batch training还是尤洋提出的用于大批量 BERT 训练的新型优化器 LAMBLarge Batch Optimization for Deep Learning: Training BERT in 76 minutes节省显存的优化器Adafactor: Adaptive Learning Rates with Sublinear Memory Cost低精度存储优化器状态的优化器DeepSpeed: 1-bit Adam: Communication Efficient Large-Scale Training with Adams Convergence SpeedDeepSpeed: 1-bit LAMB: Communication Efficient Large-Scale Large-Batch Training with LAMBs Convergence Speed2.4 内核优化以这个为例Self-attention Does Not Need Memory这个我研究的时候写了个实现。[ConnollySelf Attention 固定激活值显存分析与优化及PyTorch实现][2]目前因为大模型都是基于Transformer的我认为Transformer核的优化是比较关键的主要是可以把softmax和layernorm的激活值给去掉。可以参考DeepSpeed里[Transformer核的实现][3]。3. 通信这两篇博客可以涵盖大部分深度学习中的通信问题了。[ZOMI酱分布式训练硬核技术——通讯原语][4][兰瑞Frank腾讯机智团队分享--AllReduce算法的前世今生][5]3.1 通信方式参数服务器经典的主从节点模式例子有PyTorch DP基于PS的深度学习是李牧提出的对就是这个人-[跟李沐学AI的个人空间_哔哩哔哩_Bilibili][6] 。现在多用于大规模的推荐系统。如果主节点弄得多的话它的性能甚至可以超过Allreduce比如在BytePS里提到的A Unified Architecture for Accelerating Distributed DNN Training in Heterogeneous GPU/CPU Clusters 。无参数服务器采用集合通信的方法来实现模型参数、梯度等信息的同步例子有PyTorch DDP[horovod][7]DeepSpeed等等目前比较流行。3.2 通信优化环状路由采用ring的方式来进行通信比原始方法的通信量降低N倍N为设备数量最早应该是[百度提出][8]用来搞深度学习的现在PyTorch DDPhorovodDeepSpeed等都有相应实现。4. 流行大模型时间名字组织大小论文或报告2021.12.9 GLaM Google Brain 1.162T [blog][9]2021.12.8 Gopher Google DeepMind 280 B [deepmind][10]2021.12.8 Wenxin Baidu and PengCheng Lab 260 B [arxiv][11]2021.10.25 M6-10T Alibaba 10T [arxiv][12]2021.9.28 Yuan 1.0 Inspur 245.7 B [arxiv][13]2021.8 Jurassic-1 AI21 178B [tech paper][14]2021.5 Wudao 2.0 BAAI 1.75 T ?2021.4.26 Pangu-alpha Huawei and PengCheng Lab 207 B [arxiv][15]2020.5 GPT3 Open-AI 175 B [arxiv][16]5. 分布式框架论文字母序Colossal-AI最新的一批框架主打多维模型并行Colossal-AI: A Unified Deep Learning System For Large-Scale Parallel Training (2021)DeepSpeed跟英伟达玩得比较近大家都在学Proceedings of the 26th ACM SIGKDD International Conference on Knowledge Discovery Data Mining (2020)Horovod比较经典多人使用的Tensorflow分布式计算框架Horovod: fast and easy distributed deep learning in TensorFlow。(2018)Megatron-LM手动的DPMPPP性能baselineEfficient Large-Scale Language Model Training on GPU Clusters (2021)OneFlow介绍了SBP和Actor现在业界都在学OneFlow: Redesign the Distributed Deep Learning Framework from Scratch (2021)PaddlePaddle异构现在做的挺好End-to-end Adaptive Distributed Training on PaddlePaddle (2021)6. 自动并行更新一波我搜集的一些自动并行策略搜索算法对部分内容进行了分析欢迎大家star~[https://github.com/ConnollyLeon/awesome-Auto-Parallelismgithub.com/ConnollyLeon/awesome-Auto-Parallelism] [17]6.1 Jia Zhihao据我所知...贾志豪开创了自动并行的先河他提出的FlexFlow现在和Facebook的推荐模型DLRM玩的比较近。OptCNN用基于图搜索的动态规划来寻找CNN的自动并行策略: Exploring Hidden Dimensions in Parallelizing Convolutional Neural Networks 2018。以OptCNN为起点也延伸出了ToFuTensorOpt等等的工作老师木经常提。FlexFlow用蒙特卡洛马尔科夫链MCMC来搜索数据并行和模型并行策略Beyond Data and Model Parallelism for Deep Neural Networks (2018)6.2 Google6.2.1 GSPMD谷歌提出的GSPMD现在被多个框架包括TensorflowMindSporeOneFlowPaddlePaddle借鉴和修改后使用。GSPMD是一种半自动并行用户手动配置部分的并行操作然后他会对并行策略进行传播得到完成的并行策略。GSPMD: General and Scalable Parallelization for ML Computation Graphs (20216.2.2 AutomapGoogle DeepMind提出的利用蒙特卡洛树和交互网络进行策略的预测生成策略的效果可逼近Megatron-LMAutomap: Towards Ergonomic Automated Parallelism for ML Models (2021)6.2.3 REINFORCEGoogle Brain做的最早利用强化学习来做自动并行的方法做的是层间模型并行Device Placement Optimization with Reinforcement Learning (2017)6.3 msr-fiddle又是PipeDream的那帮人利用动态规划和Profile技术来搜索数据并行及流水线并行策略PipeDream: Fast and Efficient Pipeline Parallel DNN Training (2018)Dnn-partition: 利用动态规划和整数规划来搜索数据并行和模型并行的策略Efficient Algorithms for Device Placement of DNN Graph OperatorsPipeDream作者的师弟现在还不在fiddle利用网格搜索方法来生成最优的并行策略DistIR: An Intermediate Representation and Simulator for Efficient Neural Network Distribution (2021)利用两级动态规划方法来做数据并行模型并行和流水线并行策略的搜索 Piper: Multidimensional Planner for DNN Parallelization 20216.4 MindSporeMindSpore现在只能处理数据并行和模型并行的自动策略搜索双递归算法的速度远比动态规划要快。OptCNN的进阶版可以处理非线性模型TensorOpt: Exploring the Tradeoffs in Distributed DNN Training with Auto-Parallelism (2020)双递归算法 Efficient and Systematic Partitioning of Large and Deep Neural Networks for Parallelization (2020)6.5 阿里利用强化学习的方法来解决策略划分问题Auto-MAP: A DQN Framework for Exploring Distributed Execution Plans for DNN Workloads (2020)各大公司现在都在暗搓搓的做自动并行今年应该能看到百花齐放部署到大模型上的场景:)Alpa出来以后引发了一大波MLSys的热点卷起来了后台回复关键词【入群】加入卖萌屋NLP、CV与搜推广与求职讨论群后台回复关键词【顶会】获取ACL、CIKM等各大顶会论文集 [1]https://engineering.fb.com/2021/07/15/open-source/fsdp/[2]https://zhuanlan.zhihu.com/p/445016136[3]https://www.deepspeed.ai/news/2020/05/27/fastest-bert-training.html[4]https://zhuanlan.zhihu.com/p/465967735[5]https://zhuanlan.zhihu.com/p/79030485[6]https://space.bilibili.com/1567748478?fromsearchseid6189094745462877262spm_id_from333.337.0.0[7]https://arxiv.org/pdf/1802.05799[8]https://andrew.gibiansky.com/blog/machine-learning/baidu-allreduce/[9]https://ai.googleblog.com/2021/12/more-efficient-in-context-learnning-with.html[10]https://storage.googleapis.com/deepmind-media/research/language-research/Training%20Gopher.pdf[11]https://arxiv.org/pdf/2112.12731.pdf[12]https://arxiv.org/pdf/2110.03888.pdf[13]https://arxiv.org/pdf/2110.04725.pdf[14]https://uploads-ssl.webflow.com/60fd4503684b466578c0d307/61138924626a6981ee09caf6_jurassic_tech_paper.pdf[15]https://arxiv.org/pdf/2104.12369.pdf[16]https://arxiv.org/pdf/2005.14165.pdf[17]https://github.com/ConnollyLeon/awesome-Auto-Parallelism