33- 单机多卡并行
单机多卡并行
一台机器可以安装多个
数据并行
将小批量的数据分为
数据并行通常性能比模型并行更好,因为对数据进行划分使得各个
数据并行的大致流程

主要分为五部
- 1:每个
GPU 读取一个数据块(灰色部分) - 2:每个
GPU 读取当前模型的参数(橙色部分) - 3:每个
GPU 计算自己拿到数据块的梯度(绿色部分) - 4:
GPU 将计算得到的梯度传给内存(CPU) (绿色箭头) - 5:利用梯度对模型参数进行更新(橙色箭头)
数据并行并行性较好,主要因为当每个
模型并行
将整个模型分为
模型并行通常用于模型十分巨大,参数众多,即使在每个
通道并行
通道并行是数据并行和模型并行同时进行
总结
- 当一个模型能用单卡计算时,通常使用数据并行扩展到多卡
- 模型并行则用在超大模型上
Q&A(部分有价值的)
- 问
1 :若有4 块GPU ,两块显存大两块显存小怎么办? - 答
1 : 若GPU 运算性能相同,则训练取决于小显存的GPU 的显存大小,更大的显存相当于浪费掉若 GPU 运算性能不同,一般即为显存大的GPU 性能更好,可以在分配数据时多分配一点 - 问
2 :数据拆分后,需存储的数据量会变大吗?会降低性能吗? - 答
2 :每个GPU 都单独存储了一份模型,这部分的数据量变大了,但如果只考虑运算时的中间变量,则中间变量的大小与数据量呈线性关系,每个GPU 的数据小了,中间变量也会变小,所有GPU 的中间变量加起来大小是不变的。 数据拆分后性能会变低,在下节课讲解(数据通讯的开销,每个GPU 的batch-size 变小可能无法跑满GPU ,总batch-size 变大则相同计算量下训练次数变少)