起初为调用大规模的模型训练,单卡GPU是不够使用的,需要借用服务器的多GPU使用。就会涉及到单机多卡,多机多卡的使用。在这里记录一下使用的方式和踩过的一些坑。文中若有不足,请多多指正。
由于分布式的内容较多,笔者准备分几篇来讲一次下深度学习的分布式训练,深度学习的框架使用的是Pytorch框架。
----1.分布式训练的理论基础
----2.GPU训练
----3.单机多卡的使用 DP,DDP
----4.多机多卡的使用 DDP
分布式训练的需求和重要性不需要多说,最近新提出的预训练模型,普通的16G的显存已经不足以支撑深度学习模型训练的要求了,这时候就需要用到分布式训练来提高效率。
总的来说,分布式训练分为这几类:
按照并行方式来分:模型并行 vs 数据并行
按照更新方式来分:同步更新 vs 异步更新
按照算法来分:Parameter Server算法 vs AllReduce算法
模型并行VS数据并行
假设我们有n张GPU:
- 模型并行:不同的GPU输入相同的数据,运行模型的不同部分,比如多层网络的不同层;
- 数据并行:不同的GPU输入不同的数据,运行相同的完整的模型。

本文介绍了深度学习分布式训练的基础,包括模型并行和数据并行,同步更新与异步更新的策略,以及Parameter Server算法与Ring AllReduce算法的比较。重点讨论了不同并行方式在训练大规模模型时的优缺点,提出了Ring AllReduce算法在通信效率上的优势。

3万+

被折叠的 条评论
为什么被折叠?



