随着深度学习模型的规模呈指数增长,不再难于通过一台机器实现可用的学习时间。 GPT-2是一种著名的会话模型,具有约1.5B的参数,据说已使用了800万个网页进行培训。 GPT-3具有175B参数,是GPT-2的100倍以上,要在此级别训练模型,需要构建大型GPU集群。
著名的学习框架(例如Tensorflow和PyTorch的最新版本)包括分布式学习功能,该功能利用多个GPU机器进行培训。但是,配置很复杂,为了达到正常的效率,您必须在许多领域中执行高难度的任务,例如网络配置,权限管理和数据共享。因此,正在出现一些旨在进行有效的分布式学习的框架。
Horovod是一个著名的分布式学习框架,它支持Keras,Tensorflow,PyTorch和MxNet:
根据使用Horovod进行的实验,在Inception V3或ResNet-101的情况下,与单个节点相比,可以获得90%的分布式学习效率,在VGG-16的情况下,可以获得68%的分布式学习效率。换句话说,例如,如果使用4个节点,则Inception V3的学习效率是3.6倍,VGG-16的学习效率是1.8倍。
RaySGD是在PyTorch的分布式学习功能之上实现的框架,旨在极大地提高设置的便利性。局限在PyTorch上是有缺点的,但是与Horovod相比,分布式学习的效率略有提高,据说与现有PyTorch内置的分布式学习功能相比,大约提高了20%或更多。特别是,Horovod在设置外部库(例如MPI或NCCL)方面有点复杂,并且与必须根据环境进行构建和使用相比,RaySGD的优势是仅通过简单的安装和配置即可创建可扩展的学习代码:
Horovod和RaySGD都是免费的,开源的并且正在积极改进项目。当然,使用预构建的GPU集群(例如AWS)是一种方法,但是出于构建自己的GPU场的目的,引入和使用这样的框架将是一个不错的起点。