近年来,机器学习的作用越来越大,开始在各行各业扮演者重要的角色。而随着大数据浪潮的出现,机器学习的数据和模型的规模也越来越大。大规模的数据和模型就会带来很多的问题,一是非常容易过拟合,从而要求更符合实际、更大规模的数据和模型。二是对计算和存储能力提出了新的要求,单机往往不能在可接受的时间范围内满足训练的要求,因此,我们不得不使用计算机集群和分布式存储来完成训练任务。而拥有更强并行度和计算能力的GPU显然是比CPU更适合完成这项任务的,GPU集群也成了分布式机器学习的最佳选择。
但是当单机式机器学习模型迁移到分布式集群上时,计算速度和集群机器数量不呈线性相关。这是因为计算并行、数据并行和模型并行时,GPU之间的通信占据了很多资源,且GPU的利用率并不高。即便是我们的计算机也往往会出现“一核有难,八核围观”的问题,更别说更加复杂的GPU集群。因此,通信问题成为了分布式机器学习发展的瓶颈之一。
相比较而言,机器学习这个领域本身是比较单纯的领域,其模型和算法都不会涉及到底层,因此机器学习以往通常是计算机专业研究的问题。而分布式机器学习则更像是一个系统工程,涉及到数据、模型、算法、网络、通信、硬件等许多方面,这就更增加了这个领域的难度。正如一句话所说,“颠覆一个行业的往往是另一个行业”。确实是这样的,引起一个行业崛起的往往是另一个行业的技术革新,阻碍一个行业发展的往往是另一个行业的技术缺陷。正是通信问题阻碍了机器学习领域的进一步发展。所以这就要求我们在能力允许的范围内,尽可能地去了解多领域的知识。