返回
GPU服务器版本的Nvidia HugeCTR参数服务器(7): Distributed Hash发送传播之前
人工智能
2023-09-14 23:39:29
在之前的文章中,我们介绍了 HugeCTR,这是一个面向行业的推荐系统训练框架,针对具有模型并行嵌入和数据并行密集网络的大规模 CTR 模型进行了优化。在这篇文章中,我们将继续深入研究 HugeCTR,这次我们将重点关注 GPU 版本参数服务器的分布式哈希发送传播之前。
工作原理
分布式哈希发送传播之前是参数服务器的一个关键组件,负责将梯度从 worker 节点发送到参数服务器节点。在 HugeCTR 中,分布式哈希发送传播之前使用一种称为“Rendezvous 哈希”的算法来确定哪个参数服务器节点应该接收每个梯度更新。Rendezvous 哈希算法的工作原理如下:
- 对于每个 worker 节点,将梯度更新的键(即模型参数的名称)哈希为一个整数。
- 将哈希值除以参数服务器节点的数量,得到一个余数。
- 余数就是应该接收梯度更新的参数服务器节点的 ID。
这种算法可以确保每个梯度更新都均匀地分布在所有参数服务器节点上,从而避免热点问题。
面临的挑战
在实现分布式哈希发送传播之前时,HugeCTR 团队面临着一些挑战,包括:
- 如何处理具有不同形状的梯度更新? 在 HugeCTR 中,模型参数可以具有不同的形状,例如,一个参数可以是一个标量,而另一个参数可以是一个向量或矩阵。为了处理具有不同形状的梯度更新,HugeCTR 团队设计了一种灵活的通信协议,该协议可以处理任何形状的梯度更新。
- 如何处理稀疏梯度更新? 在 HugeCTR 中,模型参数可以是稀疏的,这意味着它们的大多数值都是零。为了处理稀疏梯度更新,HugeCTR 团队设计了一种压缩算法,该算法可以减少需要在网络上发送的数据量。
- 如何确保分布式哈希发送传播之前的高性能? 分布式哈希发送传播之前是参数服务器的一个关键组件,因此其性能对于整体训练性能至关重要。为了确保分布式哈希发送传播之前的高性能,HugeCTR 团队采用了多种优化技术,例如,使用 GPU 来加速计算,并使用 RDMA 来减少网络延迟。
解决方案
HugeCTR 团队通过以下方式解决了这些挑战:
- 对于具有不同形状的梯度更新,HugeCTR 使用了一种灵活的通信协议,该协议可以处理任何形状的梯度更新。 该协议使用一种称为“消息传递接口”(MPI)的标准来发送和接收梯度更新。MPI 是一个库,它提供了一组用于在分布式系统中进行通信的函数。
- 对于稀疏梯度更新,HugeCTR 使用了一种压缩算法,该算法可以减少需要在网络上发送的数据量。 该算法使用一种称为“稀疏向量格式”(SVF)的格式来存储稀疏梯度更新。SVF 格式只存储梯度更新的非零值,从而可以减少需要在网络上发送的数据量。
- 为了确保分布式哈希发送传播之前的高性能,HugeCTR 使用了多种优化技术,例如,使用 GPU 来加速计算,并使用 RDMA 来减少网络延迟。 GPU 是图形处理单元,它是一种专门用于处理图形数据的处理器。RDMA 是一种网络协议,它允许应用程序直接访问远程内存,从而可以减少网络延迟。
结论
在本文中,我们介绍了 HugeCTR,这是一个面向行业的推荐系统训练框架,针对具有模型并行嵌入和数据并行密集网络的大规模 CTR 模型进行了优化。我们还重点介绍了 GPU 版本参数服务器的分布式哈希发送传播之前,并讨论了 HugeCTR 团队在实现分布式哈希发送传播之前时面临的挑战和解决方案。