RLHFuse: Efficient RLHF Training for Large Language Models with Inter- and Intra-Stage Fusion

作者/机构: Yinmin Zhong1, Zili Zhang1, Bingyang Wu1, Shengyu Liu1, Yukun Chen2, Changyi Wan2, Hanpeng Hu2, Lei Xia2, Ranchen Ming2, Yibo Zhu2, Xin Jin1; 1北京大学 2阶跃星辰


A1 主要贡献

本文旨在解决现有强化学习人类反馈(RLHF)训练系统在生产部署中GPU利用率低下的问题。核心问题源于RLHF训练的内在特性:生成阶段的数据倾斜(长尾效应)和训练阶段的流水线气泡。现有系统将RLHF流程中的每个任务视为最小执行单元,忽略了子任务级别的优化机会。

研究目标:提出一个名为RLHFuse的全新RLHF训练框架,通过将任务分解为更细粒度的子任务并进行阶段融合,来显著提升GPU利用率和训练吞吐量。

核心创新点
1. 子任务级优化视角:首次提出将RLHF工作流从传统的任务级视角转变为更细粒度的子任务级视角,从而开辟了新的优化空间。
2. 数据感知的阶段间融合(Inter-Stage Fusion)
* 针对生成阶段由长尾样本导致的数据倾斜问题,RLHFuse将生成和推理任务拆分为样本级的子任务。
* 设计了一种轻量级迁移算法,在生成阶段进入低效的长尾处理阶段时,自动将剩余的长尾样本迁移到少数GPU上处理。
* 释放出的GPU资源被提前用于启动推理任务,实现了生成阶段和推理阶段的执行重叠,有效缓解了生成瓶颈。
3. 模型感知的阶段内融合(Intra-Stage Fusion)
* 针对训练阶段因流水线并行(PP)导致的大量气泡问题,RLHFuse将训练任务分解为微批次(micro-batch)级别的子任务。
* 利用RLHF训练阶段包含两个独立模型(Actor和Critic)的特性,设计了一种融合流水线调度策略,在同一组GPU上并发执行这两个模型的训练子任务,让它们相互填充对方的流水线气泡。
* 提出了一种轻量级的流水线调度生成算法,能够为任意规模和并行配置的Actor和Critic模型生成接近最优的调度方案。
4. 一系列系统优化:RLHFuse集成了针对RLHF各阶段的系统优化,使其成为一个高效且可扩展的生产级框架。

通过这些创新,RLHFuse与现有最先进系统相比,训练吞吐量最高可提升3.7倍。

图1:上图:RLHF训练工作流。下图:现有RLHF训练框架的训练迭代分解。
图1:上图:RLHF训练工作流。下图:现有RLHF训练框架的训练迭代分解。

A3 背景知识与问题分析

2.1 背景知识

RLHF模型构成:一个完整的RLHF过程通常涉及四个大语言模型(LLM):Actor、Ref、Critic和RW。
* Actor模型:是主要训练的模型,也是RLHF后的最终产品。在强化学习语义中充当代理(agent),其目标是生成符合奖励目标的动作(token)。
* Reference模型(Ref):由原始Actor模型初始化,但在训练期间被冻结(权重不更新)。它提供KL散度正则化,确保Actor模型在训练中不会与原始版本偏离过远。
* Reward模型(RW):在人类标记的偏好数据上训练,用于为Actor模型生成的每个样本打分,引导Actor生成符合人类偏好的响应。在RLHF训练期间也被冻结。
* Critic模型:由RW模型初始化,作为价值模型(value model)来评估Actor采取的动作。它提供更细粒度的动作级反馈,指导Actor做出更好的决策。

RLHF工作流:图1展示了RLHF单次训练迭代的工作流,包含三个主要阶段:生成、推理和训练。
* 生成阶段(Generation):Actor模型为当前批次的提示(prompts)生成响应。此过程包含一个处理提示的预填充(prefill)阶段和一个自回归地逐个生成token的解码(decoding)阶段。每个提示及其响应构成一个训练样本。
* 推理阶段(Inference):Ref、RW和Critic模型分别对生成的样本执行一次前向传播。这个过程类似于生成阶段的预填充,但不生成新token,其输出的logits用于在训练阶段计算损失。
* 训练阶段(Training):所有样本被划分为若干个小批量(mini-batches)。对于每个小批量,Actor和Critic模型首先执行前向传播,然后利用推理阶段的结果计算损失,并执行反向传播来更新参数。参数更新必须在下一个小批量前向传播之前完成。

LLM并行化:为了扩展训练,通常会结合使用三种正交的并行策略:
* 数据并行(Data Parallelism, DP):沿批次维度划分数据,每个模型副本处理一部分。每次迭代结束时,通过all-reduce通信同步梯度。
* 张量并行(Tensor Parallelism, TP):将计算密集型算子(主要是矩阵乘法)划分到多个GPU上加速计算。通信量大,通常在节点内使用。
* 流水线并行(Pipeline Parallelism, PP):将LLM的层划分为多个阶段(stage),每个阶段在不同设备上运行。通过将输入批次划分为多个微批次(micro-batch)形成流水线执行。通信开销远小于TP。
实践中,通常将这三种策略组合使用,记为(dp, pp, tp)

2.2 RLHF训练中的问题

生成阶段的数据倾斜:生成样本的响应长度呈现长尾分布,即每批中总有少数样本比其他样本长得多。由于数据依赖性,推理任务必须等待生成任务全部完成,导致即使只有少数长尾样本,也会迫使后续任务等待。这造成了严重的GPU资源浪费,因为LLM生成的解码阶段是内存密集型(memory-bound),需要大批量才能保持高GPU利用率。如图2(左)所示,在LMSYS-Chat-1M数据集中,不同模型的输出长度均呈现长尾分布,P99.9的长度是中位数的十倍以上。图2(右)展示了内部模型训练的迭代时间分解,生成长尾样本的时间(深蓝色条)占了总生成时间的一半以上,并且随着最大生成长度的增加,问题愈发严重。

图2:左图:LMSYS-Chat-1M数据集中模型的输出长度CDF。垂直虚线表示P99.9的输出长度。右图:在不同最大输出长度下,内部模型和数据集的RLHF训练迭代分解。
图2:左图:LMSYS-Chat-1M数据集中模型的输出长度CDF。垂直虚线表示P99.9的输出长度。右图:在不同最大输出长度下,内部模型和数据集的RLHF训练迭代分解。

训练阶段的流水线气泡:随着模型规模增大,需要更高的流水线并行度(PP)来扩展训练。然而,流水线气泡的比例随PP规模增加而增加,显著降低训练效率。在常用的1F1B流水线调度(如图3上)中,气泡比例为 (N-1)/(N-1+M),其中N是PP阶段数,M是微批次数。当N接近M时(这在训练数百亿参数模型时很常见),气泡比例接近50%,意味着一半的GPU处于空闲状态。尽管Interleaved 1F1B调度【索引16,Megatron-lm: Training multi-billion parameter language models using model parallelism,2020】能缓解此问题(如图3下),但它引入了额外的通信开销且加剧了PP阶段间的不平衡,因此实践中通常将交错因子K设为2,优化空间有限。其他旨在完全消除气泡的工作要么破坏了同步训练语义【索引25,Pipedream: Generalized pipeline parallelism for dnn training,2019,ACM SOSP】,要么依赖不切实际的假设【索引21,Zero bubble pipeline parallelism,2023,arXiv】。

1F1B:

图3:4个流水线阶段和4个微批次的1F1B和Interleaved 1F1B流水线调度时间线。在此示例中,Interleaved 1F1B在每个流水线阶段部署两个模型块。
图3:4个流水线阶段和4个微批次的1F1B和Interleaved 1F1B流水线调度时间线。在此示例中,Interleaved 1F1B在每个流水线阶段部署两个模型块。

Interleaved 1F1B:

图3:4个流水线阶段和4个微批次的1F1B和Interleaved 1F1B流水线调度时间线。在此示例中,Interleaved 1F1B在每个流水线阶段部署两个模型块。
图3:4个流水线阶段和4个微批次的1F1B和Interleaved 1F1B流水线调度时间线。在此示例中,Interleaved 1F1B在每个流水线阶段部署两个模型块。

总结:这些问题源于RLHF的固有特性,难以通过任务级优化解决。现有系统将任务视为最小执行单元,忽略了其内部结构,从而错失了巨大的优化机会。

A2 方法细节

3. RLHFuse 概览

RLHFuse通过将任务分解为更细粒度的子任务来解决上述问题,其架构如图4所示,主要包括两个核心组件:执行计划生成器和运行时执行器。

图4:RLHFuse架构。
图4:RLHFuse架构。

4. 数据感知的阶段间融合

4.1 机遇与挑战
* 机遇:生成阶段和推理阶段之间的依赖关系是基于样本级别的。这意味着一旦一个样本完成了生成,它就可以立即进入推理阶段。这一关键观察促使我们将任务分解为样本级的子任务,从而在不违反原始同步训练语义的前提下,提前启动推理任务。
* 融合执行计划:基于此,我们设计了一个融合执行计划。该计划首先检测生成实例何时进入长尾解码阶段。此时,大多数样本已完成生成,但只有少数长尾样本在处理。我们将这些长尾样本迁移到少数指定的实例上,这样不仅整合了接收实例的GPU利用率,还释放了发送实例的资源。释放的资源可以立即用于提前启动推理任务,如图5所示,从而显著提高GPU利用率。
* 挑战:主要挑战在于生成一个高效的融合执行计划,该计划需要根据数据流图 G* 决定迁移的时机、目的地和机制,这三个因素都显著影响整体执行时间。此外,由于训练任务要求每个小批量数据保持相同的分布,需要从所有生成的样本中随机抽样,这引入了一个不可避免的同步边界,因此无法将这种融合扩展到推理和训练阶段之间。

图5:生成和推理阶段的串行(上)和融合(下)执行时间线。
图5:生成和推理阶段的串行(上)和融合(下)执行时间线。

4.2 融合执行计划
该计划的目标是在不影响原始生成任务执行时间的前提下,最大化两个阶段的重叠,从而最小化总执行时间。

5. 模型感知的阶段内融合

5.1 机遇与挑战
* 机遇:在RLHF训练阶段,Actor和Critic模型是独立训练的。受Chimera的双向流水线调度【索引20,Chimera: efficiently training largescale neural networks with bidirectional pipelines,2021,SC】启发,我们可以将这两个训练任务分解为微批次的子任务,并将它们共同部署以相互填充流水线气泡。Chimera通过复制模型并以相反的流水线方向训练副本,来减少气泡并平衡激活内存(如图6(a))。RLHF训练阶段天然存在两个不同模型,使我们无需额外复制模型即可应用融合流水线调度。
* 挑战:Chimera中的双向流水线调度利用的是大小和并行策略完全相同的模型副本,导致执行流是对称的。而RLHF中的Actor和Critic模型是异构的,它们不仅大小不同,最优并行策略也不同。因此,Chimera的对称调度不再适用。我们需要一种能处理这种异构性的新算法。

图6:(a) Chimera中使用的对称双向流水线调度示例,有4个流水线阶段和4个微批次。(b) 我们的方法可以融合两个分别有4个和2个流水线阶段的不同模型的示例。
图6:(a) Chimera中使用的对称双向流水线调度示例,有4个流水线阶段和4个微批次。(b) 我们的方法可以融合两个分别有4个和2个流水线阶段的不同模型的示例。

5.2 融合流水线调度
我们提出了一种轻量级高效的算法来自动生成异构模型下的融合流水线调度。

表1:问题定义中的关键符号。
表1:问题定义中的关键符号。

6. 系统实现与优化

系统实现
* 基础:RLHFuse基于Megatron-LM【索引16,Megatron-lm: Training multi-billion parameter language models using model parallelism,2020】实现,增加了约7000行Python、C++和CUDA代码。
* 扩展:扩展了Megatron-LM以支持多个设备网格,从而能以定制化的并行和部署策略异步启动不同任务。

执行计划生成器
* 方法:采用“先建模后优化”的方法。我们构建了一个模拟器,能准确估计特定并行策略和工作负载下任务的运行时统计数据。然后,遵循Megatron-LM论文中的指导方针来修剪设计空间,并通过暴力搜索找到最优策略。

运行时执行器
* 阶段间融合:使用上述模拟器选择最佳迁移阈值 Rt
* 阶段内融合:使用MPI【索引35,Open mpi: Goals, concept, and design of a next generation mpi implementation,2004,Recent Advances in Parallel Virtual Machine and Message Passing Interface】并行化模拟退火搜索过程。找到最优解后,会为每个设备生成NCCL【索引36,Optimized primitives for collective multi-gpu communication,2024】操作序列,运行时按照此指令流执行。

系统优化
* 生成阶段
* 使用内部开发的、带有优化CUDA核的推理引擎。
* 支持连续批处理(continuous batching)【索引37,Orca: A distributed serving system for {Transformer-Based} generative models,2022,USENIX OSDI】,允许短样本提早离开批次。
* 支持前缀共享(prefix sharing)【索引38,Sglang: Efficient execution of structured language model programs,2024】,对共享相同提示的样本避免KV缓存的重复计算。
* 推理阶段
* 优化了广义优势估计(Generalized Advantage Estimation, GAE)【索引39,High-dimensional continuous control using generalized advantage estimation,2018】的计算。原始的递归计算在输出序列长时会导致大量核函数启动。我们通过展开递归公式并预计算系数矩阵,将计算转化为单次矩阵乘法,将延迟从数十秒降至几十毫秒。
* 训练阶段
* 为了解决不同DP组因数据倾斜导致负载不均的问题,我们根据样本的序列长度将每个小批量均匀地分配到各个DP组,以实现负载均衡。
* 任务切换
* 主要开销在于模型权重的重新加载。对于Actor和Critic模型,我们采用类似all-to-all的方法【索引40,On optimizing the communication of model parallelism,2024】来最小化跨节点通信。
* 对于权重不变的Ref和RW模型,我们将其保存在CPU内存中,在需要时换入GPU内存,该交换过程可与前一个任务的计算重叠。

A4 实验评估

实验环境

模型 参数量 层数 注意力头数 隐藏层维度
LLaMA-13B 13.0B 40 40 5120
LLaMA-33B 32.5B 60 52 6656
LLaMA-65B 65.2B 80 64 8192
表2:LLM规格。
表2:LLM规格。
表2:LLM规格。

实验结果

7.1 端到端性能比较

我们将RLHFuse与以下RLHF训练框架进行比较:
* DeepSpeed-Chat (DSChat)【索引44,Deepspeed-chat: Easy, fast and affordable rlhf training of chatgpt-like models at all scales,2023】: 仅支持ZeRO-3数据并行。
* ReaLHF【索引13,Realhf: Optimized rlhf training for large language models through parameter reallocation,2024,arXiv】: 支持为每个任务定制3D并行策略,但未进行子任务级优化。
* RLHFuse-Base: 移除了阶段间和阶段内融合,但保留了所有其他系统优化的RLHFuse版本,用于公平比较融合技术带来的提升。

图7:不同生成和模型大小设置下,RLHF训练系统的端到端吞吐量。
图7:不同生成和模型大小设置下,RLHF训练系统的端到端吞吐量。

实验结论 (图7)
* vs. DSChat: RLHFuse的吞吐量高出2.5倍至3.7倍。这主要得益于RLHFuse灵活的执行计划生成器,能为每个任务选择最高效的3D并行策略。
* vs. ReaLHF: RLHFuse的吞吐量高出1.4倍至2.4倍。这归功于更细粒度的系统优化,特别是推理引擎中的定制化核函数和训练阶段的小批量负载均衡。
* vs. RLHFuse-Base: RLHFuse的吞吐量相对提升了1.2倍至1.4倍。这部分提升完全来自于阶段融合技术,它显著缓解了生成阶段的数据倾斜和训练阶段的流水线气泡问题。

7.2 性能分解分析

图8:不同生成和模型大小设置下的RLHF迭代分解。
图8:不同生成和模型大小设置下的RLHF迭代分解。

实验结论 (图8)
* 生成+推理阶段 (Gen.+Inf.): 随着最大生成长度增加,长尾样本的处理时间足以让RLHFuse完全重叠推理阶段的执行,实现了1.2倍至1.6倍的加速。
* 训练阶段 (Train): 通过阶段内融合,RLHFuse极大地减少了流水线气泡,将训练阶段的执行时间缩短了1.2倍至1.3倍。
* 其他开销 (Others): 得益于任务切换的优化,这部分开销(包括数据传输、权重重分配和迁移开销)在总迭代时间中占比不到3%,可以忽略不计。

7.3 消融研究

图9:在不同迁移率和模型设置下,RLHFuse的融合生成和推理阶段执行时间。最大生成长度设置为1024。
图9:在不同迁移率和模型设置下,RLHFuse的融合生成和推理阶段执行时间。最大生成长度设置为1024。

表3:在不同模型、流水线阶段和微批次设置下,由不同算法找到的流水线调度的延迟加速和峰值激活内存成本。
表3:在不同模型、流水线阶段和微批次设置下,由不同算法找到的流水线调度的延迟加速和峰值激活内存成本。

7.4 案例研究

我们展示了一个由RLHFuse为65B/33B模型设置生成的融合流水线调度方案。
* GPU执行时间线 (图10上):RLHFuse策略性地将一个16个PP阶段的65B模型(蓝色)与两个各8个PP阶段的33B模型(粉色)融合,并以相反的流水线方向执行,从而相互填充气泡。最终,该融合调度的执行时间与单独使用1F1B调度执行65B模型的时间相同,这意味着33B模型的训练时间被完全重叠,达到了理论上的性能下界。
* 峰值激活内存 (图10下):该调度的峰值激活内存也达到了将两个模型用1F1B调度串行执行时的内存下界。

这个复杂的调度方案在时间和内存上都达到了最优,手动设计几乎是不可能的,进一步证明了我们提出的融合流水线调度生成算法的有效性。

图10:由RLHFuse生成的65B Actor和33B Critic模型的融合流水线调度。两个模型分别有16和8个PP阶段,微批次数等于PP。上图:GPU执行时间线。下图:峰值激活内存使用时间线。水平虚线表示串行1F1B执行的内存成本。
图10:由RLHFuse生成的65B Actor和33B Critic模型的融合流水线调度。两个模型分别有16和8个PP阶段,微批次数等于PP。上图:GPU执行时间线。下图:峰值激活内存使用时间线。水平虚线表示串行1F1B执行的内存成本。

A5 结论

本文提出了RLHFuse,一个用于LLM的高效RLHF训练框架。通过重新审视RLHF的内在特性和任务依赖,RLHFuse在保留原始同步训练语义的同时,从更细粒度的子任务级别视角来审视工作流。这为高效的阶段间和阶段内融合执行创造了机会,极大地缓解了现有系统中数据倾斜和流水线气泡的问题。评估结果表明,RLHFuse可以显著提高GPU利用率,与当前最先进的系统相比,训练吞吐量最高可提升3.7倍。


方法细节中引用的参考文献汇总

以下是在“方法细节”章节(§3, §4, §5, §6)中引用的参考文献及其在原文中的描述:

  1. 【13】Realhf: Optimized rlhf training for large language models through parameter reallocation (Z. Mei et al., 2024, arXiv)

    • 引用段落:§3 RLHFuse Overview
    • 原文描述:"We formalize the training iteration of RLHF workflow as a dataflow graph G(V , E) following previous work [13]."
  2. 【16】Megatron-lm: Training multi-billion parameter language models using model parallelism (M. Shoeybi et al., 2020)

    • 引用段落:§3 RLHFuse Overview, §6 System Implementation and Optimizations
    • 原文描述 (1):"For each vi, RLHFuse will assign it a tailored parallel strategy Pi = (d p, pp,t p) based on the model and cluster configurations to maximize the GPU utilization." (隐式引用,该工作是3D并行的基础)
    • 原文描述 (2):"Optimizing the parallel strategy for LLM training is a well-studied problem [13, 16, 33, 34]."
    • 原文描述 (3):"We implement RLHFuse based on Megatron-LM [16] with 7K lines of code in Python, C++, and CUDA."
    • 原文描述 (4):"Then we follow the guidelines in the Megatron-LM [16] paper to prune the design space and brute-force search the optimal strategy."
  3. 【20】Chimera: efficiently training largescale neural networks with bidirectional pipelines (S. Li and T. Hoefler, 2021, SC)

    • 引用段落:§5.1 Opportunities and Challenges
    • 原文描述:"Inspired by the bi-directional pipeline schedule [20] from Chimera, we can break the two training tasks into subtasks of micro-batches and co-locate these subtasks to mutually fill the pipeline bubbles of each other."
  4. 【25】Pipedream: Generalized pipeline parallelism for dnn training (D. Narayanan et al., 2019, ACM SOSP)

    • 引用段落:§6 System Implementation and Optimizations
    • 原文描述:"An optimal solution can then be found through optimizations [25, 33, 34]."
  5. 【26】Distserve: Disaggregating prefill and decoding for goodput-optimized large language model serving (Y. Zhong et al., 2024, arXiv)

    • 引用段落:§4.2 Fused Execution Plan
    • 原文描述:"During the memorybound decoding phase of generation, as long as the batch size does not exceed a certain threshold that saturates the GPU (denoted as BSmax), the latency of each decoding iteration remains almost constant [26,27]."
  6. 【27】Fast distributed inference serving for large language models (B. Wu et al., 2023, arXiv)

    • 引用段落:§4.2 Fused Execution Plan
    • 原文描述:"During the memorybound decoding phase of generation, as long as the batch size does not exceed a certain threshold that saturates the GPU (denoted as BSmax), the latency of each decoding iteration remains almost constant [26,27]."
  7. 【28】Efficient memory management for large language model serving with pagedattention (W. Kwon et al., 2023, SOSP)

    • 引用段落:§4.2 Fused Execution Plan
    • 原文描述:"During LLM generation, the key-value cache is maintained for each token position for autoregressive generation. When the sequence length is long, this memory consumption becomes non-negligible [28]."
  8. 【29】Flow shop scheduling: theoretical results, algorithms, and applications (H. Emmons and G. Vairaktarakis, 2012)

    • 引用段落:§5.2 Fused Pipeline Schedule
    • 原文描述:"It can be reduced to a special case of flow job scheduling problem which proves to be NP-hard [29]."
  9. 【30】Optimization by simulated annealing (S. Kirkpatrick et al., 1983, science)

    • 引用段落:§5.2 Fused Pipeline Schedule
    • 原文描述:"Instead, we use simulated annealing [30] to search for a better solution."
  10. 【33】Alpa: Automating inter- and Intra-Operator parallelism for distributed deep learning (L. Zheng et al., 2022, USENIX OSDI)

    • 引用段落:§6 System Implementation and Optimizations
    • 原文描述 (1):"Optimizing the parallel strategy for LLM training is a well-studied problem [13, 16, 33, 34]."
    • 原文描述 (2):"An optimal solution can then be found through optimizations [25, 33, 34]."
  11. 【34】Galvatron: Efficient transformer training over multiple gpus using automatic parallelism (X. Miao et al., 2022, VLDB Endowment)

    • 引用段落:§6 System Implementation and Optimizations
    • 原文描述 (1):"Optimizing the parallel strategy for LLM training is a well-studied problem [13, 16, 33, 34]."
    • 原文描述 (2):"An optimal solution can then be found through optimizations [25, 33, 34]."
  12. 【35】Open mpi: Goals, concept, and design of a next generation mpi implementation (E. Gabriel et al., 2004, Recent Advances in Parallel Virtual Machine and Message Passing Interface)

    • 引用段落:§6 System Implementation and Optimizations
    • 原文描述:"For intra-stage fusion, we use MPI [35] to parallelize the simulated annealing with different random seeds."
  13. 【36】Optimized primitives for collective multi-gpu communication (NVIDIA, 2024)

    • 引用段落:§6 System Implementation and Optimizations
    • 原文描述:"After finding the optimal solution, it will generate the sequences of NCCL [36] operations on each device following the schedule."
  14. 【37】Orca: A distributed serving system for {Transformer-Based} generative models (G.-I. Yu et al., 2022, USENIX OSDI)

    • 引用段落:§6 System Implementation and Optimizations
    • 原文描述:"It supports continuous batching [37] to allow the short samples to leave the batch early."
  15. 【38】Sglang: Efficient execution of structured language model programs (L. Zheng et al., 2024)

    • 引用段落:§6 System Implementation and Optimizations
    • 原文描述:"For samples that share the same prompt, it supports prefix sharing [38] to avoid key-value cache duplication."
  16. 【39】High-dimensional continuous control using generalized advantage estimation (J. Schulman et al., 2018)

    • 引用段落:§6 System Implementation and Optimizations
    • 原文描述:"During the post-processing of the inference stage, one metric called Generalized Advantage Estimation [39] is needed which requires recursive computation along the output length dimension for each sample."
  17. 【40】On optimizing the communication of model parallelism (Y. Zhuang et al., 2024)

    • 引用段落:§6 System Implementation and Optimizations
    • 原文描述:"This communication pattern is well-studied [40] and we adopt a similar allto-all approach to minimize cross-node communication."