一种分布式训练中参数更新方法及装置与流程

文档序号:19572554发布日期:2019-12-31 19:05阅读:176来源:国知局
一种分布式训练中参数更新方法及装置与流程

本申请涉及计算机技术领域,特别涉及一种分布式训练中参数更新方法及装置、计算设备、计算机可读存储介质和芯片。



背景技术:

目前,随着计算机技术的迅猛发展,深度学习技术也得到了快速进步,随着深度学习技术的深入,研发出越来越复杂的算法,这些算法需要大量的数据并耗费大量的时间才能有效的完成训练,因此研发出了分布式训练。

在深度学习的模型优化中,需要使用梯度下降的方法计算梯度找到最小的损失函数,以此来训练模型,加快模型的收敛。在目前的分布式训练中,需要每完成一次训练都要进行梯度信息的传递和模型参数的同步,以便于分布式训练集群快速地找到最小损失函数,完成模型训练。但是模型训练会因为模型参数数据量大,在同步过程中耗费时间长,导致模型训练时间长、跨度大,严重延缓了模型训练的速度。

因此,如何改善上述问题,就成为技术人员目前亟待解决的问题。



技术实现要素:

有鉴于此,本申请实施例提供了一种分布式训练中参数更新方法及装置、计算设备、计算机可读存储介质和芯片,以解决现有技术中存在的技术缺陷。

根据本申请实施例的第一方面,提供了一种分布式训练中参数更新方法,包括:

接收分布式训练集群中的每个训练节点传递的梯度;

根据每个训练节点传递的梯度计算训练模型的损失值并更新所述训练模型的模型参数;

根据所述损失值确定模型训练的训练阶段;

根据所述训练阶段对所述模型参数进行压缩,获得压缩模型参数;

将所述压缩模型参数同步至所述分布式训练集群的每个训练节点,更新每个训练节点中的模型参数。

可选的,根据每个训练节点传递的梯度计算训练模型的损失值并更新所述训练模型的模型参数,包括:

将每个训练节点传递的梯度累加并计算均值,得到平均累积梯度;

根据所述平均累积梯度计算训练模型的损失值并更新训练模型的参数。

可选的,根据所述损失值确定模型训练的训练阶段,包括:

根据所述损失值的收敛速率确定模型训练的训练阶段。

可选的,根据所述损失值的收敛速率确定模型训练的训练阶段,包括:

在所述损失值的收敛速率大于等于第一预设阈值的情况下,确定模型训练处于第一训练阶段;

在所述损失值的收敛速率小于第一预设阈值且大于等于第二预设阈值的情况下,确定模型训练处于第二训练阶段;

在所述损失值的收敛速率小于第二预设阈值情况下,确定模型训练处于第三训练阶段。

可选的,所述参数包括若干个张量;

根据所述训练阶段对所述模型参数进行压缩,获得压缩模型参数,包括:

根据所述训练阶段对所述模型参数中的张量进行压缩,获得压缩模型参数。

可选的,根据所述训练阶段对所述模型参数中的张量进行压缩,包括:

在模型训练处于第一训练阶段的情况下,采用第一压缩法对所述模型参数中的张量进行压缩;

在模型训练处于第二训练阶段的情况下,采用第二压缩法对所述模型参数中的张量进行压缩;

在模型训练处于第三训练阶段的情况下,采用第三压缩法对所述模型参数中的张量进行压缩;

其中,第一压缩法的压缩效率和损失精度大于第二压缩算法,第二压缩算法的压缩效率和损失精度大于第三压缩算法。

可选的,所述分布式训练中参数更新方法,还包括:

根据张量参与压缩的比例将所述模型参数中的张量分组,获得第一压缩张量集合和第二压缩张量集合。

可选的,采用第二压缩法对所述模型参数中的张量进行压缩,包括:

采用第二压缩法对所述第二压缩张量集合中的张量进行压缩。

可选的,采用第三压缩法对所述模型参数中的张量进行压缩,包括:

采用第三压缩法对所述第二压缩张量集合中的张量进行压缩。

可选的,更新每个训练节点中的模型参数,包括:

每个训练节点接收所述压缩模型参数并解压,用解压后的压缩模型参数更新训练节点中的模型参数。

根据本申请实施例的第二方面,提供了一种分布式训练中参数更新装置,包括:

接收模块,被配置为接收分布式训练集群中的每个训练节点传递的梯度;

计算更新模块,被配置为根据每个训练节点传递的梯度计算训练模型的损失值并更新所述训练模型的模型参数;

确定模块,被配置为根据所述损失值确定模型训练的训练阶段;

压缩模块,被配置为根据所述训练阶段对所述模型参数进行压缩,获得压缩模型参数;

同步更新模块,被配置为将所述压缩模型参数同步至所述分布式训练集群的每个训练节点,更新每个训练节点中的模型参数。

可选的,所述计算更新模块,进一步被配置为将每个训练节点传递的梯度累加并计算均值,得到平均累积梯度;根据所述平均累积梯度计算训练模型的损失值并更新训练模型的参数。

可选的,所述确定模块,进一步被配置为根据所述损失值的收敛速率确定模型训练的训练阶段。

可选的,所述确定模块,进一步被配置为在所述损失值的收敛速率大于等于第一预设阈值的情况下,确定模型训练处于第一训练阶段;在所述损失值的收敛速率小于第一预设阈值且大于等于第二预设阈值的情况下,确定模型训练处于第二训练阶段;在所述损失值的收敛速率小于第二预设阈值情况下,确定模型训练处于第三训练阶段。

可选的,所述参数包括若干个张量;

所述压缩模块,进一步被配置为根据所述训练阶段对所述模型参数中的张量进行压缩,获得压缩模型参数。

可选的,所述压缩模块,进一步被配置为在模型训练处于第一训练阶段的情况下,采用第一压缩法对所述模型参数中的张量进行压缩;在模型训练处于第二训练阶段的情况下,采用第二压缩法对所述模型参数中的张量进行压缩;在模型训练处于第三训练阶段的情况下,采用第三压缩法对所述模型参数中的张量进行压缩;其中,第一压缩法的压缩效率和损失精度大于第二压缩算法,第二压缩算法的压缩效率和损失精度大于第三压缩算法。

可选的,所述分布式训练中参数更新装置,还包括:

分组模块,被配置为根据张量参与压缩的比例将所述模型参数中的张量分组,获得第一压缩张量集合和第二压缩张量集合。

可选的,所述分组模块,进一步被配置为采用第二压缩法对所述第二压缩张量集合中的张量进行压缩。

可选的,所述分组模块,进一步被配置为采用第三压缩法对所述第二压缩张量集合中的张量进行压缩。

可选的,所述同步更新模块,进一步被配置为每个训练节点接收所述压缩模型参数并解压,用解压后的压缩模型参数更新训练节点中的模型参数。

根据本申请实施例的第三方面,提供了一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述指令时实现所述分布式训练中参数更新方法的步骤。

根据本申请实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现所述分布式训练中参数更新方法的步骤。

根据本申请实施例的第五方面,提供了一种芯片,其存储有计算机指令,该指令被芯片执行时实现所述分布式训练中参数更新方法的步骤。

本申请提供的实施例中,通过接收分布式训练集群中的每个训练节点传递的梯度;根据每个训练节点传递的梯度计算训练模型的损失值并更新所述训练模型的模型参数;根据所述损失值确定模型训练的训练阶段;根据所述训练阶段对所述模型参数进行压缩,获得压缩模型参数;将所述压缩模型参数同步至所述分布式训练集群的每个训练节点,更新每个训练节点中的模型参数。自适应地减少了参数同步时通信量的大小,即保证了模型参数的同步效率,又保证了训练结果的精度,在进行分布式训练时,提高了模型训练的速度。

附图说明

图1是本申请实施例提供的计算设备的结构框图;

图2是本申请实施例提供的分布式训练中参数更新方法的流程图;

图3是本申请实施例提供的分布式训练集群的结构示意图;

图4是本申请实施例提供的确定模型训练阶段方法的流程图;

图5是本申请实施例提供的损失值loss的收敛曲线示意图;

图6是本申请另一实施例提供的分布式训练集群的结构示意图;

图7是本申请实施例提供的分布式训练中参数更新装置的结构示意图。

具体实施方式

在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。

在本申请一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请一个或多个实施例。在本申请一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本申请一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本申请一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

首先,对本发明一个或多个实施例涉及的名词术语进行解释。

分布式训练:使用多个训练节点对模型进行训练的方法。

压缩算法:是指数据压缩的算法,在电子与通信领域也常被称为信号编码,包括压缩和还原(或解码和编码)两个步骤。

张量:是一个多维的数据存储形式,数据的维度被称为张量的阶,它可以看成是向量和矩阵在多维空间中的扩展。

在本申请中,提供了一种分布式训练中参数更新方法及装置、计算设备、计算机可读存储介质和芯片,在下面的实施例中逐一进行详细说明。

图1示出了根据本申请一实施例的计算设备100的结构框图。该计算设备100的部件包括但不限于存储器110和处理器120。处理器120与存储器110通过总线130相连接,数据库150用于保存数据。

计算设备100还包括接入设备140,接入设备140使得计算设备100能够经由一个或多个网络160通信。这些网络的示例包括公用交换电话网(pstn)、局域网(lan)、广域网(wan)、个域网(pan)或诸如因特网的通信网络的组合。接入设备140可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(nic))中的一个或多个,诸如ieee802.11无线局域网(wlan)无线接口、全球微波互联接入(wi-max)接口、以太网接口、通用串行总线(usb)接口、蜂窝网络接口、蓝牙接口、近场通信(nfc)接口,等等。

在本申请的一个实施例中,计算设备100的上述部件以及图1中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图1所示的计算设备结构框图仅仅是出于示例的目的,而不是对本申请范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。

计算设备100可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或pc的静止计算设备。计算设备100还可以是移动式或静止式的服务器。

其中,处理器120可以执行图2所示分布式训练中参数更新方法中的步骤。图2示出了根据本申请一实施例的分布式训练中参数更新方法的流程图,包括步骤202至步骤210。

步骤202:接收分布式训练集群中的每个训练节点传递的梯度。

分布式训练中的分布式训练集群可以是包括一个参数服务器和多个训练节点的参数服务器架构(parameterserverarchitecture),也可以是无参数服务器的环形架构(ring-allreduce),在本申请中对分布式训练集群的架构形式不做具体限定。

分布式训练中的分布式训练集群在每个训练节点中采用不同的训练样本对所述待训练模型进行单独训练计算梯度,将梯度传递给参数服务器架构中的参数服务器,或将梯度传递给环形架构中的各个训练节点。

在每个训练节点中用训练样本对待训练模型进行单独训练计算梯度的方法有很多,如随机梯度下降法、批量梯度下降法、小批量梯度下降法等,在本申请中不对训练模型在计算梯度时采用的算法做限定。

在本申请提供的一实施例中,参见图3,分布式训练集群以参数服务器架构(parameterserverarchitecture)为例进行说明,所述分布式训练集群包括一个参数服务器301和训练节点302,训练节点303,训练节点304,训练节点305,训练节点306,其中参数服务器301和每个训练节点都有待训练模型及其在本地的参数,每个训练节点根据不同的训练数据分别计算梯度,并将梯度传递回所述参数服务器301,参数服务器301接收训练节点302,训练节点303,训练节点304,训练节点305,训练节点306分别传递的梯度。

步骤204:根据每个训练节点传递的梯度计算训练模型的损失值并更新所述训练模型的模型参数。

参数服务器架构中参数服务器根据每个训练节点传递过来的梯度计算参数服务器上的待训练模型的损失值,同时更新所述待训练模型中的模型参数,更新待训练模型中的模型参数有利于加快模型的训练速度,减少找到待训练模型的最小损失函数的时间。

环形架构中的各个训练节点根据传递的梯度计算损失值,同时更新训练节点上待训练模型的模型参数。

可选的,在参数服务器架构中步骤204可以通过下述步骤s2041~s2042实现。

s2041、将每个训练节点传递的梯度累加并计算均值,得到平均累积梯度。

参数服务器接收每个训练节点传递的梯度,并将所有梯度累加后计算平均值,得到平均累积梯度。

在本申请提供的实施例中,参数服务器301将训练节点302的梯度θ1,训练节点303的梯度θ2,训练节点304的梯度θ3,训练节点305的梯度θ4,训练节点306的梯度θ5累加后计算平均值,得到平均累积梯度θ0。

s2042、根据所述平均累积梯度计算训练模型的损失值并更新训练模型的参数。

在参数服务器中,使用平均累积梯度计算训练模型的损失值,并用平均累积梯度更新训练模型的参数。

步骤206:根据所述损失值确定模型训练的训练阶段。

根据所述损失值确定模型训练的训练阶段,具体的,根据所述损失值的收敛速率确定模型训练的训练阶段,所述损失值的收敛速率根据固定训练步数内损失值下降的差值确定。

可选的,参见图4,根据所述损失值的收敛速率确定模型训练的训练阶段可以通过下述步骤402~步骤406实现。步骤402至步骤406之间是并列步骤,无先后顺序。

步骤402:在所述损失值的收敛速率大于等于第一预设阈值的情况下,确定模型训练处于第一训练阶段。

在所述损失值的收敛速率大于等于第一预设阈值的情况下,模型训练处于第一训练阶段,此时模型训练的收敛速度比较快,处于模型训练的开始阶段,在这一阶段模型参数的精度损失对模型训练的影响比较小。

步骤404:在所述损失值的收敛速率小于第一预设阈值且大于等于第二预设阈值的情况下,确定模型训练处于第二训练阶段。

在所述损失值的收敛速率小于第一预设阈值且大于等于第二预设阈值的情况下,模型训练处于第二训练阶段,此时模型训练的收敛速度适中,处于模型训练的中间阶段,在这一阶段模型参数的精度损失对模型训练的影响适中。

步骤406:在所述损失值的收敛速率小于第二预设阈值情况下,确定模型训练处于第三训练阶段。

在所述损失值的收敛速率小于第二预设阈值情况下,模型训练处于第三训练阶段,此时模型训练的收敛速度比较慢,处于模型训练的收尾阶段,在这一阶段模型参数的精度损失对模型训练的影响较大。

步骤208:根据所述训练阶段对所述模型参数进行压缩,获得压缩模型参数。

所述模型参数包括若干个张量,根据所述训练阶段对所述模型参数进行压缩,即对所述模型参数中的张量进行压缩,获得数据量较小的压缩模型参数,在同步模型参数时,能提高通讯效率,从而提高模型的训练速度。张量是一个多维的数据存储形式,数据的维度被称为张量的阶,它可以看成是向量和矩阵在多维空间中的扩展。

对模型参数中的张量进行压缩,可以是对单个张量的压缩,减小张量的大小,从而达到减小模型参数的目的,也可以是针对不同参数中的相同张量合并成一份张量,以达到减小模型参数的目的,在本申请中,不对张量的具体压缩方法做限定。

在实际应用中,根据张量参与压缩的比例不同,将模型参数中的张量分组,获得第一压缩张量集合和第二压缩张量集合,其中,第一压缩张量集合中的张量对模型训练的影响较大,在模型训练的第二训练阶段和第三训练阶段时不参与压缩,第二压缩张量集合中的张量对模型训练的影响适中,可以在模型训练的第二训练阶段和第三训练阶段参与压缩。

根据模型训练的训练阶段的不同,对模型参数的张量采用不同的压缩方法,获得压缩后的压缩模型参数。

如步骤206中所述,模型训练被分为三个阶段,分别为第一训练阶段、第二训练阶段和第三训练阶段,其中,第一训练阶段的收敛速度比较快,在这一阶段模型参数的精度损失对模型训练的影响比较小,此时模型训练处于模型训练的开始阶段;第二训练阶段的收敛速度比较适中,在这一阶段模型参数的精度损失对模型训练的影响适中,此时模型训练处于模型训练的中间阶段;第三训练阶段的收敛速度比较缓慢,在这一阶段模型参数的精度损失对模型训练的影响较大,此时模型训练处于模型训练的收尾阶段。

在模型训练处于第一训练阶段的情况下,采用第一压缩法对所述模型参数中的张量进行压缩。此时模型训练处于开始阶段,模型收敛速率快,参数的精度损失对模型训练的影响轻微,可以用高压缩率、精度损失大的第一压缩法对模型参数中的张量进行压缩,如将fp32型浮点数的原始参数压缩为int8型整数的压缩模型参数。

在模型训练处于第二训练阶段的情况下,采用第二压缩法对所述模型参数中的张量进行压缩。此时模型训练处于中间阶段,模型收敛速率减缓,参数精度的损失对模型训练的影响适中,此时需要采用中等压缩率、精度损失适中的第二压缩法,对参数中的张量进行压缩,如将fp32型浮点数的原始参数压缩为fp16型浮点数的压缩模型参数。

在模型训练处于第三训练阶段的情况下,采用第三压缩法对所述模型参数中的张量进行压缩。此时模型训练处于收尾阶段,模型收敛速率缓慢,参数精度的损失对模型训练的影响比较大,此时需要采用低压缩率、精度损失小的第三压缩法,对参数中的张量进行压缩,如采用算数编码、哈夫曼编码等无损压缩算法。

其中,第一压缩法的压缩效率和损失精度大于第二压缩算法,第二压缩算法的压缩效率和损失精度大于第三压缩算法。如上所述,具体的压缩算法有很多,在此不对具体限定压缩算法,在实际应用中,可以根据实际情况,采用不同的压缩算法对参数进行压缩。

步骤210:将所述压缩模型参数同步至所述分布式训练集群的每个训练节点,更新每个训练节点中的模型参数。

将压缩模型参数同步至所述分布式训练集群的每个训练节点,每个训练节点根据同步的压缩模型参数更新本地训练模型的参数,用本地的训练样本数据根据更新后的模型参数对所述训练模型进行训练。

在本申请提供的实施例中,参数服务器301,在不同的模型训练阶段,使用不同的压缩算法对模型参数压缩,将压缩模型参数同步至分布式训练集群中的各个训练节点,各个训练节点根据新的模型参数训练模型。

可选的,更新每个训练节点中的模型参数,包括:每个训练节点接收所述压缩模型参数并解压,用解压后的压缩模型参数更新训练节点中的模型参数。

分布式训练集群中的每个训练节点,接收所述压缩模型参数,并将所述压缩模型参数解压,获得解压模型参数,用解压后的解压模型参数更新训练节点中的模型参数。

在本申请提供的实施例中,以图3为例,训练节点302,训练节点303,训练节点304,训练节点305,训练节点306分别接收参数服务器301同步的压缩模型参数,并将压缩模型参数进行解压,使用解压后的模型参数更新训练节点中的模型参数。

本申请提供的分布式训练中参数更新方法,通过判断训练过程中的不同阶段,针对不同规模的张量,采用不同压缩算法对模型参数进行压缩和同步,在分布式训练过程中,自适应地减少了通信量的大小,即保证了模型参数的同步效率,又保证了训练结果的精度,在通信效率和通信结果精度之间取得平衡,提高了模型训练的速度。

为了便于理解,基于图3示出的分布式集群的结构示意图,对本申请的分布式训练中参数更新方法做出解释说明。

如图3所示,分布式训练集群包括参数服务器301和训练节点302,训练节点303,训练节点304,训练节点305,训练节点306,其中,参数服务器和每个训练节点都有待训练模型的副本,在每个训练节点上,对所述待训练模型进行训练,训练节点302计算的梯度为θ1,训练节点303计算的梯度为θ2,训练节点304计算的梯度为θ3,训练节点305计算的梯度为θ4,训练节点306计算的梯度为θ5,参数服务器301接收各个训练节点传递的梯度。

在参数服务器301中,将各个训练节点传递的梯度进行累加后计算平均值,得到平均累积梯度θ0。

根据平均累积梯度θ0计算模型训练的损失值loss,并更新训练模型的模型参数为(a1,b1,c1,d1,…,n1),其中a1,b1,c1,d1,…,n1为不同规模的张量。

参见图5,图5示出了损失值loss的收敛曲线,横轴表示模型训练步数,纵轴表示loss值,a阶段的损失值斜率变化高,在相同的训练步数内,loss值的下降速度快,收敛速率大于第一阈值,为训练模型的第一训练阶段,在这一阶段,模型收敛速度较快,模型参数精度的损失对计算模型参数的梯度的影响较小,模型参数的梯度直接影响模型的训练,因此模型参数精度的损失对模型训练的影响较小。

b阶段的损失值斜率减缓,收敛速率小于第一阈值且大于等于第二阈值,为训练模型的第二训练阶段,在这一阶段,模型收敛速度减缓,模型参数精度的损失对计算模型参数的梯度有影响,因此需要用较为精准的模型参数精度计算模型参数的梯度。

c阶段的损失值斜率缓慢,收敛速率小于第二阈值,为模型训练的第三训练阶段,在这一阶段,模型收敛速度缓慢,模型参数精度的损失对计算模型参数的梯度影响明显,因此需要用精准的模型参数精度计算模型参数的梯度。

根据张量参与压缩的比例不同,将模型参数中的张量分组,获得第一压缩张量集合(a1,b1,c1,d1)和第二压缩张量集合(e1,f1,…,n1)。

在损失值loss的收敛速率在第一训练阶段的情况下,此时模型收敛速率快,参数的精度损失对模型训练的影响轻微,采用将fp32型浮点数的原始参数(a1,b1,c1,d1,…,n1)压缩为int8型整数的压缩模型参数(a11,b11,c11,d11,…,n11)的压缩算法,并将压缩模型参数(a11,b11,c11,d11,…,n11)同步至分布式训练集群中的各个训练节点中。

在损失值loss的收敛速率在第二训练阶段的情况下,此时模型收敛速率减缓,参数精度的损失对模型训练的影响适中,采用将fp32型浮点数的第二压缩张量集合(e1,f1,…,n1)压缩为fp16型浮点数的压缩模型参数(e12,f12,…,n12)。并将压缩模型参数(a1,b1,c1,d1,e12,f12,…,n12)同步至分布式训练集群中的各个训练节点中。

在损失值loss的收敛速率在第三训练阶段的情况下,此时模型收敛速率缓慢,参数精度的损失对模型训练的影响较大,采用哈夫曼编码无损压缩算法,将将fp32型浮点数的第二压缩张量集合(e1,f1,…,n1)压缩为(e13,f13,…,n13),并将压缩模型参数(a1,b1,c1,d1,e13,f13,…,n13)同步至分布式训练集群中的各个训练节点中。

训练节点302,训练节点303,训练节点304,训练节点305,训练节点306在不同训练阶段接收不同的压缩模型参数,并根据压缩模型参数继续训练所述训练模型。

本实施例提供的分布式训练中参数更新方法,采用参数服务器架构(parameterserverarchitecture),通过判断训练过程中的不同阶段,针对不同规模的张量,采用不同压缩算法对模型参数进行压缩和同步,在分布式训练过程中,自适应地减少了通信量的大小,即保证了模型参数的同步效率,又保证了训练结果的精度,在通信效率和通信结果精度之间取得平衡,提高了模型训练的速度。

如图6所示,本申请另一实施例提供了一种环形架构(ring-allreduce)的分布式训练集群的结构示意图,图6所示,该分布式训练集群中有4个训练节点,分别为训练节点601、训练节点602、训练节点603、训练节点604,并且4个训练节点之间呈环形连接,每个训练节点都有待训练模型。

在每个训练节点上对待训练模型进行训练,获得各自对应的梯度,并根据梯度计算模型训练的损失值loss,并更新待训练模型的模型参数。

根据loss值的收敛速率的大小,判断待训练模型的训练阶段,具体判断方法与前文所述判断方法一致,在此不再赘述。

在每个训练节点上,根据待训练模型的不同训练阶段对模型参数进行压缩,获得压缩模型参数,具体压缩方法与前文所述方法一致,在此不再赘述。

将每个训练节点上的压缩模型参数在所述训练集群中进行同步,训练节点601将压缩模型参数传递给训练节点602,训练节点602将压缩模型参数传递给603,训练节点603将压缩模型参数传递给604,训练节点604将压缩模型参数传递给601,直至将每个训练节点的压缩模型参数同步至训练集群的每个训练节点中,更新所述训练集群中每个训练节点中的参数模型。

本实施例提供的分布式训练中参数更新方法,采用环形架构(ring-allreduce),通过判断训练过程中的不同阶段,针对不同规模的张量,采用不同压缩算法对模型参数进行压缩和同步,在分布式训练过程中,自适应地减少了通信量的大小,即保证了模型参数的同步效率,又保证了训练结果的精度,在通信效率和通信结果精度之间取得平衡,提高了模型训练的速度。

与上述方法实施例相对应,本申请还提供了分布式训练中参数更新装置实施例,图7示出了本申请一个实施例的分布式训练中参数更新装置的结构示意图。如图7所示,该装置包括:

接收模块702,被配置为接收分布式训练集群中的每个训练节点传递的梯度。

计算更新模块704,被配置为根据每个训练节点传递的梯度计算训练模型的损失值并更新所述训练模型的模型参数。

确定模块706,被配置为根据所述损失值确定模型训练的训练阶段。

压缩模块708,被配置为根据所述训练阶段对所述模型参数进行压缩,获得压缩模型参数。

同步更新模块710,被配置为将所述压缩模型参数同步至所述分布式训练集群的每个训练节点,更新每个训练节点中的模型参数。

可选的,所述计算更新模块704,进一步被配置为将每个训练节点传递的梯度累加并计算均值,得到平均累积梯度;根据所述平均累积梯度计算训练模型的损失值并更新训练模型的参数。

可选的,所述确定模块706,进一步被配置为根据所述损失值的收敛速率确定模型训练的训练阶段。

可选的,所述确定模块706,进一步被配置为在所述损失值的收敛速率大于等于第一预设阈值的情况下,确定模型训练处于第一训练阶段;在所述损失值的收敛速率小于第一预设阈值且大于等于第二预设阈值的情况下,确定模型训练处于第二训练阶段;在所述损失值的收敛速率小于第二预设阈值情况下,确定模型训练处于第三训练阶段。

可选的,所述参数包括若干个张量;

所述压缩模块708,进一步被配置为根据所述训练阶段对所述模型参数中的张量进行压缩,获得压缩模型参数。

可选的,所述压缩模块708,进一步被配置为在模型训练处于第一训练阶段的情况下,采用第一压缩法对所述模型参数中的张量进行压缩;在模型训练处于第二训练阶段的情况下,采用第二压缩法对所述模型参数中的张量进行压缩;在模型训练处于第三训练阶段的情况下,采用第三压缩法对所述模型参数中的张量进行压缩;其中,第一压缩法的压缩效率和损失精度大于第二压缩算法,第二压缩算法的压缩效率和损失精度大于第三压缩算法。

可选的,所述分布式训练中参数更新装置,还包括:

分组模块,被配置为根据张量参与压缩的比例将所述模型参数中的张量分组,获得第一压缩张量集合和第二压缩张量集合。

可选的,所述分组模块,进一步被配置为采用第二压缩法对所述第二压缩张量集合中的张量进行压缩。

可选的,所述分组模块,进一步被配置为采用第三压缩法对所述第二压缩张量集合中的张量进行压缩。

可选的,所述同步更新模块710,进一步被配置为每个训练节点接收所述压缩模型参数并解压,用解压后的压缩模型参数更新训练节点中的模型参数。

本申请提供的分布式训练中参数更新装置,通过判断训练过程中的不同阶段,针对不同规模的张量,采用不同压缩算法对模型参数进行压缩和同步,在分布式训练过程中,自适应地减少了通信量的大小,即保证了模型参数的同步效率,又保证了训练结果的精度,在通信效率和通信结果精度之间取得平衡,提高了模型训练的速度。

本申请一实施例中还提供一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述指令时实现所述的分布式训练中参数更新方法的步骤。

本申请一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现如前所述分布式训练中参数更新方法的步骤。

上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的分布式训练中参数更新方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述分布式训练中参数更新方法的技术方案的描述。

本申请实施例公开了一种芯片,其存储有计算机指令,该指令被处理器执行时实现如前所述分布式训练中参数更新方法的步骤。

上述对本申请特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。

所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。

需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本申请所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。

以上公开的本申请优选实施例只是用于帮助阐述本申请。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本申请的内容,可作很多的修改和变化。本申请选取并具体描述这些实施例,是为了更好地解释本申请的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本申请。本申请仅受权利要求书及其全部范围和等效物的限制。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1