在人工智能领域,计算任务尤其是模型训练和推理,普遍依赖于并行计算技术。
AI计算中涉及的诸多核心算法,例如矩阵相乘、卷积、循环层和梯度运算等,都需要借助成千上万的GPU,通过并行任务协作完成,从而大幅缩短计算时间。
构建高效的并行计算框架时,通常采用以下几种主流并行策略:
接下来,我们将逐一深入剖析这些并行计算方式的核心原理。
首先介绍DP,即数据并行(Data Parallelism)。
AI训练中使用的并行技术,总体上可划分为数据并行和模型并行两大类。之前提及的PP(流水线并行)、TP(张量并行)和EP(专家并行),均属于模型并行范畴,后续会详细展开。
在此之前,我们需要简要回顾神经网络的训练流程。主要包括以下几个关键步骤:
1、前向传播:输入一批训练数据,通过模型计算得到预测结果。
2、计算损失:利用损失函数对比预测结果与真实标签之间的差异。
3、反向传播:将计算出的损失值反向传播至网络各层,求解每个参数的梯度。
4、梯度更新:优化器基于梯度信息更新所有权重和偏置参数。
上述过程循环迭代,直至模型性能达到预期目标,训练即告完成。
回到数据并行主题。
数据并行是大规模模型训练中最常用的并行范式,同样适用于推理过程。
其核心思想是每个GPU均保存完整的模型副本,然后将训练数据划分为多个小批次(mini-batch),并分配至不同的GPU独立处理。
在数据并行框架下,大模型训练的具体流程如下:
1、将训练数据均匀分割,分发至多个并行工作的GPU(称为Worker);
2、每个GPU持有相同的模型及参数,独立执行前向传播与反向传播,计算出本地梯度;
3、各GPU通过高速互联进行通信,采用All-Reduce操作将梯度发送至一个集中管理的GPU(称为Server);
4、Server GPU对所有接收到的梯度进行聚合(如求和或平均),得到全局梯度;
5、Server GPU将全局梯度广播回所有Worker GPU,各GPU据此更新本地模型参数。更新后,所有Worker GPU的模型参数保持一致。
此后,重复这一过程,直至训练结束。
以下示意图可辅助理解:
(从下往上看)
这里提到的All-Reduce是分布式计算中的关键操作,意为“全规约”,即对所有节点的数据进行聚合运算(如求和、求最大值等),并将最终结果同步至所有节点。
数据并行的优势在于实现相对简单,能显著加速海量数据的训练进程,特别适合数据规模远大于模型参数的场景。
其劣势主要体现在显存限制上。由于每个GPU需存储完整模型副本,当模型参数量巨大时,显存需求可能超出单个GPU的容量。
此外,数据并行的通信开销较大。GPU间需频繁同步梯度或参数,模型规模越大、GPU数量越多,通信负担越重。例如,千亿参数模型在FP16精度下,单次梯度同步可能需传输约2TB数据。
此处需特别介绍ZeRO(Zero Redundancy Optimizer,零冗余优化器)技术。
传统数据并行中,每个GPU保存完整模型副本导致内存冗余。那么,是否能让每个GPU仅存储模型的一部分呢?
ZeRO正是基于这一思路,通过对模型副本中的优化器状态、梯度和模型参数进行智能切分,显著降低内存占用。
ZeRO分为三个渐进阶段:
ZeRO-1:仅对优化器状态进行划分。
ZeRO-2:对优化器状态和梯度进行划分。
ZeRO-3:对优化器状态、梯度和模型参数进行全面划分。(内存节省效果最显著)
通过以下图示和表格可以更直观地理解:
实测数据表明,ZeRO-3在1024块GPU上训练万亿参数模型时,可将每卡显存占用从7.5TB大幅降低至7.3GB。
值得一提的是,数据并行还有其分布式版本DDP(Distributed Data Parallel)。传统DP多用于单机多卡,而DDP可扩展至多机多卡场景。它依赖于Ring-AllReduce通信拓扑(由百度率先提出),能有效解决传统数据并行中Server节点的通信瓶颈问题。
接下来探讨模型并行。
与数据并行分割数据不同,模型并行旨在将模型本身分割成多个部分,由不同的GPU分别执行。(注:业界对“模型并行”的定义存在一定交叉,有时张量并行也被归入此范畴。)
流水线并行是一种典型的模型并行策略,它将神经网络的不同层(或连续若干层)分配至不同的GPU上,数据像流水线一样依次经过各GPU处理。
例如,对于一个7层的神经网络,可将第1-2层置于GPU1,第3-5层置于GPU2,第6-7层置于GPU3。训练时,数据按此顺序流动处理。
表面看,流水线并行类似串行过程,每个GPU必须等待前序GPU的输出,这可能造成大量的GPU空闲时间。
上图中黄色区域即为“气泡”(Bubble)时间,代表GPU处于等待状态。气泡越多,资源浪费越严重。
为减少气泡,可将每个mini-batch进一步细分为更小的micro-batch。当GPU0处理完一个micro-batch后,立即开始处理下一个,从而填充空闲时段。如下图(b)所示:
此外,还可采用提前调度策略:在一个micro-batch完成前向计算后,立即调度其反向计算,以释放显存并接纳新数据,从而提升整体吞吐。如上图(c)所示。
这些优化方法能有效压缩流水线并行的气泡时间。
流水线并行需要对任务调度和数据传输进行精细管理,否则容易导致流水线阻塞,产生额外延迟。
模型并行的另一种重要形式是张量并行。
如果说流水线并行是对模型进行“垂直”分层切割,那么张量并行则是在单个层内部进行“横向”操作切割。
具体而言,张量并行将模型中的大型张量(如权重矩阵)按特定维度(行或列)切分,分布到不同的GPU上并行计算。
张量切分主要有两种方式:按行切分(对应行并行,Row Parallelism)和按列切分(对应列并行,Column Parallelism)。
每个GPU处理分配到的子张量,最后通过集合通信操作(如All-Gather或All-Reduce)汇总计算结果。
张量并行的优点在于能有效处理单个超大张量,显著减轻单GPU的内存压力。
其缺点在于,当切分维度较多时,GPU间通信开销会急剧增加。同时,实现较为复杂,需精心设计切分方案与通信同步策略。
下图简要对比了数据并行、流水线并行和张量并行:
2025年初,随着DeepSeek的崛起,MoE(Mixture of Experts,混合专家模型)也备受关注。
MoE模型的核心结构是“多个专家层 + 路由网络(门控网络)”。
每个专家子网络擅长处理特定类型或特征的输入token(如语法、语义等)。路由网络动态分析输入token,仅激活少数相关专家进行处理,其余专家保持静默。
MoE通过这种任务分工与算力按需分配机制,大幅提升了模型效率与容量。
专家并行(Expert Parallelism)是专为MoE模型设计的并行策略。它将不同的专家子模型分布到不同的GPU上,实现计算负载的分布式处理。
专家并行的独特之处在于,输入数据需通过一个动态路由机制进行重分配,将不同token发送至对应的专家GPU上。此过程涉及全局数据交换。
在所有专家处理完毕后,又需要将分散的结果重新收集并按序整合。
这种跨所有节点的数据重分布与收集模式,称为All-to-All通信。
专家并行可能面临负载不均衡的挑战。如果路由机制将过多token导向某个专家,可能超出其处理能力,形成性能瓶颈。
因此,设计智能且均衡的路由(门控)策略是成功部署专家并行的关键。
在实际的工业级大模型训练中,尤其是针对万亿参数级别模型,几乎从不使用单一并行策略,而是采用多维度的混合并行,灵活组合多种方式。
例如:
数据并行 + 张量并行:数据并行处理大批量样本,张量并行分解单样本的大型矩阵运算。
流水线并行 + 专家并行:流水线并行切割模型层,专家并行处理层内的多个专家模块。
更先进的3D并行:综合运用“数据并行 + 张量并行 + 流水线并行”,实现数据、张量和模型层的三重拆分,已成为训练超大模型的主流方案。
(3D并行示意图)
以上便是对DP、PP、TP、EP等主流并行训练方式的系统性介绍。
并行计算技术本身非常复杂,本文仅做了入门级梳理。在实际开发中,工程师通常无需从头实现,业界已有诸多成熟框架,如DeepSpeed(微软开源,支持3D并行与ZeRO优化)、Megatron-LM(NVIDIA开源,3D并行典范)、FSDP等,可大幅降低大模型训练门槛。
深入理解这些并行策略,其意义远超编码实现本身,它有助于我们更深刻地洞悉算力集群的架构设计与网络规划逻辑。
不同的并行方式会产生截然不同的通信流量模式。算力集群的整体架构与网络设计,必须精准适配这些流量特征,才能满足高效模型训练与推理的需求。
举例来说,数据并行需要高带宽网络以支撑频繁的梯度同步;流水线并行建议将连续的计算阶段部署在网络拓扑邻近的服务器上(例如叶脊网络中同一叶子交换机下),以减少通信延迟;张量并行由于通信密集,往往更适合在单台服务器的多卡间进行;专家并行则需要规划好All-to-All通信路径,以应对动态的数据交换。
总之,在GPU单卡算力增长逐步面临瓶颈的当下,深入钻研并行计算设计,从系统架构与高速网络中挖掘性能潜力,已成为推动AI进步的关键路径。
随着AI技术浪潮持续奔涌,未来或许会有更创新的并行范式涌现,让我们共同期待!
本文由主机测评网于2026-01-28发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/20260121240.html