Navigate to WaytoAGI Wiki →
Home/Question List/Question Detail

分布式预训练里的流水线并行

Answer

分布式预训练中的流水线并行是一种在模型参数量太大一张卡不能完全放下时采用的切分方法。具体而言,沿着模型的拓扑序将其切分成 p 段,每段为一个 stage。将大小为 N 的 mini-batch 进一步切分为 m 个大小为 M 的 micro-batch(N = m·M),这些 micro-batch 依次进入上述 p 个 stage。

在流水线并行切分后,每个 stage 的耗时会发生变化。假设 1 指出:算力为 1 的节点,处理完整模型的 1 个 micro-batch,前向和反向耗时分别是 t_f 和 t_b。基于此有推论 1:算力为 1/p 的节点,处理完整模型的 1 个 micro-batch,前向和反向耗时分别是 p·t_f 和 p·t_b;推论 2:算力为 1 的节点,处理 1/p 模型的 1 个 micro-batch,前向和反向耗时分别是 t_f/p 和 t_b/p;推论 3:算力为 1/p 的节点,处理 1/p 模型的 1 个 micro-batch,前向和反向耗时分别是 t_f 和 t_b。

从耗时情况来看,理论上界是显存无限大,不需要 pipeline 并行,一把梭直接对 mini-batch 的样本做前向和反向,耗时正比于样本数量,b_best 耗时为 t_best = m·(t_f + t_b)。而最朴素的串行方式,每个 micro-batch 串行逐个做前向和反向,一个 micro-batch 的耗时是 p·(t_f + t_b),那么 1 个 mini-batch 的耗时 t_sequential 是 t_sequential = mp·(t_f + t_b),可见耗时是理论上界的 p 倍,存在大量计算资源闲置空载,硬件利率用很低。

最后小结,3D 并行包括数据并行(DP)、流水线并行(PP)和模型并行(TP)。DP 计算和通信效率友好,但权重显存不友好;PP 要求 mini-batch 里 batch size 足够大以掩盖流水线带来的 overhead,batch size 过大则会增大激活显存占用;TP 权重显存友好,但计算和通信效率不友好,通信量要求大。ZeRO 针对数据并行显存占用大的问题提出优化,Alpa 借鉴 AI 编译器思路对 3D 并行建模并用自动化搜索方式得到并行策略。

Content generated by AI large model, please carefully verify (powered by aily)

References

(7)LLM分布式训练面面观

因此根据推论3可知,所有算力处理整个模型的耗时,跟$$1/p$$的算力处理$$1/p$$段模型的耗时,是一致的。下面开始讨论各种策略下的耗时情况。[heading2]理论上界[content]我们先考虑理想最优情况。此时显存无限大,不需要pipeline并行,一把梭直接对mini-batch的样本做前向和反向,耗时正比于样本数量。由假设1不难算出$$b_\text{best}$$耗时为$$t_{\text{best}}=m\cdot(t_f+t_b)$$[heading2]朴素串行[content]下面考虑最朴素的串行方式,类似于CPU的单周期处理器时代。每个micro-batch串行逐个做前向和反向,如下所示这里蓝色是前向过程,绿色是反向过程,粗略认为反向过程是前向的2倍耗时。此时由推论3知道一个micro-batch的耗时是$$p\cdot(t_f+t_b)$$,那么1个mini-batch的耗时$$t_\text{sequential}$$是$$t_\text{sequential}=mp\cdot(t_f+t_b)$$可见耗时是理论上界的$p$倍,其中有大量的计算资源在闲置空载,硬件利率用很低

(7)LLM分布式训练面面观

当模型参数量太大,一张卡不能完全放下的情况下,就必须对模型进行切分了,流水线并行(Pipeline Parallel)就是一种切分方法。具体来说沿着模型的拓扑序,切分成$$p$$段,每一段为一个stage,因此可以形成逻辑上相互串联的$$p$$个stage将大小为$$N$$的mini-batch进一步切分为$$m$$个大小为$$M$$的micro-batch,因此$$N=m\cdot M$$这些micro-batch依次进入上述$$p$$个stage我们首先研究一下流水线并行切分之后,每个stage的耗时跟原来相比会有什么变化,如下所示假设1:算力为$$1$$的节点,处理完整模型的1个micro-batch,前向和反向耗时分别是$$t_f$$和$$t_b$$推论1:算力为$$1/p$$的节点,处理完整模型的1个micro-batch,前向和反向耗时分别是$$p\cdot t_f$$和$$p\cdot t_b$$推论2:算力为$$1$$的节点,处理$$1/p$$模型的1个micro-batch,前向和反向耗时分别是$$t_f/p$$和$$t_b/p$$推论3:算力为$$1/p$$的节点,处理$$1/p$$模型的1个micro-batch,前向和反向耗时分别是$$t_f$$和$$t_b$$

(7)LLM分布式训练面面观

最后小结一下,本文主要有4部分内容分布式通信原语包括了点对点通信和集合通信的方法。其中集合通信包括了一对多的Broadcast和Scatter,多对一的Reduce和Gather,多对多的AllReduce、AllGather、ReduceScatter和AllToAll3D并行包括了数据并行(DP)、流水线并行(PP)和模型并行(TP)DP的优势是计算和通信效率都很友好,但是权重的显存不友好,每张卡都有一份PP的问题是要求mini-batch里面batch size足够大才能掩盖住流水线带来的overhead。batch size如果过大,会增大激活显存的占用TP的优势是权重显存非常友好,没有冗余。但是计算和通信效率不友好,通信量要求很大,在超出了一个island的时候性能下降很快。ZeRO针对数据并行显存占用大的问题,借鉴了Parameter Server的思路,提出了ZeRO-1,ZeRO-2和ZeRO-3的优化。其中ZeRO-2让每张卡只维护一部分的梯度和优化器状态,显存占用减少到原来的$1/8$,通信带宽保持不变Alpa鉴了AI编译器的思路,对3D并行进行建模,用自动化搜索的方式得到了仅次于手工最优的并行策略PS:由于笔者小A并没有亲手撸过上述内容的所有细节,大部分是通过研究代码和精读优秀文章的方式bottom-up总结而来,本质上是个拾人牙慧的知识搬运工,所以终究是纸上谈兵。因此希望各方有实际经验的大佬猛锤,思维碰撞才生火花,真理越辩越明。如果想了解transformer在NLP/多模态/AIGC的算法知识,分布式训练的知识,以及如何在TVM上做PTQ量化和部署,可以关注我aaronxic哟~

Others are asking
分布式预训练模型并行
分布式预训练模型并行主要包括以下内容: 张量并行:当模型参数增大,除流水线并行外,还可用张量并行缓解,即以前的模型并行。以矩阵乘为例,对权重矩阵 B 有按列切分和按行切分两种方案。按列切分,A 不变,每一列独立计算后结果 concat 在一起;按行切分,A 对应列切分,两部分独立计算后结果 sum 在一起。 大模型发展历程:2017 年发布的 Attention Is All You Need 论文开启了相关研究。之后有多种预训练模型,如 2018 年 Google 提出的 BERT,创新性地双向预训练并行获取上下文语义信息和使用掩码语言建模;2018 年 OpenAI 提出的 GPT,开创仅用自回归语言建模作为预训练目标;2021 年 Meta 提出的首个开源模型 LLAMA,为构建更大规模、更通用的语言模型提供方法与工具。 分布式训练的其他方面: 分布式通信原语包括点对点通信和集合通信,集合通信包含多种方式。 3D 并行包括数据并行,各自有优势和问题。 ZeRO 针对数据并行显存占用大的问题提出优化,Alpa 借鉴 AI 编译器思路对 3D 并行建模并用自动化搜索方式得到并行策略。 如果想了解更多关于 transformer 在 NLP/多模态/AIGC 的算法知识、分布式训练知识,以及如何在 TVM 上做 PTQ 量化和部署,可以关注作者 aaronxic。
2025-03-12
分布式预训练数据并行
分布式预训练中的数据并行是使用广泛且加速性能良好的并行方法。各个数据切片能完全解耦,只需在每个 minibatch 结束时进行梯度的 allreduce。数据并行分为中心化方式(如 pytorch 里的 DataParallel)和无中心化方式(如 pytorch 里的 DistributedDataParallel)。这两种方式最大的区别在于 gradient 和 reduce 计算过程。DataParallel 需在 forward 之后把所有输出 gather 到 0 号卡上,计算完 loss 之后再 scatter 到各个设备上,然后做 backward 独立计算 gradient,最后搜集 gradient 到 0 号卡,forward 和 backward 间需插入一次通信。DistributedDataParallel 则是每张卡独立做 forward 和 backward,然后对各卡的 gradient 做 allreduce,forward 和 backward 间无需通信。此外,ZeRO 的出发点是优化数据并行中的显存占用,因为在数据并行中,每个 device 上都有完整的权重、梯度和优化器状态信息,较为冗余。
2025-03-12
分布式预训练
分布式预训练是指在训练模型时采用的一种方法。 在训练 GPT 时,模型以完全随机的权重开始,随着训练时间的推移,通过从分布中抽样并持续反馈,逐渐学会关于单词、空格和逗号等的知识,预测也越来越一致。观察训练时,可通过损失函数随时间的变化来评估。经过预训练,模型在语言建模中学会强大的通用表示,能有效对任意下游任务进行微调。 此外,还有一些关于初始化权重的灵活方法,如利用非监督式训练方式逐个训练神经层。例如,以受限玻尔兹曼机器(RBM)开始,通过对比发散进行训练,生成隐藏值并模拟训练另一个 RBM,重复此过程形成多层,如有分类需求可添加隐藏单元并微调权重,这种非监督式与监督式的组合也称为半监督式学习。 深度信念网络(DBNs)在标准化 MNIST 字符识别数据库中有出色表现,超越普通神经网络。Yoshua Bengio 等提出深层网络冗余式逐层训练,认为深度机器学习方法在复杂问题上比浅显方法更有效。关于非监督式预训练,利用自动代码取代 RBM 也是一种看法,其关键在于有足够多的显示层,能学习优良的高层数据显示,与传统手动设计特征提取步骤不同。Hinton 与 Bengio 的工作证明了深层神经网络能被训练好的假设是正确的。
2025-03-12
deepseek 分布式如何部署
DeepSeek 的分布式部署情况如下: 腾讯云(自建服务器):提供全版本,采用多机分布式部署,节点数量为 2 个,单节点配置为 HCCPNV6 机型,可在线体验(需开通 T1 平台服务)。 腾讯云(调用 API):提供 DeepSeekR1 和 DeepSeekV3 版本,API 调用 DeepSeek 系列模型限时免费。即日至北京时间 2025 年 2 月 25 日 23:59:59,所有腾讯云用户均可享受 DeepSeekV3、DeepSeekR1 模型限时免费服务,单账号限制接口并发上限为 5。在此之后,模型价格将恢复至原价。 京东云:提供“deepseekr1:1.5b”、“deepseekr1:7b”、“deepseekr1:32b”版本,价格为 1.89 元/小时起,采用服务器部署的方式。 Gitee AI:提供全版本,R1 价格 0.1 元/次,基于沐曦曦云 GPU 及曦源一号国产替代算力集群,有在线体验。 此外,还可以通过以下步骤实现 DeepSeek 联网版的部署: 1. 拥有扣子专业版账号,如果是普通账号,请自行升级或注册专业号后使用。 2. 开通 DeepSeek R1 大模型,访问地址:https://console.volcengine.com/cozepro/overview?scenario=coze 。打开火山方舟,找到开通管理,找到 DeepSeek R1 模型,点击开通服务。添加在线推理模型,添加后在扣子开发平台才能使用。 3. 创建智能体,点击创建,先完成一个智能体的创建。
2025-02-20
deepseek 分布式部署
以下是关于 DeepSeek 分布式部署的相关信息: 云计算厂商提供的 DeepSeek 版本及特点: 腾讯云(自建服务器):全版本,多机分布式部署,节点数量 2 个,单节点配置为 HCCPNV6 机型,可在线体验(需开通 T1 平台服务)。 腾讯云(调用 API):DeepSeekR1、DeepSeekV3,API 调用 DeepSeek 系列模型限时免费,即日起至 2025 年 2 月 25 日 23:59:59,所有腾讯云用户均可享受限时免费服务,单账号限制接口并发上限为 5,之后模型价格将恢复原价。 京东云:“deepseekr1:1.5b、“deepseekr1:7b”、“deepseekr1:32b”,价格 1.89/小时起,服务器部署方式。 gitee ai:全版本,R1 价格 0.1 元/次,基于沐曦曦云 GPU 及曦源一号国产替代算力集群,有在线体验。 价格方面: 腾讯云(调用 API):即日起至 20250208 24:00 享受折扣价,20250209 00:00 恢复原价。输入:¥2¥1/M Tokens,输出:¥8¥2/M Tokens。当前有优惠活动,包括邀请好友赚 2000 万 Tokens,注册即送 2000 万 Tokens。 阿里云(人工智能平台 PAI):以 R1 为例,所需计算资源价格 316.25/小时,模型部署成在线服务,在人工智能平台 PAI 下的模型部署下的模型在线服务 EAS。 阿里云(阿里云百炼):全版本,免费额度:10000000/10000000,通过 API 调用。 华为昇腾社区:全版本,部署 DeepSeekR1 模型用 BF16 权重进行推理至少需要 4 台 Atlas 800I A2(864G)服务器,用 W8A8 量化权重进行推理则至少需要 2 台 Atlas 800I A2,服务器调用 Docker 下载部署权重资源,非 API 调用模式。
2025-02-20
内容生成流水线
在 AIGC 与宠物龙养成游戏——DragonX 中,AI 生产发挥了重要作用。整个 Demo 中超过 90%的内容由 AI 生成,涵盖养成(龙的表现、养成材料水晶)、战斗(技能、技能描述、战斗过程、文字表现、战斗背景图)、游历(游历故事、选项、支线故事、故事背景图)、大厅(不同风格 HUD、音频 BGM)等方面。所使用的 AI 生产工具包括:Stable Diffusion 用于生成所有美术素材,如各阶段的龙、水晶材料、背景等;ChatGpt 用于文案内容生成,包括实时的对战、游历故事生成;AIVA 用于音频生成,应用场景为不同 Hud、战斗、游历的 BGM。您可以通过以下系列阅读获取更多信息:
2025-02-24
这个网站的作用是什么?是通过这个网站更好的使用训练AI吗?
WaytoAGI 网站具有以下功能: 1. 和 AI 知识库对话:您可以在此询问任何关于 AI 的问题。 2. AI 网站:集合了精选的 AI 网站,可按需求找到适合您的工具。 3. AI 提示词:集合了精选的提示词,能复制到 AI 对话网站使用。 4. 知识库精选:将每天知识库的精华内容呈现给大家。 总之,WaytoAGI 网站和 WaytoAGI 知识库相互独立又有关联,希望成为您学习 AI 路上的好助手。
2025-04-13
想自学ai训练师 推荐哪个视频去学习
以下是为您推荐的自学 AI 训练师的视频: 1. 3 月 26 日|自由讨论|离谱视频切磋大会 猫先生介绍自己的背景和擅长领域 AI 学习与实践的重要性 AI 交流会:分享项目经验和技能 讨论比赛规则和资源分配 AI 工具学习与合作 广州 AI 训练师叶轻衣分享使用 AI 工具的经验和想法 组队提升工作效率 AI 技术在 3D 动画制作中的应用与优势 链接:https://waytoagi.feishu.cn/minutes/obcnc915891t51l64uyonvp2?t=0 2. AI 大神 Karpathy 再发 LLM 入门介绍视频 神经网络训练的目标:训练神经网络的目标是让模型学习 token 在序列中彼此跟随的统计关系,即预测给定上下文(token 序列)后,下一个最有可能出现的 token。 Token 窗口:训练时,模型从数据集中随机抽取固定长度的 token 窗口(例如 8000 个 token)作为输入。 神经网络的输入与输出:输入为 Token 序列(上下文),输出为预测下一个 token 的概率分布,词汇表中每个 token 都有一个概率值。 随机初始化与迭代更新:神经网络初始参数是随机的,预测也是随机的。训练过程通过迭代更新参数,调整预测结果,使其与训练数据中的统计模式相匹配。 损失函数与优化:训练过程使用损失函数来衡量模型预测与真实 token 的差距。优化算法(如梯度下降)用于调整参数,最小化损失函数,提高预测准确率。 神经网络内部结构:Transformer 包含注意力机制和多层感知器等组件,能够有效地处理序列数据并捕捉 token 之间的复杂关系。 链接:无
2025-04-12
想自学ai训练师
如果您想自学成为 AI 训练师,以下是一些相关的知识和建议: 一、AI 训练的基本概念 训练是指通过大数据训练出一个复杂的神经网络模型。这需要使用大量标记过的数据来训练相应的系统,使其能够适应特定的功能。训练过程需要较高的计算性能,能够处理海量的数据,并具有一定的通用性,以便完成各种各样的学习任务。 二、相关领域的知识 1. 机器学习:机器学习是人工智能的一个分支,是实现人工智能的途径之一,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。 2. 自然语言处理:自然语言(NLP)认知和理解是让电脑把输入的语言变成有意思的符号和关系,然后根据目的再处理。自然语言生成系统则是把计算机数据转化为自然语言,是人工智能和语言学领域的分支学科。 三、学习资源和实践 您可以参考以下的一些资源和实践方式: 1. 参加相关的线上交流会,例如 3 月 26 日的自由讨论活动,其中会分享项目经验、技能以及使用 AI 工具的经验和想法。 2. 了解一些健身的 AI 产品,如 Keep(https://keep.com/)、Fiture(https://www.fiture.com/)、Fitness AI(https://www.fitnessai.com/)、Planfit(https://planfit.ai/)等,虽然这些主要是健身领域的应用,但也能帮助您了解 AI 在不同场景中的应用和创新。 请注意,以上内容由 AI 大模型生成,请仔细甄别。
2025-04-12
怎么用把AI训练成自己的东西?
要将 AI 训练成自己的东西,可以参考以下方法: 1. 像马斯克提到的,对于公开的推文数据可以合理使用,但不能使用私人的东西进行训练。同时,要注重数据的质量和使用方式,高质量的数据对于训练效果至关重要。 2. 张梦飞的方法中,例如部署 LLama Factory 时,需要添加选中“identity”数据集,将训练轮数改成 15 等,并通过一系列操作进行训练和测试。但需要注意的是,训练大模型是复杂的过程,数据集和训练参数都会影响最终效果,需要反复调试和深入学习实践。 3. 在写作方面,我们可以根据自身需求选择人类驱动为主,利用 AI 进行修改完善,或者先由 AI 生成内容再进行修改以符合自己的风格。
2025-04-11
如何训练一个AI 阅读教练
训练一个 AI 可以类比为培养一位职场新人,主要包括以下三个阶段: 1. 规划阶段:明确目标 确定 AI 的具体任务,比如结构化外文精读等。 将任务拆解为可管理的子任务。 设计每个子任务的执行方法。 2. 实施阶段:实战指导 搭建工作流程。 为每个子任务设置清晰的操作指南。 像指导新员工一样,手把手引导 AI 完成任务,并及时验证其输出质量。 3. 优化阶段:持续改进 通过反复测试和调整,不断优化 AI 的性能。 调整工作流程和 Prompt 配置,直到 AI 能稳定输出高质量的结果。 当前大模型在处理多步骤复杂任务时存在明显局限,比如在“数据分析图表、剧情游戏”或“本文结构化外文精读”等任务中,仅依靠单一 Prompt 指令难以稳定执行,现阶段的 AI 更像缺乏独立解决问题能力的职场新人,需要遵循指引和给定的流程才能完成特定任务。如果您已经完全了解上述内容,不妨自己设定一个任务目标,动手构建一个专属于自己的 AI 。
2025-04-11
模型训练的基本名词和方法
以下是关于模型训练的基本名词和方法的介绍: 基本名词: 1. 过拟合&欠拟合:过拟合和欠拟合都是不好的现象,需要加以控制以让模型达到理想效果。解决方法包括调整训练集、正则化和训练参数等,过拟合可减少训练集素材量,欠拟合则增加训练集素材量。 2. 泛化性:泛化性不好的模型难以适应其他风格和多样的创作。可通过跑 lora 模型生图测试判断泛化性,解决办法与过拟合和欠拟合类似,从训练集、正则化、训练参数等方面调整。 3. 正则化:是解决过拟合和欠拟合情况、提高泛化性的手段,给模型加规则和约束,限制优化参数,有效防止过拟合,提高模型适应不同情况的表现和泛化性。 方法: 1. 全面充分采集训练素材:例如在角色训练素材中,应包含各种角度、表情、光线等情况的素材,确保模型具有较好泛化性。 2. 图像预处理:对训练素材进行分辨率调整、裁切操作,并对训练集进行打标签处理。 3. 参数调优:尽量将训练时长控制在半小时左右,过长易导致过拟合,通过调整参数控制时长。 4. 观察学习曲线:通过观察学习曲线来调整训练素材和参数。 5. 过拟合&欠拟合处理:测试训练好的模型,观察过拟合和欠拟合问题,进一步通过调整训练素材和正则化等手段优化。 此外,在模型训练中还需注意: 1. 数据集获取渠道:可通过网上收集、购买、使用无版权问题的如古画等,原则是根据生成图的需求找对应数据集,要清晰、主体元素干净、风格统一。 2. 数据集处理:包括基础处理如裁剪保证清晰和分辨率,更重要的是写标注。 3. 设置模型触发词:可自定义,完整形式可以是一句话,建议以王 flags 模型为主。 4. 统一标注风格与应用场景:例如未来高科技 3D 天然风格,用于互联网首页图像等,并概括主题内容、描述物体特征等。 5. 利用 GPT 辅助描述并人工审核:让 GPT 按要求描述,人工审核修改。 6. 模型训练的准备与流程:完成数据集描述后进入训练流程,选择模型训练分类和数据集,创建并上传数据集压缩包,注意数据名与图片命名一致。选择训练模式和参数,新手选用普通基础模式,训练集质量重要,训练参数中总步数与训练集图片数量相关,触发词设定要避免概念混乱。
2025-04-09