大模型-训练-【篇二:训练加速&工具】
优质文档
FSDP、零冗余优化器(Zero):
参考:数据并行Deep-dive: 从DP 到 Fully Sharded Data Parallel (FSDP)完全分片数据并行
1、总结:pytorch的FSDP从微软的DeepSpeed ZeRO以及Facebook的FairScale的FSDP中获取灵感,打破模型分片的障碍(包括模型参数,梯度,优化器状态),同时仍然保持了数据并行的简单性
2、首先,介绍了pyTorch的DP、DDP:给出了动画图解。Pytorch DDP:引入bucket,一个bucket里通常有不超过一定大小的几个layer的参数组成(默认是25MB),当一个bucket内部的梯度准备好了之后,则这个bucket就可以开始进行ring-all-reduce取平均操作,而不需要等到计算完整个模型的反向传播过后才进行一次统一的ring-all-reduce操作,相当与把多卡通讯的时间隐藏在了backward计算的耗时中,大大提升了资源利用效率。
3、然后,介绍结合混合精度训练的ZeRO的ZeRO-1、ZeRO-2、ZeRO-3(介绍了每种的具体实现过程)优化显存占用
4、最后,介绍pytorch的FSDP。Pytorch 的FSDP是一种数据并行的训练方法,它实际上就是ZeRO-3,传统的数据并行会在每个GPU上维护一份模型参数,梯度,优化器状态的副本,但是FSDP将这些状态分片到所有的数据并行worker中,并且可以选择将分片的模型参数卸载到CPU上。
5、效果:虽然Megatron-ML的tensor并行是训练大模型的标配,但是pytorch的FSDP以其简洁易用性再次赢得多数人的使用青睐,可以预见是以后模型训练的必备法则,在一般小模型的情况下,实操FSDP与DDP的训练速度持平或者略差一点,大模型情况下FSDP在让模型显存占用小得多的情况下甚至速度优于DDP训练,我使用的是一般通信性能的机器,但是当机器本身通信性能高的情况下,FSDP在大部分情况下训练速度不输于DDP。
Megatron和deepspeed
1、大模型训练分为两种方式:ZeRO系列,3D并行(TP+PP+DP)
1)ZeRO
微软提出的一种数据并行(DP)方案,用DeepSpeed支持最好
DeepSpeed系列有ZeRO1/ZeRO2/ZerO3,以及+offload,最近还推出了ZeRO++
各个ZeRO的Stage:ZeRO1是优化器切分到各卡,ZeRO2是梯度切分到各卡,ZeRO3是模型参数切分到各卡。OFFLOAD是用一部分内存来补充显存的不足。参考:deepspeed入门教程、DeepSpeed之ZeRO系列:将显存优化进行到底
2)3D并行(TP+PP+DP)
可参考:【深度学习】【分布式训练】一文捋顺千亿模型训练技术:流水线并行、张量并行和3D并行
代码实战-流水线并行:大模型流水线并行(Pipeline)实战
3)zero1和3d并行不矛盾,现在训练时一般都是tp+pp+zero1
4)新版本的pytorch自己也支持ZeRO,参考FSDP
2、Megatron和deepspeed
megatron是NV家的,擅长张量并行(TP),尽管通信速度限制TP应用在有NVLINK的节点内
早期megatron和deepspeed都不够完善,megatron-deepspeed里megatron做TP,deepspeed做PP和ZeRO1,现在megatron都可以了
3、训练和推理中的显存占用和混合精度训练
显存占用:分析transformer模型的参数量、计算量、中间激活、KV cache
混合精度:fp32、fp16、bf16。对于大型 transformer,bf16 损失的精度被证明不怎么影响收敛。当然,只有A100及以后的显卡支持bf16,V100不行。大模型训练中的 fp32/fp16/bf16、混合精度、训练溢出
BF16 是对FP32单精度浮点数截断数据,即用8bit表示指数,7bit表示小数。FP16半精度浮点数,用5bit 表示指数,10bit表示小数。BF16可表示的整数范围更广泛,但是尾数精度较小;FP16表示整数范围较小,但是尾数精度较高。
结尾
亲爱的读者朋友:感谢您在繁忙中驻足阅读本期内容!您的到来是对我们最大的支持❤️
正如古语所言:"当局者迷,旁观者清"。您独到的见解与客观评价,恰似一盏明灯💡,能帮助我们照亮内容盲区,让未来的创作更加贴近您的需求。
若此文给您带来启发或收获,不妨通过以下方式为彼此搭建一座桥梁: ✨ 点击右上角【点赞】图标,让好内容被更多人看见 ✨ 滑动屏幕【收藏】本篇,便于随时查阅回味 ✨ 在评论区留下您的真知灼见,让我们共同碰撞思维的火花
我始终秉持匠心精神,以键盘为犁铧深耕知识沃土💻,用每一次敲击传递专业价值,不断优化内容呈现形式,力求为您打造沉浸式的阅读盛宴📚。
有任何疑问或建议?评论区就是我们的连心桥!您的每一条留言我都将认真研读,并在24小时内回复解答📝。
愿我们携手同行,在知识的雨林中茁壮成长🌳,共享思想绽放的甘甜果实。下期相遇时,期待看到您智慧的评论与闪亮的点赞身影✨!
万分感谢🙏🙏您的点赞👍👍、收藏⭐🌟、评论💬🗯️、关注❤️💚~
自我介绍:一线互联网大厂资深算法研发(工作6年+),4年以上招聘面试官经验(一二面面试官,面试候选人400+),深谙岗位专业知识、技能雷达图,已累计辅导15+求职者顺利入职大中型互联网公司。熟练掌握大模型、NLP、搜索、推荐、数据挖掘算法和优化,提供面试辅导、专业知识入门到进阶辅导等定制化需求等服务,助力您顺利完成学习和求职之旅(有需要者可私信联系)
友友们,自己的知乎账号为“快乐星球”,定期更新技术文章,敬请关注!
更多推荐


所有评论(0)