Distribued Training
通信实现方式
机器内通信
- NVLink:GPU之间直接通信的技术。NVLink 3.0 的单向带宽可达 50 GB/s。
- PCIe:一种通用的高速总线标准,用于连接 GPU、CPU 和其他外设。 在 PCIe 架构下,GPU 之间的通信需要通过 CPU 和系统内存,带宽和延迟不如 NVLink。PCIe 4.0 x16 的单向带宽为 31.5 GB/s。 PCIe Switch 用于扩展 PCIe 通道,允许多个设备共享带宽。
机器间通信
TCP/IP: 通信速率收到硬件限制,比机内通信更慢。
通信后端
NCCL
NCCL 是 NVIDIA 开发的高性能通信库,专为多 GPU 和多节点之间的通信优化。
利用 NVLink、PCIe 等高速互联技术,提供极高的带宽和低延迟。
NCCL-Test 则是用来验证 NCCL 在不同硬件环境(如 NVLink、PCIe、TCP)下的性能和正确性的工具。
Gloo
适合 CPU 分布式训练或多节点训练
RLlib
RLlib 是 Ray 生态系统中的一个库,专注于强化学习的分布式训练。
微调
速度指标
tgs (tokens/gpu/second)
含义:该指标用于测算每秒单块 GPU 能够通过 token 的数量。其中,token 表示一个离散的文本单元 ,可以是单词、标点符号、数字或其他语言元素,这些元素被用作训练和生成文本的基本单位。 作用:它是核心性能指标之一,反映了 GPU 在处理文本数据时的运算速度。在自然语言处理任务中,token 的处理速度直接影响到模型训练和推理的效率。例如,在大语言模型训练过程中,较高的 tgs 值意味着 GPU 能够更快地处理输入文本,从而加快训练进程。
tf lops
含义:即 Teraflops,代表每秒浮点运算次数,也就是每秒浮点运算的亿次。它是一种用于衡量计算机或计算设备性能的指标,表示处理器每秒钟能够执行的浮点运算次数。 作用:在模型训练中,大量的计算涉及到浮点运算,如矩阵乘法、向量运算等。tf lops 值越高,说明计算设备的计算能力越强,能够更快地完成模型训练中的复杂计算任务,对于加速模型训练和提高训练效率具有重要意义。
性能指标
Loss 损失值
含义:在 SFT(监督微调)中,以 Loss 损失值作为评估模型性能和指导模型调优过程的重要指标。Loss 损失值反映了模型对训练数据的适应程度和泛化能力,它衡量了模型预测结果与真实标签之间的差异。 评估方法:通过计算前 100 个 step 整体 loss 与标准测算 loss 值的方差来评估。方差可以反映数据的离散程度,在这里用于判断模型在训练初期的 loss 值波动情况,以此来反映大模型在所测试硬件上的训练效果是否符合预期。如果方差较小,说明模型在训练初期的 loss 值较为稳定,训练效果较好;反之,如果方差较大,则可能表示模型在训练过程中存在不稳定因素,需要进一步调整优化。
通信测试
测试工具及操作类型
测试工具:使用deepspeed benchmark测试代码进行测试。deepspeed是一个用于优化深度学习训练的库,benchmark测试代码则是用于评估相关性能的工具。
集合通信操作类型:
all_reduce:这是一种常用的集合通信操作,它会将所有参与通信的进程中的数据进行规约(例如求和、求平均等),然后将规约结果返回给所有进程。在深度学习分布式训练中,常用于聚合不同 GPU 上的梯度,以便进行统一的参数更新。
all_gather:该操作会收集所有进程中的数据,并将完整的数据集合分发给每一个进程。例如,在多 GPU 训练中,每个 GPU 上都有一部分数据,通过all_gather操作可以让每个 GPU 都获取到所有数据。
all_to_all:它允许每个进程将自己的数据发送给其他所有进程,同时也从其他所有进程接收数据。这种操作在一些复杂的分布式计算场景中会用到,比如在多对多的数据交换需求中。
broadcast:即广播操作,由一个进程(通常称为根进程)将数据发送给其他所有进程。在深度学习训练中,常用于初始化参数的分发等场景。
pt2pt:即点对点(point - to - point)通信,指的是两个特定进程之间的数据传输。它不像前面几种集合通信操作那样涉及多个进程的集体协作,而是专注于两个进程间的直接通信。
主要关注操作及指标
主要关注操作:all_reduce被列为主要关注操作。这是因为在分布式训练中,all_reduce操作对于聚合梯度等关键步骤非常重要,其性能直接影响到训练的效率和速度。
通信相关指标:
Size (Bytes):表示通信数据的大小,单位是字节。这个指标可以帮助了解在一次通信操作中传输的数据量,数据量的大小会影响通信的时间和带宽利用率等。
Description:可能是对通信操作的描述,例如操作的具体参数设置、数据的类型等相关信息,用于更详细地说明通信过程的特征。
Duration:指通信操作所花费的时间。通过测量这个时间,可以评估不同通信操作的执行效率,时间越短,说明通信操作越快。
Throughput (Gbps):即吞吐量,单位是 Gbps(吉比特每秒)。它反映了单位时间内成功传输的数据量,是衡量通信性能的重要指标之一。较高的吞吐量意味着在相同时间内可以传输更多的数据。
BusBW (Gbps):可能指的是总线带宽(Bus Bandwidth),单位同样是 Gbps。它表示通信过程中所使用的总线的带宽能力,总线带宽会限制数据传输的速度,通过对比实际吞吐量和总线带宽,可以分析通信操作是否充分利用了总线资源,或者是否存在带宽瓶颈等问题。