图解分布式训练(六)——Pytorch的DeepSpeed详细解析来自:AiGC面试宝典宁静致远2023年12月24日00:39•图解分布式训练(六)——Pytorch的DeepSpeed详细解析•动机•一、为什么需要Deepspeed?•二、DeepSpeed基本概念介绍一下?•2.1DeepSpeed介绍•2.2DeepSpeed基础的概念•2.3DeepSpeed支持的功能•三、DeepSpeed通信策略介绍一下?•四、DeepSpeed如何使用?•4.1DeepSpeed安装•4.2DeepSpeed使用•五、DeepSpeed全部代码•六、优化器和调度器•6.1优化器•6.2调度器•七、训练精度•7.1自动混合精度•7.2NCCL•7.3apex•八、获取模型参数•8.1ZeRO-3andInfinityNuances•填坑笔记•1.ModuleNotFoundError:Nomodulenamed'torch._six•2.为什么单卡的情况,也可以使用deepspeed?•3.不同ZeRO如何配置•3.1ZeRO-2•3.2ZeRO-3•3.3ZeRO-stage-0•3.4ZeRO-stage-1•4.ZeRO-3会比ZeRO-2慢很多如何优化?•5.如何选择不同的Zerostage和offload•6.DeepSpeed遇到问题,如何确定调参步骤?•7.如何估算需要的显存?•8.启动时,进程被杀死,并且没有打印出traceback•9.loss是NaN•10.确保一致性•11.如何配置配置ssh?•12.如何配置安装pdsh?•12.如何配置配置deepspeed文件?扫码加查看更多动机最常见的深度学习框架应该是TensorFlow、Pytorch、Keras,但是这些框架在面向大规模模型的时候都不是很方便。比如Pytorch的分布式并行计算框架(DistributedDataParallel,简称DDP),它也仅仅是能将数据并行,放到各个GPU的模型上进行训练。也就是说,DDP的应用场景在你的模型大小大于显卡显存大小时,它就很难继续使用了,除非你自己再将模型参数拆散分散到各个GPU上。今天要给大家介绍的DeepSpeed,它就能实现这个拆散功能,它通过将模型参数拆散分布到各个GPU上,以实现大型模型的计算,弥补了DDP的缺点,非常方便,这也就意味着我们能用更少的GPU训练更大的模型,而且不受限于显存。一、为什么需要Deepspeed?大模型(LLM)在训练时往往需要大量内存来存储中间激活、权重等参数,百亿模型甚至无法在单个GPU上进行训练,使得模型训练在某些情况下非常低效和不可能。这就需要进行多卡,或者多节点分布式训练。在大规模深度学习模型训练中有个主要范式:目前训练超大规模语言模型技术路线:GPU+PyTorch+Megatron-LM+DeepSpeedDeepSpeed是由Microsoft提供的分布式训练工具,旨在支持更大规模的模型和提供更多的优化策略和工具。与其他框架相比,DeepSpeed支持更大规模的模型和提供更多的优化策略和工具。其中,主要优势在于支持更大规模的模型、提供了更多的优化策略和工具(例如ZeRO和Offload等)•致谢•数据并行•模型并行1.用3D并行化实现万亿参数模型训练。DeepSpeed实现了三种并行方法的灵活组合:ZeRO支持的数据并行,流水线并行和张量切片模型并行。3D并行性适应了不同工作负载的需求,以支持具有万亿参数的超大型模型,同时实现了近乎完美的显存扩展性和吞吐量扩展效率。此外,其提高的通信效率使用户可以在网络带宽有限的常规群集上以2-7倍的速度训练有数十亿参数的模型。2.ZeRO-Offload使GPU单卡能够训练10倍大的模型:为了同时利用CPU和GPU内存来训练大型模型,我们扩展了ZeRO-2。我们的用户在使用带有单张英伟达V100GPU的机器时,可以在不耗尽显存的情况下运行多达130亿个参数的模型,模型规模扩展至现有方法的10倍,并保持有竞争力的吞吐量。此功能使数十亿参数的模型训练更加大众化,并为许多深度学习从业人员打开了一扇探索更大更好的模型的窗户。3.通过DeepSpeedSparseAttention用6倍速度执行10倍长的序列:DeepSpeed提供了稀疏attentionkernel——一种工具性技术,可支持长序列的模型输入,包括文本输入,图像输入和语音输入。与经典的稠密Transformer相比,它支持的输入序列长一个数量级,并在保持相当的精度下获得最高6倍的执行速度提升。它还比最新的稀疏实现快1.5–3倍。此外,我们的稀疏kernel灵活支持稀疏格式,使用户能够通过自定义稀疏结构进行创新。4.1比特Adam减少5倍通信量:Adam是一个在大规模深度学习模型训练场景下的有效的(也许是最广为应用的)优化...
发表评论取消回复