<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Pipeline Parallelism on Bevisy's Blogs</title><link>https://bevisy.github.io/tags/pipeline-parallelism/</link><description>Recent content in Pipeline Parallelism on Bevisy's Blogs</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Mon, 27 Jul 2026 10:15:00 +0800</lastBuildDate><atom:link href="https://bevisy.github.io/tags/pipeline-parallelism/index.xml" rel="self" type="application/rss+xml"/><item><title>LLM 术语全景图（六）：并行策略——多维并行的组合</title><link>https://bevisy.github.io/p/llm-terminology-06-parallelism/</link><pubDate>Mon, 27 Jul 2026 10:15:00 +0800</pubDate><guid>https://bevisy.github.io/p/llm-terminology-06-parallelism/</guid><description>&lt;img src="https://bevisy.github.io/p/llm-terminology-06-parallelism/06.png" alt="Featured image of post LLM 术语全景图（六）：并行策略——多维并行的组合" /&gt;
 &lt;blockquote&gt;
 &lt;p&gt;这是「大模型训练与推理术语全景图」系列的第 6 篇，覆盖并行策略的 8 个概念：Data Parallelism、Tensor Parallelism、Pipeline Parallelism、Expert Parallelism、Context Parallelism、Sequence Parallelism、FSDP、ZeRO。
主要参考模型：DeepSeek V3、GLM-5、Llama 3、Megatron-LM、vLLM&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id="开篇并行策略是组合问题"&gt;开篇：并行策略是组合问题
&lt;/h2&gt;&lt;p&gt;大模型的多卡并行不是单一策略的选择题，而是多维度的组合题。各策略切分的对象不同：Data Parallelism（DP）切 batch，Tensor Parallelism（TP）在层内切权重矩阵，Pipeline Parallelism（PP）在层间切模型，Expert Parallelism（EP）切专家，Context/Sequence Parallelism（CP/SP）切序列。训练大 MoE 模型常同时叠加 TP+EP+PP+DP（或 FSDP/ZeRO 替代纯 DP），DeepSeek V3 即是 TP=8 + EP=32 + PP + DP 的组合；推理侧则以 TP+EP 为主，PP 较少使用（vLLM V1 才补上 PP 推理）。组合时关键约束是通信带宽层级——TP 每层都要 AllReduce，对带宽极敏感，必须放在 NVLink 域内（单节点，TP=2/4/8）；PP 的 stage 间只传隐状态、EP 的 All-to-All 通信量较小，可跨节点；DP 的 AllReduce 介于二者之间。一句话：高带宽通信配高频切分（TP 在节点内），低带宽链路配低频切分（PP/EP 跨节点）。本篇按切分对象逐条梳理这 8 个术语。&lt;/p&gt;
&lt;h2 id="并行策略parallelism-strategies"&gt;并行策略（Parallelism Strategies）
&lt;/h2&gt;
 &lt;blockquote&gt;
 &lt;p&gt;LLM 训练和推理都需要多 GPU 协作。并行策略决定模型参数、梯度、优化器状态、激活值如何在多卡间分割与通信。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h3 id="data-parallelism"&gt;Data Parallelism
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;缩写&lt;/strong&gt;：DP&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;中文名称&lt;/strong&gt;：数据并行&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;简短介绍&lt;/strong&gt;：每张 GPU 持有完整模型副本，将不同 batch 分配给不同 GPU 并行计算，反向传播后通过 AllReduce 同步梯度。最简单的并行方式，但要求单卡能放下完整模型。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;详细介绍&lt;/strong&gt;：DP 的工作流程：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;将 batch 均分到 N 张 GPU，每卡持有相同模型权重&lt;/li&gt;
&lt;li&gt;各卡独立前向 + 反向计算，得到本地梯度&lt;/li&gt;
&lt;li&gt;AllReduce 通信：所有 GPU 梯度求和取平均&lt;/li&gt;
&lt;li&gt;各卡用同步后的梯度更新本地权重&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;通信模式：每步训练需 1 次 AllReduce（梯度同步），通信量 = 2 × model_size（ring-allreduce 发送+接收各一次）。&lt;/p&gt;
&lt;p&gt;纯 DP 的限制：单卡必须能放下完整模型 + 优化器状态 + 激活值。对 7B 模型，bf16 权重 14GB + AdamW 优化器状态 (fp32 m/v) 56GB + 激活值 → 需 80GB+ 显存。超过单卡容量就必须用 FSDP/ZeRO 或 TP/PP。&lt;/p&gt;
&lt;p&gt;与 FSDP/ZeRO 的关系：FSDP/ZeRO 是 DP 的改进版，将模型参数也分片到各卡，解决单卡放不下的问题。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;关联论文/模型&lt;/strong&gt;：PyTorch DDP (DistributedDataParallel)；所有多卡训练的基础&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;权威分析链接&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://docs.pytorch.org/docs/stable/generated/torch.nn.parallel.DistributedDataParallel.html" target="_blank" rel="noopener"
 &gt;https://docs.pytorch.org/docs/stable/generated/torch.nn.parallel.DistributedDataParallel.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://docs.vllm.ai/en/latest/serving/parallelism_scaling.html" target="_blank" rel="noopener"
 &gt;https://docs.vllm.ai/en/latest/serving/parallelism_scaling.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="tensor-parallelism"&gt;Tensor Parallelism
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;缩写&lt;/strong&gt;：TP&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;中文名称&lt;/strong&gt;：张量并行&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;简短介绍&lt;/strong&gt;：将单个层的权重矩阵按行或列切分到多张 GPU 上，各卡并行计算矩阵乘法的不同部分，再通过 AllReduce/AllGather 拼接结果。实现层内并行，是 MoE 大模型推理的标配。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;详细介绍&lt;/strong&gt;：TP 的两种切分方式：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Column Parallelism（列并行）：W 按 output 维度切分
&lt;ul&gt;
&lt;li&gt;各卡计算 Y_i = X · W_i（输入相同，权重不同）&lt;/li&gt;
&lt;li&gt;输出拼接需 AllGather&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Row Parallelism（行并行）：W 按 input 维度切分
&lt;ul&gt;
&lt;li&gt;各卡计算 Y_i = X_i · W（输入不同，权重相同）&lt;/li&gt;
&lt;li&gt;输出求和需 AllReduce&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Transformer 层的 TP 策略（Megatron 方案）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Attention：Q/K/V 投影用列并行（按 head 切分，天然并行），输出投影用行并行&lt;/li&gt;
&lt;li&gt;FFN：第一个 Linear 列并行，第二个 Linear 行并行&lt;/li&gt;
&lt;li&gt;一层内只需 2 次 AllReduce（attention 后 + FFN 后）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;TP 的通信开销：每层 2 次 AllReduce，通信量 = 2 × hidden_size × seq_len × batch × 2 (send+recv)。&lt;/p&gt;
&lt;p&gt;TP 度数选择：通常 TP=2/4/8（受 NVLink 带宽限制，跨节点 TP 性能差）。推理时 TP=N 意味着 N 张卡共同服务一个请求。&lt;/p&gt;
&lt;p&gt;vLLM 推理：&amp;ndash;tensor-parallel-size N&lt;/p&gt;
&lt;p&gt;与 EP 的关系：MoE 模型通常 TP + EP 组合——注意力用 TP，专家用 EP。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;关联论文/模型&lt;/strong&gt;：&amp;ldquo;Megatron-LM&amp;rdquo; (Shoeybi et al., 2019, arXiv:1909.08053)；DeepSeek V3 (TP=8)；GLM-5 (TP=8)；vLLM 推理标配&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;权威分析链接&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://docs.vllm.ai/en/latest/serving/parallelism_scaling.html" target="_blank" rel="noopener"
 &gt;https://docs.vllm.ai/en/latest/serving/parallelism_scaling.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://arxiv.org/abs/1909.08053" target="_blank" rel="noopener"
 &gt;https://arxiv.org/abs/1909.08053&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="pipeline-parallelism"&gt;Pipeline Parallelism
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;缩写&lt;/strong&gt;：PP&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;中文名称&lt;/strong&gt;：流水线并行&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;简短介绍&lt;/strong&gt;：将模型的不同层分配到不同 GPU 上，数据像流水线一样依次通过各卡。解决单卡放不下深层模型的问题，但有流水线气泡（bubble）开销。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;详细介绍&lt;/strong&gt;：PP 的工作方式：&lt;/p&gt;
&lt;p&gt;将 L 层模型分到 N 个 stage（GPU），每个 stage 处理 L/N 层。
GPU 0 (layer 0-15) → GPU 1 (layer 16-31) → &amp;hellip; → GPU N-1 (layer L-N*16 ~ L-1)&lt;/p&gt;
&lt;p&gt;问题：朴素 PP 下，GPU 0 计算 forward 时 GPU 1~N-1 空闲 → 气泡占比 1-1/N。&lt;/p&gt;
&lt;p&gt;GPipe 方案（微批次填充）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;将一个 batch 分成 M 个 micro-batch&lt;/li&gt;
&lt;li&gt;M 个 micro-batch 流水通过各 stage&lt;/li&gt;
&lt;li&gt;气泡占比 = (N-1) / (M+N-1)，M 越大气泡越小&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;1F1B 调度（Megatron）：交替执行 1 个 forward + 1 个 backward，减少激活值内存峰值。&lt;/p&gt;
&lt;p&gt;PP 的通信：stage 间传递隐状态，通信量 = hidden_size × batch × seq_len，比 TP 小得多（适合跨节点）。&lt;/p&gt;
&lt;p&gt;PP 在推理中的应用：较少用于推理（推理无反向传播，气泡问题不同），主要用于训练。vLLM V1 已支持 PP 推理。&lt;/p&gt;
&lt;p&gt;注意：推测解码（Speculative Decoding）长期与 PP 不兼容，vLLM V1 近期才解决。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;关联论文/模型&lt;/strong&gt;：&amp;ldquo;GPipe&amp;rdquo; (Huang et al., 2019, arXiv:1811.06965)；Megatron-LM (1F1B 调度)；DeepSpeed&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;权威分析链接&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://docs.vllm.ai/en/latest/serving/parallelism_scaling.html" target="_blank" rel="noopener"
 &gt;https://docs.vllm.ai/en/latest/serving/parallelism_scaling.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://arxiv.org/abs/1811.06965" target="_blank" rel="noopener"
 &gt;https://arxiv.org/abs/1811.06965&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="expert-parallelism"&gt;Expert Parallelism
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;缩写&lt;/strong&gt;：EP&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;中文名称&lt;/strong&gt;：专家并行&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;简短介绍&lt;/strong&gt;：MoE 模型专用并行策略，将不同的专家（expert）分配到不同 GPU 上，每个 token 通过 All-to-All 通信路由到对应专家所在的卡上计算。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;详细介绍&lt;/strong&gt;：EP 的核心流程：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Router 在每卡本地计算路由（哪些 token 去哪些专家）&lt;/li&gt;
&lt;li&gt;All-to-All 通信：将 token 发送到目标专家所在 GPU&lt;/li&gt;
&lt;li&gt;各卡上的专家计算 FFN&lt;/li&gt;
&lt;li&gt;All-to-All 通信：将结果送回原始卡&lt;/li&gt;
&lt;li&gt;Router 加权合并结果&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;EP 的通信模式：2 次 All-to-All（dispatch + combine），通信量取决于 token 数和激活专家数。&lt;/p&gt;
&lt;p&gt;EP 度数：通常等于专家数或其因子。如 DeepSeek V3 有 256 个专家，EP=256 意味着每卡 1 个专家。实际中 EP=8/16/32 更常见（每卡多个专家）。&lt;/p&gt;
&lt;p&gt;TP + EP 组合（大 MoE 模型标配）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Attention 层：TP 切分（按 head 分卡）&lt;/li&gt;
&lt;li&gt;MoE 层：EP 切分（按 expert 分卡）&lt;/li&gt;
&lt;li&gt;示例：DeepSeek V3 训练用 TP=8 + EP=32 + DP=&amp;hellip; + PP=&amp;hellip;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;EP 的挑战：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;负载不均衡：某些专家被选中的 token 多，导致某些 GPU 过载&lt;/li&gt;
&lt;li&gt;All-to-All 通信：跨节点延迟高，需要高效通信库（如 NCCL）&lt;/li&gt;
&lt;li&gt;DeepSeek V3 的无辅助损失路由策略帮助均衡&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;关联论文/模型&lt;/strong&gt;：&amp;ldquo;GShard&amp;rdquo; (Lepikhin et al., 2020, arXiv:2006.16668)；&amp;ldquo;Switch Transformer&amp;rdquo; (Fedus et al., 2021, arXiv:2101.03961)；DeepSeek V3 (技术报告)；GLM-5 (技术报告)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;权威分析链接&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://docs.vllm.ai/en/latest/serving/parallelism_scaling.html" target="_blank" rel="noopener"
 &gt;https://docs.vllm.ai/en/latest/serving/parallelism_scaling.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://arxiv.org/abs/2101.03961" target="_blank" rel="noopener"
 &gt;https://arxiv.org/abs/2101.03961&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="context-parallelism"&gt;Context Parallelism
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;缩写&lt;/strong&gt;：CP&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;中文名称&lt;/strong&gt;：上下文并行&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;简短介绍&lt;/strong&gt;：将输入序列按长度维度切分到多张 GPU 上，各卡并行处理序列的不同段落，通过环式通信交换 KV 实现完整注意力。用于超长上下文训练和推理。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;详细介绍&lt;/strong&gt;：CP 解决的问题：&lt;/p&gt;
&lt;p&gt;长序列（128K~1M token）的注意力计算 O(n^2) 和 KV Cache 内存超出单卡容量。CP 将序列分段，多卡协作完成注意力。&lt;/p&gt;
&lt;p&gt;工作方式（Ring Attention / Ulysses 两种方案）：&lt;/p&gt;
&lt;p&gt;Ring Attention：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;序列分成 N 段，每卡持有 1 段的 Q/K/V&lt;/li&gt;
&lt;li&gt;KV 在卡间环形传递，每卡依次与其他段的 K/V 做注意力&lt;/li&gt;
&lt;li&gt;N 步后完成完整注意力计算&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Ulysses（DeepSpeed Ulysses）：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;序列按 head 维度分卡（不是按序列位置）&lt;/li&gt;
&lt;li&gt;通过 All-to-All 将 Q/K/V 重排为每卡持有所有位置的部分 head&lt;/li&gt;
&lt;li&gt;各卡独立计算部分 head 的完整注意力&lt;/li&gt;
&lt;li&gt;再 All-to-All 重排回去&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;使用 CP 的模型：DeepSeek V3（训练用 CP）、GLM-5（1M 上下文训练）、Kimi Linear（1M 上下文）。&lt;/p&gt;
&lt;p&gt;vLLM 推理中：CP 用于超长上下文推理（如 1M token），&amp;ndash;context-parallel-size N。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;关联论文/模型&lt;/strong&gt;：&amp;ldquo;Ring Attention&amp;rdquo; (Liu et al., 2023, arXiv:2310.01889)；&amp;ldquo;DeepSpeed Ulysses&amp;rdquo; (Microsoft, 2023)；DeepSeek V3 训练&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;权威分析链接&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://docs.vllm.ai/en/latest/serving/parallelism_scaling.html" target="_blank" rel="noopener"
 &gt;https://docs.vllm.ai/en/latest/serving/parallelism_scaling.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://arxiv.org/abs/2310.01889" target="_blank" rel="noopener"
 &gt;https://arxiv.org/abs/2310.01889&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="sequence-parallelism"&gt;Sequence Parallelism
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;缩写&lt;/strong&gt;：SP&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;中文名称&lt;/strong&gt;：序列并行&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;简短介绍&lt;/strong&gt;：将序列的激活值沿序列维度切分到多卡，主要用于减少 TP 中 LayerNorm 和 Dropout 的冗余计算和内存。与 CP 类似但侧重点不同——SP 是 TP 的辅助，CP 是独立的注意力并行。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;详细介绍&lt;/strong&gt;：SP 的两种含义：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Megatron SP（TP 辅助）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;TP 只切分 Q/K/V/FFN 矩阵，LayerNorm 和 Dropout 在所有 TP 卡上冗余计算&lt;/li&gt;
&lt;li&gt;SP 将 LayerNorm/Dropout 的激活沿序列维度切分，各卡只处理部分 token&lt;/li&gt;
&lt;li&gt;在进入 TP 层前用 AllGather 恢复完整序列&lt;/li&gt;
&lt;li&gt;减少激活内存，但增加通信&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;DeepSpeed Ulysses SP（= CP 的一种实现）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;与上述 Megatron SP 不同，是独立的序列维度并行&lt;/li&gt;
&lt;li&gt;通过 All-to-All 重排 head 和 sequence 维度&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Megatron SP 与 CP 的区别：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;SP：只切分非 TP 部分（LayerNorm/Dropout），注意力仍在单卡完整计算&lt;/li&gt;
&lt;li&gt;CP：注意力本身也并行化，多卡协作完成完整注意力&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;实践中 SP 通常与 TP 配合使用（TP+SP），而 CP 可独立使用。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;关联论文/模型&lt;/strong&gt;：&amp;ldquo;Megatron-LM&amp;rdquo; (arXiv:2104.04473, SP 部分)；DeepSpeed Ulysses&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;权威分析链接&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/NVIDIA/Megatron-LM" target="_blank" rel="noopener"
 &gt;https://github.com/NVIDIA/Megatron-LM&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="fully-sharded-data-parallelism"&gt;Fully Sharded Data Parallelism
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;缩写&lt;/strong&gt;：FSDP&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;中文名称&lt;/strong&gt;：全分片数据并行&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;简短介绍&lt;/strong&gt;：DP 的进化版，将模型参数、梯度、优化器状态全部分片到各 GPU，计算时按需 AllGather 恢复完整参数，反向后 ReduceScatter 分片梯度。PyTorch 原生支持的大模型训练方案。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;详细介绍&lt;/strong&gt;：FSDP 的工作流程：&lt;/p&gt;
&lt;p&gt;前向传播：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;进入某层前，AllGather 从各卡收集该层完整参数&lt;/li&gt;
&lt;li&gt;用完整参数计算前向&lt;/li&gt;
&lt;li&gt;计算完后立即丢弃完整参数，只保留本卡分片（节省显存）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;反向传播：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;再次 AllGather 恢复该层参数&lt;/li&gt;
&lt;li&gt;计算梯度&lt;/li&gt;
&lt;li&gt;ReduceScatter 将梯度按分片同步到各卡&lt;/li&gt;
&lt;li&gt;各卡用本地分片梯度更新本地分片的优化器状态&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;显存节省：模型参数+梯度+优化器从全量 (16+16+32 = 64 bytes/param, fp32 AdamW) 降至 1/N。7B 模型在 N=8 卡上每卡仅需 ~8GB 而非 ~56GB。&lt;/p&gt;
&lt;p&gt;FSDP vs ZeRO-3：两者原理几乎相同，FSDP 是 PyTorch 原生实现，ZeRO-3 是 DeepSpeed 实现。FSDP 更易用，ZeRO 配置更灵活。&lt;/p&gt;
&lt;p&gt;FSDP 的分层分片（nested FSDP / per-layer sharding）：可按层粒度分片，进一步减少峰值显存（只需单层完整参数在内存中）。&lt;/p&gt;
&lt;p&gt;混合并行：FSDP + TP + PP 可组合使用。如 FSDP(dp=4) + TP(tp=8) + PP(pp=2) 用于超大模型。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;关联论文/模型&lt;/strong&gt;：&amp;ldquo;PyTorch FSDP&amp;rdquo; (Zhao et al., 2023, arXiv:2304.11277)；PyTorch 2.x 原生支持；Llama 3 训练&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;权威分析链接&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://docs.pytorch.org/docs/stable/fsdp.html" target="_blank" rel="noopener"
 &gt;https://docs.pytorch.org/docs/stable/fsdp.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://arxiv.org/abs/2304.11277" target="_blank" rel="noopener"
 &gt;https://arxiv.org/abs/2304.11277&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="zero-redundancy-optimizer"&gt;Zero Redundancy Optimizer
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;缩写&lt;/strong&gt;：ZeRO&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;中文名称&lt;/strong&gt;：零冗余优化器&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;简短介绍&lt;/strong&gt;：DeepSpeed 提出的训练内存优化方案，逐步消除 DP 中的冗余：ZeRO-1 分片优化器状态，ZeRO-2 额外分片梯度，ZeRO-3 额外分片参数。FSDP 的理论基础。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;详细介绍&lt;/strong&gt;：ZeRO 的三个阶段：&lt;/p&gt;
&lt;p&gt;基线（纯 DP）：每卡存储完整参数(P) + 梯度(G) + 优化器状态(O)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;以 7B 模型 fp32 AdamW 为例：P=28GB, G=28GB, O=56GB → 共 112GB/卡&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ZeRO-1：分片优化器状态 O → 每卡 1/N 的 O&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;节省：56GB → 56/N GB。总显存 28+28+56/N&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ZeRO-2：额外分片梯度 G → 每卡 1/N 的 G 和 O&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;节省：(28+56)/N。总显存 28+84/N&lt;/li&gt;
&lt;li&gt;反向后只同步本卡负责的参数的梯度&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ZeRO-3：额外分片参数 P → 每卡 1/N 的 P、G、O&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;节省：全部 112/N。7B 模型 8 卡只需 14GB/卡&lt;/li&gt;
&lt;li&gt;前向/反向需 AllGather 恢复完整参数（= FSDP）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;通信代价：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ZeRO-1/2：与纯 DP 相同（1 次 AllReduce 梯度），无额外通信&lt;/li&gt;
&lt;li&gt;ZeRO-3：每层 1 次 AllGather(前向) + 1 次 ReduceScatter(反向)，通信量增加&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ZeRO-Infinity：进一步将分片卸载到 CPU 内存和 NVMe SSD，突破 GPU 显存限制。&lt;/p&gt;
&lt;p&gt;实践选择：ZeRO-2 是性能和内存的最佳平衡点（无额外通信开销）。ZeRO-3 用于单卡放不下的超大模型。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;关联论文/模型&lt;/strong&gt;：&amp;ldquo;ZeRO: Memory Optimizations Toward Training Trillion Parameter Models&amp;rdquo; (Rajbhandari et al., 2020, arXiv:1910.02054)；DeepSpeed；FSDP 基于此设计&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;权威分析链接&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://www.deepspeed.ai/tutorials/zero/" target="_blank" rel="noopener"
 &gt;https://www.deepspeed.ai/tutorials/zero/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://arxiv.org/abs/1910.02054" target="_blank" rel="noopener"
 &gt;https://arxiv.org/abs/1910.02054&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="本篇小结"&gt;本篇小结
&lt;/h2&gt;&lt;p&gt;本篇 8 个并行策略术语沿&amp;quot;切什么维度 + 内存如何分片&amp;quot;两条线归位：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;DP&lt;/strong&gt; 每卡完整模型分不同数据，最简单但要求单卡放下完整模型；反向后 AllReduce 同步梯度。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TP&lt;/strong&gt; 层内切权重矩阵，各卡算矩阵乘法的不同部分再 AllReduce/AllGather 拼接；NVLink 域内有效，是 MoE 大模型推理标配。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PP&lt;/strong&gt; 层间切分，数据像流水线依次通过各卡，解决深模型单卡放不下的问题，但有流水线气泡开销；GPipe 和 1F1B 两种调度。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;EP&lt;/strong&gt; MoE 专用，把不同专家分到不同 GPU，token 通过 All-to-All 通信路由到专家所在卡。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CP&lt;/strong&gt; 把输入序列按长度切分到多卡，各卡处理不同段落并通过环式通信交换 KV 实现完整注意力；用于超长上下文训练和推理。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SP&lt;/strong&gt; 切序列的激活值，主要用于减少 TP 中 LayerNorm/Dropout 的冗余计算；是 TP 的辅助，与 CP 的区别是 SP 依附于 TP、CP 是独立的注意力并行。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;FSDP&lt;/strong&gt; DP 的进化版，参数/梯度/优化器状态全部分片，计算时按需 AllGather 恢复完整参数；PyTorch 原生支持的大模型训练方案。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ZeRO&lt;/strong&gt; DeepSpeed 的内存优化三阶段：ZeRO-1 分片优化器状态、ZeRO-2 加分片梯度、ZeRO-3 加分片参数（= FSDP）；ZeRO-2 是性能与内存的最佳平衡点（无额外通信），ZeRO-3 用于单卡放不下的超大模型。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;组合关系：大模型训练标配 TP+EP+PP+DP/ZeRO 多维并行（TP 在 NVLink 域内、PP 跨节点、DP/ZeRO 切数据、EP 切专家），推理标配 TP+EP。FSDP 是 ZeRO-3 的工程实现，两者理论基础一致。&lt;/p&gt;
&lt;p&gt;本系列共 11 篇，本文是第 6 篇。&lt;/p&gt;</description></item></channel></rss>