论文笔记《HPipe: Large Language Model Pipeline Parallelism for Long Context...》

论文笔记《HPipe: Large Language Model Pipeline Parallelism for Long Context...》

Administrator 4 2025-03-19

摘要

  • 问题背景
    • 微型企业和个人开发者对使用强大的大型语言模型(LLMs)进行长上下文分析的需求不断涌现。他们尝试在本地部署这些LLMs,但仅拥有各种商用设备以及设备之间不稳定的互联条件。现有的并行技术在有限的环境下无法完全发挥作用。设备的异构性,加上其有限的容量和高昂的通信成本,为私有化部署带来了挑战——如何最大化利用可用设备的同时隐藏延迟成为难题。
  • 提出解决方案
    • HPipe,一种流水线推理框架,成功将LLMs从高性能集群迁移到异构的商用设备上。通过确保工作负载的均衡分布,HPipe通过在token维度上对序列进行流水线处理来加速推理过程。
  • 评估
    • 在LLaMA-7B和GPT3-2B上的评估表明,HPipe具备在异构设备上支持长上下文分析的潜力,在延迟和吞吐量方面实现了令人印象深刻的加速,最高可达2.28倍。

1 介绍

  • 现有方法
    • 方法:为了满足高效推理的需求,推理引擎(Aminabadi等,2022b;Li等,2023)提供了混合数据并行和流水线并行(Huang等,2019;Narayanan等,2021),并与张量并行(Shoeybi等,2019;Jia等,2019)相结合。
    • 优点:在高性能计算中心,这些技术显著减轻了计算和内存压力,从而提高了推理速度并增强了吞吐量。
    • 现有的方法无法直接适用于微型企业的场景,面临以下几个问题:
      • 扩展文本 :随着LLM支持更长的输入,扩展的上下文窗口带来了更高的计算压力。微批次流水线难以维持效率。流水线的每个阶段都需要更长的处理时间,而较粗的粒度降低了并行性。
      • 通信差异 :设备之间的通信条件存在差异。设备内部的GPU通常通过PCIe交换数据,而设备之间的GPU则依赖网络通信。这阻碍了诸如张量并行等通信密集型方法的效果。
      • 异构设备 :整合异构设备以充分利用所有可用资源对微型企业至关重要。计算和传输的双重异构性,加上高昂的通信成本,为协调微型企业可用设备以部署LLM带来了挑战。

  • 解决
    • 作者提出了 HPipe ,一种专为私有化LLM内容理解设计的流水线推理框架。
    • 它通过在token维度上应用流水线并行,将LLM部署在异构设备上。HPipe 根据计算能力和传输条件分配LLM,从而屏蔽设备的异构性。
    • 对于扩展的上下文,HPipe 使用动态规划算法将其切分为多个片段,并对这些片段的计算进行流水线处理,以提高并行度
    • HPipe 成功将LLM从高性能集群迁移到异构设备上,在延迟和吞吐量方面实现了高达 2.28倍 的提升,同时与其他方法相比,能耗降低了 68.2%

2 背景和动机

2.1 并行

  • 张量并行
    • LLM计算特性:矩阵乘法(MatMul)占据了整体计算量的绝大部分。解决一个MatMul问题可以转化为求解多个较小MatMul的总和。
    • 张量并行利用这一特性,通过将权重矩阵分割并分配到多个设备上以实现并行计算。一旦计算完成,设备之间需要通信以同步结果。因此,张量并行通常在传输条件有保障的情况下使用。

  • 流水线并行
    • 流水线机制将LLM分布在多个设备上,每个设备负责计算的一个阶段。请求通常被分割为微批次(micro-batches)并依次处理。流水线仅需传输中间结果,因此通信开销较轻
    • 然而,在批处理维度上的流水线对服务于微型企业的LLM仍带来挑战。
      • 内存限制了请求的批处理大小,这减少了数据划分的空间并阻碍了并行度的提升。
      • 此外,随着序列长度的增加,每个流水线阶段需要花费更多时间。阶段执行时间的增加导致更多的空闲等待。

2.2 设备利用率

  • 一次性处理超长序列可能会使设备不堪重负,而处理短序列则容易导致计算能力的浪费。
  • 为了探索序列长度与资源利用率之间的关系,引入了FLOPs利用率 的概念,即实际达到的每秒浮点运算次数(FLOPs)与硬件支持的最大FLOPs的比值。图2展示了相关结果。
    • 结论:随着序列长度的增加,FLOPs利用率最初会提高,随后在收敛前出现下降。
    • 分析:起初,随着更多token输入,资源逐渐被充分利用,FLOPs利用率随之上升。然而,最终收益受到频繁I/O操作的限制。低带宽的内存访问成为瓶颈,尤其是在涉及更长嵌入向量时。
    • 波动现象:在序列长度增加时观察到波动现象。
    • 原因:GPU通过将矩阵划分为小块(tiles)并行处理不同的线程块(thread blocks)来执行矩阵乘法(MatMul),其中线程块是指一组执行相同算术运算的线程。因此,当矩阵维度能够被小块大小整除时,MatMul能够实现GPU的最大利用率。否则,由于小块量化,某些线程块会进行无效计算。
    • 结论:因此,为每个处理阶段选择适当的序列长度可以提高设备利用率
paper11-1.webp

2.3 动机

  • 动机
    • 流水线并行它能够减少大量的计算负载,同时仅引入可接受的通信开销,适合资源受限的场景。
    • 此外,基于解码器的Transformer架构天然适合流水线推理。它允许在token维度上对长上下文进行流水线处理,这不会影响结果,因为子序列是按顺序输入的。

3 方法

3.1 Workflow

  • HPipe工作流
    • 下图展示了HPipe的工作流程。
    • LLM模型切片:考虑到设备规格和网络条件,LLM被合理地分布到多个设备上,以最大化每个设备的利用率,同时避免过高的传输开销。
    • 输入序列切片:HPipe预先处理了所有支持长度输入的最优切片方案。一旦一个序列 S 到达,它会被分割为子序列 ​s_0, ..., s_m ,并在设备上依次执行。
    • 设备 ​d_i 可以处理子序列 ​s_i 的计算任务,其中涉及 ​s_{i+1}​s_{i-1} 分别在设备 ​d_{i-1}​d_{i+1} 上的处理。这有效地重建了流水线,实现了在token维度上的并行处理。
paper11-2.webp

3.2 公式化

  • 模型符号表示
    • 假设LLM由 n 层 ​\{l_1, ..., l_n\} 组成,这些层被划分为 N 个块 ​\{b_1, ..., b_n\},并分布到 N 个设备上。
    • 同时,输入序列在token维度上被分割为 M 个子序列。
    • ​t_{ij} 表示流水线中每个阶段的执行时间,它是子序列 ​s_i 在设备 ​d_j 上的计算时间加上传输到下一个设备 ​d_{j+1}的时间。
      • 子序列嵌入的计算包括两个步骤:计算token的初始嵌入 & 结合前序token的信息与相关性分数。

      • 传输时间与最后一层 ​l_j 生成的中间激活值的大小以及带宽 B 相关。

      • 执行时间 ​t_{ij} 可以表示为:

        t_{ij} = t_c (s_i, \sum^{i-1}_{m=1}s_m;d_j) + t_t(l_j,s_i,B)
        • ​t_c 表示给定子序列 ​s_i 及其前序子序列 ​s_1, ..., s_{i-1}整体计算延迟,用 ​t_t 表示传输时间

  • 约束条件
    • 目标是找到一种均衡的工作负载划分 \{b_1, ..., b_n\} 和适当的切片方案 ​\{s_0 ,..., s_m\},以实现最优的延迟 ​\mathcal{T}^*_O ,尽可能接近图3所示的理想状态。

    • 为了提高流水线的效率,必须均衡各阶段的执行时间。为此,建立一个约束条件,逐步逼近最优方案:

      \mathcal{T}^* \leq \max_{i \in N} \left\{ \sum_{j=0}^{M} t_{ij} \right\} + (N-1) \max_{\substack{0 \leq i < M, \\ 0 \leq j < N}} \{t_{ij}\}.
      • 第一项是最慢设备上的完整推理延迟 ;第二项是由流水线执行带来的开销,其大小由最慢的阶段 决定。该约束条件通过限制延迟的上限,使能够确定最优解。
    • 由此可知,缩小设备之间和阶段之间的差距 将有助于提升流水线推理效率。通过均衡分布序列调度 来实现流水线推理的均等化。


3.3 分布式平衡

  • 一种均衡的模型划分 可以最大限度地减少设备和传输条件中存在的异构性影响。首先通过将LLM分配到与设备能力相匹配的方式来优化流水线,同时考虑传输开销。
  • 本文以 层(layer) 为划分粒度,而不是Transformer块,这为探索更均衡的划分提供了机会。均衡分布的目标是找到 N-1 个切割点,将LLM划分为 N 个子集,每个子集包含连续的层并分配给特定设备。
  • 假设设备的顺序保持不变,即块 ​b_j 对应设备 ​d_j。由于LLM由重复的块组成,设备顺序的固定几乎不会丢失最优解,从而使问题得以简化。

  • 在设备 dₘ 上处理从层 ​l_{a+1}​l_b 的执行时间
    • 包括两个部分:这些层的累积计算时间+传输中间激活值的通信时间。

    • 可以通过以下公式计算

      T(a,b,m) = \sum^b_{k=a}t_{comp}(l_k;d_m)+t_{comm}(l_j,m)

  • 最优划分
    • 可以将其分解为一个由 ​l_1​l_k 层组成的最优子流水线 ,该子流水线分布在 m-1 个设备上,随后是一个单阶段的执行,包含 ​l_{k+1}​l_b 层,并运行在设备 ​d_m 上。

    • 利用最优子问题性质 ,可以确定一种分配方案,逐步均衡各设备之间的执行时间:

      \mathbf{A}[b][m] = \min_{1 \leq k < j} \left\{ \max \left\{ \mathbf{A}[k][m-1], T(k+1, b, m) \right\} \right\}
    • 其中,A[b][m − 1] 表示在前 m-1 个边缘设备上,从 ​l_1​l_b 的最优子流水线中最慢阶段的执行时间。


paper11-3.webp

3.4 序列调度

  • 通过最优切片策略 进一步优化流水线。一些研究(Zheng等, 2023;Li等, 2021)观察到,token的执行时间随着位置索引的增长而线性增加,因为计算中涉及的前序token数量更多。因此,理想的切片方案应包括开头较长的切片结尾较短的切片

  • 划分序列的粒度也非常重要。采用细粒度切片 (即较小的 |sᵢ| 值)会导致GPU计算能力的利用率不足;而采用粗粒度切片 (即较大的 |sᵢ| 值),虽然减少了流水线阶段的数量,但会降低并行度,并可能使设备负担过重。

  • 列举可能的 ​t_m 以从切片空间 S 中找到最佳切片 ​S∗

    \mathcal{T}^* \leq \min_{t_m} \left\{ \max_{i \in N} \left\{ \min_{S^* \in \mathcal{S}} \left\{ \sum_{j=0}^{M} t_{ij} \mid t_{ij} \leq t_m \right\} \right\} + (N-1)t_m \right\}.
    • ​t_m 将每个切片的执行时间限制为相似,从而将流水线延迟降至最低。
    • 由于序列 S 的优化可以从 ​S − s_n 派生,因此采用动态规划算法在所有可能的 ​t_m 中产生最佳切片模式。
paper11-4.webp

4 实验

4.1 实验设置

  • 硬件配置:使用由两台主机组成的计算集群,第一台主机配备4块Pascal100 (P100) GPU,第二台主机配备2块RTX3090 GPU。
  • 通信:
    • 主机间通信:通过带宽为1000 Mbps的有线网络。
    • 主机内通信:通过PCIe。
  • 模型:GPT3-2B、LLaMA-7B

4.2 性能

  • 对比方法
    • Base:LLM均匀分布在每个GPU上,集群中按顺序执行推理。
    • GPipe:将LLM均匀分布在GPU上,并通过微批次(micro-batch)实现流水线推理。
    • GP-B:在GPipe基础上,采用HPipe提出的工作负载分配策略
    • Megatron-LM:结合张量并行 和GPipe的流水线技术。
    • TeraPipe: 将LLM均匀分布在GPU上,并在token维度 上实现流水线推理。
    • TP-T:在TeraPipe基础上结合张量并行

4.2.1 延迟和吞吐量

  • HPipe在延迟和吞吐量上的表现显著优于其他方法,特别是在长序列推理任务中。
  • 其成功的关键在于细粒度流水线推理负载均衡分配 以及对通信开销的有效控制
  • 张量并行与token维度流水线的结合并不适合,因其引入了过多同步开销。
paper11-5.webp

4.2.2 能耗

  • HPipe在能耗上的表现优于其他方法,得益于其对异构设备特性的充分考虑和高效的资源利用策略。
  • 高资源利用率下的推理执行进一步减少了不必要的能量消耗。
paper11-6.webp

4.2.3 内存占用

  • HPipe通过均衡工作负载分配和考虑通信开销,优化了内存使用。
  • 在异构环境中,内存占用的差异反映了设备间计算与通信负载的动态调整。
paper11-7.webp

5 结论

本文介绍了 HPipe,这是一个推理框架,用于使用在商用设备集群上原型构建的 LLM 加速内容分析。它有效地集成了计算资源,允许在异构设备上实现精细管道。HPipe 展示了通过长序列输入加速 LLM 推理的潜力,为在异构商用硬件环境中部署 LLM 提供了解决方案。