为了充分利用GPU的能力和高速带宽
英伟达的 hugeCtr https://github.com/NVIDIA/HugeCTR 和 脸书 的 DLRM
【CoRR2019】Deep Learning Recommendation Model for Personalization and Recommendation Systems
把emb参数分成不同的份放在GPU HMB中,需要需要昂贵的GPU,不实用。

腾讯的DES
Distributed Equivalent Substitution Training for Large-Scale Recommender Systems
和 百度的 HierPs
Distributed Hierarchical GPU Parameter Server for Massive Scale Deep Learning Ads System
使用主存保存emb ,DES采用 field-aware 分片策略来reduce(减少or规约)GPU间的数据通信,但没有进行主存和GPU之间通信优化。
HierPS使用大batch策略来在gpu中缓存使用大参数,以此减少传输延时。

Tensorflow, MxNet 和 PyTorch 并不能很好的支持大规模embedding的训练:

  • PyTorch 中没有官方支持的ps
  • Mxnet 支持的模型大小因为实现问题受到了限制
  • tensorflow 使用它的ps后吞吐会严重下降

为了提升tensorflow, mxnet, pytorch较差的分布式性能,uber 的horovod
Horovod: fast and easy distributed deeplearninginTensorFlow
和字节的byteps
Product-based Neural Networks for User Response Prediction over Multi-field Categorical Data
都支持不同的平台:

  • horovod 使用Ring-AllReduce实现来加速dense模型的训练
  • byteps 通过调度优先来在不同的层加速同步参数,优化不同层的顺序来在反向传播和前向计算的时候同步参数

之前写过一篇关于 horovod 的知识总结:uber的Horovod | dragon