随着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整除。
重要参数 |
参数说明 |
---|---|
--context-parallel-size [int] |
设置长序列并行大小,默认为1,根据用户需求配置。 |
--context-parallel-algo ulysses_cp_algo |
可选,设置长序列并行算法。
|
利用多个计算设备对输入序列进行并行切分,降低单设备的内存消耗,相比不开启序列并行单步耗时增加,相比重计算计算效率提升。