当模型增长,GPU的显存常常成为训练大模型的瓶颈。EPL提供了多维度的显存优化技术,具体有哪些呢?
1、重算 Recomputation (Gradient Checkpoint):正常的DNN前向过程中会生成activation,这部分activation会在后向过程中用于梯度计算。因此,在梯度生成之前,前向的activation会一直存留在显存中。activation大小和模型结构以及batch size相关,通常占比都非常高。Gradient Checkpoint (GC) 通过保留前向传播过程中的部分activation,在反向传播中重算被释放的activation,用时间换空间。GC中比较重要的一部分是如何选择合适的checkpoint点,在节省显存、保证性能的同时,又不影响收敛性。EPL提供了自动GC功能,用户可以一键开启GC优化功能。 2、ZeRO:在数据并行的场景下,每个卡上会存放一个模型副本,optimizer state等,这些信息在每张卡上都是一样,存在很大的冗余量。当模型变大,很容易超出单卡的显存限制。在分布式场景下,可以通过类似DeepSpeed ZeRO的思路,将optimizer state和gradient分片存在不同的卡上,从而减少单卡的persistent memory占用。 3、显存优化的AMP(Auto Mixed Precision):在常规的AMP里,需要维护一个FP16的weight buffer,对于参数量比较大的模型,也是不小的开销。EPL提供了一个显存优化的AMP版本,FP16只有在用的时候才cast,从而节约显存。 4、Offload: Offload将训练的存储空间从显存扩展到内存甚至磁盘,可以用有限的资源训练大模型。 同时,EPL支持各种显存优化技术的组合使用,达到显存的极致优化。阿里云机器学习PAI团队在T5模型上开启了GC+ZeRO+显存优化的AMP技术,在性能保持不变的情况下,显存降低2.6倍。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。