Ulysses长序列并行
背景与挑战
随着AI技术的飞速发展,特别是在生成式AI和科研模型领域,长序列训练的重要性日益凸显。无论是在会话式AI、长文档摘要生成,还是视频内容生成等复杂场景中,系统都需要在广阔的空间和时间维度内对长上下文进行有效推理。此外,章节和书籍级别的庞大文本摘要(涉及数万乃至数十万字的处理)同样对会话式AI和摘要任务提出了严峻的挑战。传统的数据、张量和流水线等并行处理方法在处理长序列时面临显著限制。这些方法往往无法有效扩展以适应序列维度的增加,从而影响了整体系统的性能和效率。
具体来说,传统的并行方法在处理长序列时可能遭遇以下问题:
- 内存限制:随着序列长度的增加,系统所需的内存资源也会成倍增长,导致内存不足的问题。
- 计算效率:长序列的处理往往需要大量的计算资源,而传统的并行方法可能无法充分利用这些资源,导致计算效率低下。
- 通信开销:在分布式系统中,长序列的处理可能涉及到多个节点之间的通信,而传统的并行方法可能产生较大的通信开销,影响整体性能。
Ulysses长序列并行是一种针对上述挑战设计的创新方案,它能够有效克服内存限制、提高计算效率并减少通信开销,从而显著提升长序列处理的能力。
解决方案
Ulysses长序列并行是一种针对上述挑战设计的方案,它能够有效克服内存限制、提高计算效率并减少通信开销,从而显著提升长序列处理的能力。
首先,Ulysses将各个样本在序列维度上分割给参与的计算设备。然后,在attention计算之前,对已分割的查询(Q)、键(K)和值(V)执行all-to-all通信操作,以便每个计算设备接收完整的序列,但仅用于注意力头的非重叠子集。这使得参与的计算设备可以并行计算不同的注意力头。最后,Ulysses还可以使用另一个all-to-all在注意力头上收集结果,同时重新在序列维度上进行分区。
使用场景
num-attention-heads要能够被tensor-model-parallel-size * context-parallel-size整除。
- num-attention-heads:表示注意力头数
- tensor-model-parallel-size:表示模型并行规模
- context-parallel-size:表示长序列并行大小
使用方法
重要参数 |
参数说明 |
---|---|
--context-parallel-size [int] |
设置长序列并行大小,默认为1,根据用户需求配置。 |
--context-parallel-algo ulysses_cp_algo |
可选,设置长序列并行算法。
|
使用效果
利用多个计算设备对输入序列进行并行切分,降低单设备的内存消耗,相比不开启序列并行单步耗时增加,相比重计算计算效率提升。