大模型面经—分布式训练指南 原创

发布于 2024-11-4 13:56
浏览
0收藏

​分布式训练指南理论篇。

本篇来总结一些分布式训练的知识,还是按照面经的形式给出,希望能给到大家一些帮助。

题目

1 训练一个LLM,需要的显存规模跟参数的关系是什么?

2. 如果有N张显存足够大的显卡,怎么加速训练?

3. 如果有N张显卡,但每个显卡显存都不足以装下一个完整的模型,应该怎么办?

4. PP推理时是串行的,1个GPU计算但其他空闲,有什么其他的优化方式?

5. DP、TP、PP这3种并行方式可以叠加吗?

6. 3D并行或者直接上多机多卡的ZeRO的条件是什么?

答案

1. 训练一个LLM,需要的显存跟参数的关系是什么?

主要公式是  模型本身占用显存  + 多个batch数据运算的存储 , 跟实际精度,模型大小、中间变量计算以及batch邮官。

2. 如果有N张显存足够大的显卡,怎么加速训练?

数据并行(DP),充分利用多张显卡的算力。

3. 如果有N张显卡,但每个显卡显存都不足以装下一个完整的模型,应该怎么办?

PP,流水线并行,需要分层加载,把不同的层加载到不同的GPU上(accelerate的device_map)

4. PP推理时是串行的,1个GPU计算但其他空闲,有什么其他的优化方式

1) 流水线并行(PP), 横向切分,也就是分层加载到不同的显卡上。

2) 张量并行(TP),纵向切分,在 DeepSpeed 里叫模型并行(MP)

下面来简单梳理一下DP,PP,TP,ZeRO以及其中MP的关系。

  • DP  Data parallelism

数据并行算法在多个设备上都拷贝一份完整的模型参数,彼此之间可以独立计算,所以每个设备传入的输入数据不一样,这也是为什么叫数据并行。

只不过每隔一段时间(比如一个batch或者若干个batch)后需要彼此之间同步模型权重的梯度。

  • PP Pipeline Parallelism

属于 Model Parallelism (MP), 模型并行算法,它是模型做层间划分,即inter-layer parallelism。

以下图为例,如果模型原本有6层,你想在2个GPU之间运行pipeline,那么每个GPU只要按照先后顺序存3层模型即可。

大模型面经—分布式训练指南-AI.x社区

  • TP  Tensor Parallelism

Tensor Parallelism就是对模型层内做划分,也叫inter-layer parallelism。

就是把一个变量分散到多个设备并共同完成某个或多个计算操作。对于单个 Tensor/Op 很大 或者模型很大(如GPT3, chatGPT等)的情况,Tensor parallelism 的重要性非常明显。


大模型面经—分布式训练指南-AI.x社区

  • ZeRO

这个之前有比较详细的介绍。​​大模型微调实践必看——一文看懂Deepspeed:用ZeRO训练大模型原理解析及参数含义解释​

5. DP、TP、PP这3种并行方式可以叠加吗?

可以,DP+TP+PP,这就是3D并行。

如果真有1个超大模型需要预训练,3D并行是必不可少的。 

单卡80g,可以完整加载小于40B的模型,但是训练时需要加上梯度和优化器状态,5B模型就是上限了,更别说 activation的参数也要占显存,batch size还得大。而现在100亿以下(10B以下)的LLM只能叫small LLM。

6. 3D并行或者直接上多机多卡的ZeRO的条件是什么?

3D并行的基础是,节点内显卡间NVLINK超高速连接才能上TP。显卡有没有NVLINK都是个问题。 

Zero3 需要满足通信量,假设当65B模型用Zero3,每一个step的每一张卡上需要的通信量是195GB(3倍参数量),也就 是1560Gb。万兆网下每步也要156s的通信时间,非常不现实。

文转载自公众号瓦力算法学研所,作者:喜欢瓦力的卷卷

原文链接:​https://mp.weixin.qq.com/s/_Hg8k-uijw8ntACiiWnhiw​


©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
收藏
回复
举报
回复
相关推荐