本发明涉及一种基于有序动量的异步分布式机器学习方法,是一种训练集群中各工作节点进行异步分布式学习的方法。
背景技术:
1、许多机器学习模型可以被形式化为以下有限和形式的优化问题:
2、
3、其中w表示模型参数,d表示模型参数维度,为训练样本集合,f(w;ξ)表示样本ξ对应的损失函数。
4、随机梯度下降(sgd)及其变体被广泛用于解决上述问题。在每次迭代中,sgd采样一个或者小批量训练样本计算出随机梯度作为完整梯度的估计来更新模型参数。在实际应用中,动量(momentum)通常作为获得更快收敛和更好泛化性能的关键技术被引入进sgd。许多流行的机器学习库(例如tensorflow和pytorch)都包含带有momentum的sgd(sgdm)作为优化器之一。
5、近年来,机器学习模型和数据集的大小都在快速增加,单台机器往往不足以在可接受时间内完成机器学习模型的训练任务。分布式学习通过将计算任务分布在多台机器上来加速训练过程。由于其对大规模机器学习训练任务的必要性,分布式学习以成为近年来的热门研究课题。现有的分布式学习方法可以分为两种主要类型:同步分布式学习方法和异步分布式学习方法。在同步分布式学习方法中,已完成计算的工作节点必须保持闲置来等待其他工作节点。因此同步分布式学习方法的速度经常受到缓慢工作节点的影响。相比之下,异步分布式学习方法旨在解决缓慢的工作节点拖慢训练速度这一问题。最具代表性的异步分布式学习方法是异步随机梯度下降法(asgd)及其变体。在asgd中,一旦某个工作节点完成梯度计算,立即使用该梯度进行参数更新,而无需等待其他工作节点完成计算。
6、在深度模型训练中,动量(momentum)技术因为其在优化和泛化方面的优势得到广泛认可。在同步分布式学习方法中,动量被广泛应用到各个领域,包括去中心化方法、通信压缩算法等等。同步分布式学习方法下,训练速度快的节点需要等待训练速度慢的节点,因此整个分布式系统的训练速度会受到集群中慢节点的制约。相比而言,异步分布式学习方法的训练速度不会受到集群中慢节点的制约,但目前尚且缺少可靠且高效的带动量的异步分布式学习方法。
技术实现思路
1、发明目的:针对现有技术中存在的问题与不足,本发明提供一种基于有序动量的异步分布式机器学习方法,该方法将动量引入异步随机梯度下降方法,可以提升异步随机梯度下降方法的收敛性能,并且使得训练得到的机器学习模型具备更好的泛化性能。相比较现有的带动量的同步分布式机器学习方法,本方法可以大幅度提升分布式训练的速度,尤其是在训练集群中各工作节点计算能力异构的场景下,本方法的速度优势更加明显。
2、本发明的方法中,在服务器端将梯度按照其迭代索引的顺序组织成有序动量,梯度到达服务器端后,根据其迭代索引放入相应的梯度存储桶中。值得注意的是这里的梯度存储桶并不是实体存在的,本方法除了动量项外不引入额外存储开销。
3、技术方案:一种基于有序动量的异步分布式机器学习方法,包括如下内容:
4、(11)在服务器端初始化模型参数、动量、迭代索引和最新梯度存储桶索引,服务器向所有的工作节点发送初始模型参数和迭代索引;
5、(12)服务器基于最新梯度存储桶索引判断属于下一个梯度存储桶的梯度是否正在被某个工作节点计算;如果是,则执行更新参数、动量和最新梯度存储桶索引;否则,参数、动量和最新梯度存储桶索引均保持不变;从某个工作节点接收梯度和该梯度的迭代索引,使用该梯度更新动量和参数,更新迭代索引;将更新后的参数和迭代索引返还给工作节点;直到模型训练结束;
6、(21)在某个工作节点上训练流程的具体步骤为:
7、输入训练数据;
8、接收服务器节点发送的模型参数及其迭代索引;从本地数据集中随机采样训练数据,根据挑选出的训练数据,计算出随机梯度,发送计算出的随机梯度及迭代索引到服务器节点,判断是否收到服务器节点发送的停止工作消息,若否,继续接收服务器节点发送的模型参数及其迭代索引进行梯度计算参与模型训练;否则结束训练。
9、所述(11)中,包括如下步骤:
10、步骤100,输入迭代次数t,动量系数β,学习率η,工作节点总数k,最新梯度存储桶索引b0=0,以及其他超参数;
11、步骤101,初始化模型参数w0和动量u0=0;
12、步骤102,初始化迭代索引t=0;
13、步骤103,向所有的工作节点发送初始模型参数w0和迭代索引t=0。
14、所述(12)中,包括如下步骤:
15、步骤104,基于最新存储桶索引判断属于下一个梯度存储桶的梯度是否正在被某个工作节点计算,如果则执行以下步骤更新参数、动量和最新梯度存储桶索引;否则参数、动量和最新梯度存储桶索引均保持不变:bt+1=bt,直接跳转到步骤107;这里的k指工作节点总数,bt、wt、ut分别指最新梯度存储桶索引、模型参数、动量;和分别是参数和动量更新过程中产生的中间变量;
16、步骤105,使用动量更新参数
17、步骤106,将动量乘以动量系数并且将最新梯度存储桶索引前移一位bt+1=bt+1;
18、步骤107,从某个工作节点接收梯度和该梯度的迭代索引ite(kt,t),这里的kt表示该工作节点的索引;
19、步骤108,使用所述梯度更新动量这里的表示该梯度所属的梯度存储桶索引;
20、步骤109,使用该梯度更新参数
21、步骤110,更新迭代索引t=t+1;
22、步骤111,将最新的参数wt+1和其迭代索引t+1返还给工作节点kt;
23、步骤112,判断是否达到停止条件t=t,如果否,则跳转到步骤104;
24、步骤113,通知各个工作节点停止训练。
25、所述(21)中,本发明的方法在第k个工作节点上训练流程的具体步骤为:
26、步骤200,输入训练数据;
27、步骤201,接收服务器节点发送的模型参数wt′及其迭代索引t′;
28、步骤202,从本地数据集中随机采样训练数据ξk;
29、步骤203,根据挑选出的训练数据ξk,计算出随机梯度
30、步骤204,发送计算出的随机梯度及其迭代索引t′到服务器节点;
31、步骤205,判断是否收到服务器节点发送的停止工作消息,若否,则返回步骤201,继续训练;若是,则结束训练。
32、所述步骤100、104、106、108中的梯度存储桶定义为:第0个梯度存储桶为第i个梯度存储桶定义为这里i≥1。对于迭代索引为t的梯度来说,它所属的梯度存储桶索引为动量的最新梯度存储桶指的是用于存放该动量中最新梯度的梯度存储桶,对于动量ut+1来说,其最新梯度存储桶索引为
33、有益效果:与现有技术相比,本发明提供的基于有序动量的异步分布式机器学习方法,在服务器端将梯度按照其迭代索引的顺序组织成有序动量。这里的有序动量是若干个梯度存储桶的加权和,梯度到达服务器端后,根据其迭代索引放入相应的梯度存储桶中。本方法将动量引入异步随机梯度下降方法,能提升算法的收敛性能和模型的泛化性能。相比较现有的带动量的同步分布式机器学习方法,本方法可以大幅度提升分布式训练的速度,尤其是在训练集群中各工作节点计算能力异构的场景下,本方法的速度优势更加明显。
1.一种基于有序动量的异步分布式机器学习方法,其特征在于,包括如下内容:
2.根据权利要求1所述的基于有序动量的异步分布式机器学习方法,其特征在于,所述(11)中,包括如下步骤:
3.根据权利要求1所述的基于有序动量的异步分布式机器学习方法,其特征在于,所述(12)中,包括如下步骤:
4.根据权利要求1所述的基于有序动量的异步分布式机器学习方法,其特征在于,所述(21)中,在第k个工作节点上训练流程的具体步骤为:
5.根据权利要求1所述的基于有序动量的异步分布式机器学习方法,其特征在于,所述梯度存储桶定义为:第0个梯度存储桶为第i个梯度存储桶定义为这里i≥1;对于迭代索引为t的梯度来说,它所属的梯度存储桶索引为动量的最新梯度存储桶指的是用于存放该动量中最新梯度的梯度存储桶,对于动量ut+1来说,其最新梯度存储桶索引为