CN116090584A - 一种模型训练方法、装置、存储介质及设备 - Google Patents
一种模型训练方法、装置、存储介质及设备 Download PDFInfo
- Publication number
- CN116090584A CN116090584A CN202310096352.0A CN202310096352A CN116090584A CN 116090584 A CN116090584 A CN 116090584A CN 202310096352 A CN202310096352 A CN 202310096352A CN 116090584 A CN116090584 A CN 116090584A
- Authority
- CN
- China
- Prior art keywords
- parameters
- sparse
- gradient
- nodes
- model
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Complex Calculations (AREA)
Abstract
本说明书公开了一种模型训练方法、装置、存储介质及设备。当前节点与其他节点基于不同的训练样本,通过待训练模型确定输出,以各自根据输出计算待训练模型的稠密参数的梯度,以及稀疏参数的梯度。各节点交互自身计算得到的梯度后,基于稠密参数对应的梯度更新稠密参数,并各自基于稀疏参数对应的梯度,更新自身所需更新的稀疏参数。不同节点所需更新的稀疏参数不完全相同。更新参数后,当前节点根据更新后的稠密参数以及稀疏参数,继续联合其他节点对待训练模型进行分布式训练。能够通过分布式训练,采用不同的方式,分别对待训练模型的稀疏参数及稠密参数进行同步更新,提升模型的训练效率。
Description
技术领域
本说明书涉及机器学习技术领域,尤其涉及一种模型训练方法、装置、存储介质及设备。
背景技术
用户对隐私数据越来越关注。目前,深度学习模型得到了越来越广泛地应用。为了提高对深度学习模型的训练效率,现有技术提出一种分布式训练的方法,采用参数服务器/计算节点(Parameter Server/Worker,PS/Worker)的模式。其中,参数服务器用于根据梯度调整参数,计算节点根据模型输出和标签计算梯度。
为了提升分布式训练效率,本说明书提供另一种模型训练方法。
发明内容
本说明书提供一种模型训练方法、装置、存储介质及设备,以至少部分地解决上述技术问题。
本说明书采用下述技术方案:
本说明书提供了一种模型训练方法,应用于对待训练模型进行分布式训练的各节点,所述待训练模型中包含稠密参数和稀疏参数,不同的节点所需更新的稀疏参数不完全相同;所述方法包括:
当前节点将所述当前节点自身的训练样本输入所述待训练模型,根据所述待训练模型的输出以及所述训练样本的标注,确定所述稠密参数对应的第一梯度以及所述稀疏参数对应的第二梯度;
将所述第一梯度以及所述第二梯度发送至其他节点,以及接收所述其他节点发送的稠密参数对应的第三梯度和稀疏参数对应的第四梯度,所述第三梯度和所述第四梯度为所述其他节点基于所述其他节点自身的训练样本通过所述待训练模型确定的;
根据所述第一梯度以及所述第三梯度,更新所述待训练模型的稠密参数;
根据所述第二梯度中的至少部分梯度,和/或所述第四梯度中的至少部分梯度,对所述当前节点所需更新的稀疏参数进行更新;
将更新后的稀疏参数发送至所述其他节点,并接收所述其他节点发送的由所述其他节点更新的稀疏参数;
根据更新后的稠密参数以及稀疏参数,继续联合所述其他节点对所述待训练模型进行训练,直至确定满足模型收敛条件为止。
本说明书提供了一种模型训练装置,应用于对待训练模型进行分布式训练的各节点,所述待训练模型中包含稠密参数和稀疏参数,不同的节点所需更新的稀疏参数不完全相同;所述装置包括:
确定模块,用于将当前节点自身的训练样本输入所述待训练模型,根据所述待训练模型的输出以及所述训练样本的标注,确定所述稠密参数对应的第一梯度以及所述稀疏参数对应的第二梯度;
第一交互模块,用于将所述第一梯度以及所述第二梯度发送至其他节点,以及接收所述其他节点发送的稠密参数对应的第三梯度和稀疏参数对应的第四梯度,所述第三梯度和所述第四梯度为所述其他节点基于所述其他节点自身的训练样本通过所述待训练模型确定的;
第一更新模块,用于根据所述第一梯度以及所述第三梯度,更新所述待训练模型的稠密参数;
第二更新模块,用于根据所述第二梯度中的至少部分梯度,和/或所述第四梯度中的至少部分梯度,对所述当前节点所需更新的稀疏参数进行更新;
第二交互模块,用于将更新后的稀疏参数发送至所述其他节点,并接收所述其他节点发送的由所述其他节点更新的稀疏参数;
训练模块,用于根据更新后的稠密参数以及稀疏参数,继续联合所述其他节点对所述待训练模型进行训练,直至确定满足模型收敛条件为止。
本说明书提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述模型训练方法。
本说明书提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述模型训练方法。
本说明书采用的上述至少一个技术方案能够达到以下有益效果:
在上述模型训练方法中,当前节点将当前节点自身的训练样本输入待训练模型后,可根据待训练模型的模型输出及训练样本的标注确定待训练模型的稠密参数的第一梯度及稀疏参数的第二梯度,以将第一梯度及第二梯度发送至其他节点,并接收其他节点基于自身的训练样本确定并发送的稠密参数的第三梯度和稀疏参数的第四梯度。之后,当前节点可根据第一梯度及第三梯度更新稠密参数,根据第二梯度中至少部分,和/或第四梯度中至少部分,对自身所需更新的稀疏参数进行更新。其他节点则根据接收到的梯度更新稠密参数及自身所需更新的稀疏参数。当前节点将更新后的稀疏参数发送至其他节点,并接收其他节点发送的由其他节点所需更新的稀疏参数后,可根据更新结果继续与其他节点对待训练模型进行分布式训练。
从上述内容中可以看出,通过本说明书提供的模型训练方法,能够通过分布式训练,采用不同的方式,分别对待训练模型的稀疏参数及稠密参数进行同步更新,提升模型的训练效率。
附图说明
此处所说明的附图用来提供对本说明书的进一步理解,构成本说明书的一部分,本说明书的示意性实施例及其说明用于解释本说明书,并不构成对本说明书的不当限定。在附
图中:
图1为本说明书中提供的一种模型训练方法的流程示意图;
图2为本说明书中提供的一种模型训练***的示意图;
图3为本说明书中提供的一种算法模块的示意图;
图4为本说明书中提供的一种构建前向计算图的示意图;
图5为本说明书中提供的一种反向过程的操作重写示意图;
图6为本说明书中一种模型训练装置的示意图;
图7为本说明书提供的一种电子设备的示意图。
具体实施方式
在深度学习领域,提升模型训练效率十分必要。尤其是在如今深度学习的训练数据量级与日俱增的情况下,训练一个模型的耗时也越来越长,制约了模型的发展和迭代。因此,提升模型训练效率面临的问题不可忽视。
目前的分布式训练方法通常采用PS/Worker模式,以提升对深度学习模型的训练效率。
为了提升对深度模型的训练效率,本说明书提供了一种模型训练方法。
在本说明书中,参与分布式训练的各节点可通过该模型训练方法对待训练模型进行分布式训练。
在本说明书提供的模型训练方法对应的训练模式下,不存在参数服务器与计算节点之分。针对每个参与分布式训练的节点,该节点既可用于计算梯度,又可用于更新参数。
并且,考虑到深度学习模型的不同参数的差异,在本说明书中,将待训练模型的参数划分为稀疏(sparse)参数与稠密(dense)参数,并对稠密参数以及稀疏参数采用不同的方式进行更新。其中,稀疏参数即未必每轮训练都能得到更新的参数,而稠密参数为每轮训练皆能得到更新的参数。
在本说明书一个或多个实施例中,待训练模型的稀疏参数可以是待训练模型的嵌入(embedding)层的参数,稠密参数可以是全连接层的参数。
嵌入层用于进行向量映射,即,将不同的输入映射到不同的向量,每个向量即一个稀疏参数。则,嵌入层包含大量的能够匹配不同的输入的向量,这使得嵌入层对应的稀疏参数数量庞大,通常有上万个。但待训练模型的一个输入数据只能匹配嵌入层的部分稀疏参数,因此,一个训练样本只能用于更新部分稀疏参数。
以待训练模型为商品推荐模型为例,假设待训练模型的输入为用户浏览过的一个搜索页面内的各商品,则,每个商品都可匹配嵌入层的一个向量,即,一个稀疏参数。
而稠密参数,为模型的前向计算中必然会应用到的参数,因此,不论待训练模型的输入如何改变,任一训练样本皆能够用于对所有稠密参数进行更新。
在本说明书提供的模型训练方法对应的训练模式下,参与分布式训练的各节点基于不同的训练样本联合对待训练模型进行训练。例如,各节点可分别采用不同批次(batch)的训练样本对待训练模型进行训练。并且,各节点可分别在基于自身对应的batch中一个训练样本,确定出待训练模型各参数的梯度后,更新待训练模型的参数,或者,也可分别基于自身对应的batch中所有训练样本,确定出待训练模型各参数的梯度后,更新待训练模型的参数。即,各节点可以分别基于自身对应的batch中一个训练样本,联合对待训练模型进行一轮分布式训练,或者,也可分别基于自身对应的batch中所有训练样本,联合对待训练模型本进行一轮分布式训练。
并且,各节点对各参数的更新皆可采取同步更新的方式。即,在每个节点都计算得到同一参数的梯度后,再根据该参数对应的各节点计算得到的梯度,对该参数进行更新。相比于异步更新的方式,同步更新能够避免节点计算速度的差异对训练效率造成的影响。
异步更新,即,针对每个参数,只要有节点计算得到该参数的梯度后,便可对该参数进行更新,得到更新后的该参数。而无需等待所有节点皆计算出该参数对应的梯度后,基于各梯度对该节点进行更新。但是,当不同的节点计算梯度的速度不同时,节点间计算速度的差异会导致模型的训练效率受到限制。例如,计算速度快的节点会将参数更新到新的版本,但计算速度慢的节点可能会将参数更新回旧的版本,导致部分节点做无用功,使得模型的训练效率受到限制。
在本说明书中,对于待训练模型的稠密参数,由于其量级是单独的节点能够承受的,即,其数量足以单独的节点负责对全量的稠密参数进行更新。因此,为了降低节点间的通信负担,每个节点皆可对全量的稠密参数进行梯度的计算,并基于各节点计算得到的梯度,对各稠密参数进行更新。为了实现对稠密参数的梯度的计算以及基于梯度对参数的更新,节点间只需以传递梯度为目的,进行交互即可,而无需为了传递更新后的稠密参数而进行交互。如此,可减少节点间的通信次数以及发送的数据量,实现对分布式训练过程中通信效率的提升。
由于待训练模型的稀疏参数数量庞大,需要占用更多的内存,并需要更多的计算资源进行更新,因此,为了提升计算效率,稀疏参数可以分片的形式存储在各节点,不同的节点存储不同的分片。即,每个节点分别存储一部分稀疏参数,并分别负责更新自身对应的一部分稀疏参数。待训练模型完整的稀疏参数仅全局唯一存在一份,每个节点并未存有全局稀疏参数的副本,而是存有其一部分,即一个分片。不同节点存储的分片对应的稀疏参数可不完全相同(包括部分相同,以及完全不同)。即,不同节点存储的分片对应的稀疏参数可以部分相同。或者,为了分工明确,不同节点存储的分片对应的稀疏参数可以完全不同。后续以不同节点存储的分片对应的稀疏参数完全不同为例进行说明。
由于不同的节点负责更新的稀疏参数不完全相同,因此,对待训练模型的一轮训练中,各节点需要进行两次交互。一次为对参数的传递,一次为对梯度的传递。
另外,由于针对每个稀疏参数,未必每轮训练该稀疏参数都会得到更新,也未必每轮训练都需要计算该稀疏参数的梯度。因此,每轮训练中,各节点间只需传输部分稀疏参数的梯度和/或更新后的参数。所以,虽然待训练模型的稀疏参数数量庞大,但将稀疏参数分片存储,使不同节点更新不同稀疏参数的方式,并不会对各节点造成通信负担,反而会提升计算效率,以实现对训练效率的提升。
可见,于本说明书能够根据参数特性,将参数分为稀疏参数以及稠密参数,并针对性采用不同的方式进行参数更新,能够在保证计算效率的情况下,减少节点间的通信次数以及通信数据量。
并且,由于本说明书中节点既用于计算梯度,又用于更新参数,能够提高节点的利用率,实现对节点的“物尽其用”。
在本说明书中,对于稀疏参数,各节点可通过全交换(all to all)的方式,进行参数传递、梯度计算以及参数更新。对于稠密参数,各节点可通过全规约(all reduce)的方式,进行梯度计算以及参数更新。在全交换方式下,同一节点向不同节点发送的数据不同。不同节点从同一节点接收到的数据不同。全规约的目的则是对所有节点的数据进行整合,并使得每个节点皆能够得到整合后的数据。
各节点可通过多轮训练,对待训练模型的参数进行更新,以实现对待训练模型的更新。在每一轮训练时,各节点则将上一轮更新的待训练模型的参数作为待训练模型当前的参数进行训练,即,基于上一轮更新的模型,根据各自对应的训练样本计算梯度,以基于梯度重新更新待训练模型的参数,完成当前轮次的梯度计算与参数更新。之后,再继续基于更新参数后的待训练模型,进行下一轮训练,直至确定待训练模型收敛,得到训练好的待训练模型。
需要说明的是,本说明书以参与分布式训练的其中一个节点(后续称之为当前节点)执行该模型训练方法的视角,对当前节点与其他节点进行对待训练模型的分布式训练的过程进行说明。并且,仅以方便描述为目的,将参与分布式训练待训练模型的各节点,分为当前节点以及其他节点,每个参与分布式训练的节点,皆可作为当前节点。
并且,对于参与分布式训练的各节点的数量,本说明书并不限制。则,其他节点可包括多个节点,其他节点的数量可根据需要设置。并且,如上所述,在本说明书中,每个节点既可用于计算梯度,又可用于基于梯度对参数进行更新。
在本说明书中,当前节点与其他节点可以是不同的设备,如不同的服务器(当然,具体可以是不同设备中的芯片)。或者,也可以是同一设备中的不同的芯片。如,芯片可以是中央处理器(Center Processing Unit,CPU)。或者,为了减少在训练过程中,当前节点与其他节点间的通信开销,提升通信效率,该芯片还可以是图形处理器(Graphics ProcessingUnit,GPU)。相较于CPU,GPU间的高速直连通道可使得GPU间的交互更快速,能够提升通信效率,以提升训练效率。
则,在本说明书一个或多个实施例中,当前节点和其他节点可包含图形处理器。该图形处理器用于计算梯度以及更新参数。且当前节点和其他节点可通过图形处理器的高速直连通道传输数据。
另外,在隐私保护方面,本说明书提供的模型训练方法也与现有方法不同。本说明书中节点之间可不通过网关传输数据。而是可以通过高速直连通道进行数据读取。如此,能够提升通信效率,并且不会造成数据泄露。
为使本说明书的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本说明书技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本说明书保护的范围。
以下结合附图,详细说明本说明书各实施例提供的技术方案。
图1为本说明书中一种模型训练方法的流程示意图。该模型训练方法应用于对待训练模型进行分布式训练的各节点。该待训练模型中包含稠密参数和稀疏参数,不同的节点所需更新的稀疏参数不完全相同。该模型训练方法具体包括以下步骤:
S100:当前节点将所述当前节点自身的训练样本输入所述待训练模型,根据所述待训练模型的输出以及所述训练样本的标注,确定所述稠密参数对应的第一梯度以及所述稀疏参数对应的第二梯度。
由于待训练模型各参数需要基于梯度进行更新,而梯度需要在将训练样本输入待训练模型后,基于待训练模型的输出计算得到。
因此,该当前节点可获取当前节点自身对应的训练样本,并将自身对应的训练样本输入待训练模型,以根据待训练模型的输出以及训练样本的标注,确定稠密参数对应的第一梯度,以及稀疏参数对应的第二梯度。如上所述,由于稀疏参数的特性,该当前节点得到的第二梯度未必是所有稀疏参数的第二梯度。
该当前节点具体可将该当前节点对应的训练样本,输入该待训练模型进行前向计算,以根据前向计算结果、该训练样本的标注以及该待训练模型的损失函数,确定稠密参数对应的第一梯度,以及稀疏参数对应的第二梯度。
其中,该前向计算结果可包括最终结果以及中间结果。最终结果即待训练模型的输出,中间结果即模型中的各网络的输出,如各全连接层的输出。并且,一个稠密参数对应一个第一梯度,一个稀疏参数对应一个第二梯度。
该当前节点对应的训练样本可以是根据当前节点与其他节点的总数,对用于训练待训练模型的全量训练样本划分得到。该当前节点对应的训练样本与其他节点对应的训练样本不同。
例如,以其他节点数量为2为例进行说明,则参与分布式训练的节点总数为3。待训练模型的训练样本可被分为3个batch,3个节点分别各自对应一个batch。为了便于区分与描述,将当前节点对应的部分作为第一batch,将各其他节点对应的部分分别作为第二batch以及第三batch。当前节点基于第一batch对待训练模型进行训练,各其他节点中,其中一个节点基于第二batch以对待训练模型进行训练,另一个其他节点则根据第三batch对待训练模型进行训练。
则,该当前节点获取的训练样本可以是该第一batch,或者也可以是该第一batch中的一个训练样本,当然,当获取的是第一batch时,各训练样本为分别输入待训练模型的。各其他节点同理,且获取的训练样本数量与当前节点保持一致。
即,该当前节点可基于一个训练样本更新一次参数,也可基于一个batch的训练样本,更新一次参数,其他节点同理。
S102:将所述第一梯度以及所述第二梯度发送至其他节点,以及接收所述其他节点发送的稠密参数对应的第三梯度和稀疏参数对应的第四梯度,所述第三梯度和所述第四梯度为所述其他节点基于所述其他节点自身的训练样本通过所述待训练模型确定的。
在本说明书中,该当前节点与该其他节点皆负责计算各稀疏参数的梯度,而并非仅计算自身所需更新的稀疏参数的梯度。
但由于训练样本的差异,导致不同训练样本涉及到的稀疏参数不同。因此,针对每个节点,在该节点每次将训练样本输入待训练模型后,根据待训练模型的输出以及训练样本的标注,确定的第二梯度对应的稀疏参数可完全相同,也可不完全相同,甚至可完全不同。例如,当该待训练模型为推荐模型,则训练样本可以是用户浏览过的一个页面中的各商品。则一个商品可对应一个稀疏参数。由于不同训练样本涉及的商品存在差异,因此,基于不同的训练样本可用于更新的稀疏参数存在差异。
即,虽然当前节点所需更新的稀疏参数是预先确定的,但未必每次将训练样本输入待训练模型后,皆可计算得到每个自身所需更新的稀疏参数对应的第二梯度。并且,当前节点并非仅计算自身所需更新的稀疏参数的第二梯度,而是计算训练样本对应的各稀疏参数的第二梯度。
由于该当前节点与该其他节点所需更新的稀疏参数不完全同,因此,该当前节点可在计算得到稀疏参数的第二梯度后,将各第二梯度发送至其他节点。使得其他节点可从中筛选出该其他节点所需更新的稀疏参数对应的第二梯度,以便于根据筛选得到的第二梯度,更新该其他节点所需更新的稀疏参数(当其他节点输入待训练模型的训练样本未涉及同样的稀疏参数,未计算得到同样的稀疏参数的梯度时)。或者,使得其他节点可从中筛选出该其他节点所需更新的稀疏参数对应的第二梯度,以便于根据筛选得到的第二梯度,以及基于该其他节点自身的训练样本计算得到的,该其他节点自身所需更新的稀疏参数的梯度,更新该其他节点所需更新的稀疏参数(当其他节点输入待训练模型的训练样本涉及同样的稀疏参数,得到了同样的稀疏参数的梯度时)。
该当前节点与该其他节点所需更新的稀疏参数不完全同,即,可以完全不同,也可以部分相同,但各节点所需更新的稀疏参数可覆盖待训练模型的所有稀疏参数。
该当前节点也可接收其他节点计算得到的各稀疏参数的第四梯度,并从中筛选出该当前节点所需更新的稀疏参数对应的梯度。以便于后续根据筛选得到的第四梯度,以及基于该当前节点自身的训练样本计算得到的,该当前节点所需更新的稀疏参数的第二梯度,更新该当前节点所需更新的稀疏参数(当当前节点输入待训练模型的训练样本涉及同样的稀疏参数时)。或者,根据筛选得到的第四梯度,更新该当前节点所需更新的稀疏参数(当当前节点输入待训练模型的训练样本未涉及同样的稀疏参数时)。
或者,该当前节点还可在基于自身对应的训练样本计算得到稀疏参数的第二梯度后,从中确定出其他节点所需更新的稀疏参数的梯度,并将确定出的其他节点所需更新的稀疏参数的梯度,发送至对应的其他节点,使得其他节点能够根据接收到的该当前节点发送的梯度,更新该其他节点所需更新的稀疏参数。
同理,在计算出所有稀疏参数分别对应的梯度后,该其他节点可将该当前节点所需更新的稀疏参数的梯度,发送至该当前节点。该当前节点可仅接收该当前节点所需更新的稀疏参数的第四梯度。
在本说明书一个或多个实施例中,该当前节点可从第二梯度中,确定其他节点所需更新的稀疏参数对应的第二梯度,作为目标梯度,并将第一梯度以及目标梯度发送至其他节点。
并且,当前节点可接收其他节点发送的当前节点所需更新的稀疏参数对应的第四梯度,以及稠密参数对应的第三梯度。
其中,当前节点发送的第一梯度用于使其他节点根据第一梯度以及第三梯度,对稠密参数进行更新,目标梯度用于使其他节点根据目标梯度以及第四梯度中的至少部分梯度,对其他节点所需更新的稀疏参数进行更新。
需要说明的是,由于当前节点与其他节点计算速度可能不同,且对梯度的发送与接收并无先后逻辑关系,也不会互相影响。因此,本说明书中不限制节点接收梯度以及发送梯度的顺序。
对于稠密参数,由于各节点皆负责更新全量的稠密参数,因此,当前节点在基于自身对应的训练样本计算得到各稠密参数的第一梯度后,即可将各第一梯度发送至其他节点。其他节点则可根据当前节点发送的第一梯度,以及基于该其他节点的训练样本计算得到的各稠密参数的第三梯度,更新各稠密参数。
同样,该其他节点可将基于该其他节点的训练样本计算得到的各稠密参数的第三梯度发送至该当前节点。
该当前节点则可接收该其他节点发送的各稠密参数的第三梯度,以便于后续能够根据自身计算得到的各稠密参数的第一梯度以及接受得到的第三梯度,更新各稠密参数。
因此,在确定出第一梯度以及第二梯度后,该当前节点可将第一梯度以及第二梯度发送至其他节点,以及接收其他节点发送的稠密参数对应的第三梯度和稀疏参数对应的第四梯度。
其中,该第三梯度和第四梯度为其他节点基于其他节点自身的训练样本通过待训练模型确定的。
需要说明的是,由于对于稀疏参数的梯度计算及参数更新,与对稠密参数的梯度计算以及参数更新,是两个相互独立的逻辑不同的过程,因此,第一梯度与第二梯度可以是分别发送的,当前节点无需等待第一梯度与第二梯度皆计算完成后,再将第一梯度以及第二梯度发送至其他节点,以减少不必要的等待时间。或者,为了减少通信次数,当前节点也可等待第一梯度与第二梯度皆计算完成后,再将第一梯度以及第二梯度发送至其他节点。其他节点对第三梯度与第四梯度的发送同理。
S104:根据所述第一梯度以及所述第三梯度,更新所述待训练模型的稠密参数。
该当前节点在获取到第三梯度之后,则可根据第一梯度以及第三梯度对待训练模型的各稠密参数进行更新。
S106:根据所述第二梯度中的至少部分梯度,和/或所述第四梯度中的至少部分梯度,对所述当前节点所需更新的稀疏参数进行更新。
如上所述,由于其他节点发送的第四梯度可以是计算得到的所有第四梯度,也可以是该当前节点所需更新的部分稀疏参数对应的第四梯度,但该当前节点可仅根据该当前节点所需更新的稀疏参数对应的第四梯度,更新该当前节点所需更新的稀疏参数。因此,该当前节点在获取到第四梯度之后,则可根据第四梯度中的至少部分梯度以及该当前节点计算得到的至少部分第二梯度,对该当前节点所需更新的部分稀疏参数进行更新。
另外,需要说明的是,由于第二梯度与第四梯度是基于不同的训练样本计算得到的,而不同训练样本匹配的稀疏参数可能相同,也可能部分相同,甚至完全不同。因此,该当前节点根据第二梯度中的至少部分梯度,和/或第四梯度中的至少部分梯度,对该部分稀疏参数进行更新。即,针对当前节点所需更新的部分稀疏参数中的每个稀疏参数,根据该稀疏参数对应的第二梯度和/或第四梯度,对该稀疏参数进行更新。
例如,假设当前节点所需更新的稀疏参数为B、C、D,当前节点自身对应的训练样本仅匹配稀疏参数B、D,也仅能输入待训练模型,用于根据待训练模型的输出计算得到稀疏参数B、D的第二梯度,而其他节点对应的训练样本仅匹配稀疏参数C、D,也仅能输入待训练模型,用于根据待训练模型的输出计算得到稀疏参数C、D的第四梯度。
因此,对于稀疏参数B,该当前节点仅基于稀疏参数B对应的第二梯度进行更新。对于稀疏参数D,该当前节点可基于稀疏参数D对应的第二梯度以及第四梯度更新。对于稀疏参数C,该当前节点仅可基于稀疏参数C对应的第四梯度更新。
S108:将更新后的稀疏参数发送至所述其他节点,并接收所述其他节点发送的由所述其他节点更新的稀疏参数。
在对稠密参数进行更新后,各节点更新后的稠密参数一致。而由于不同节点所需更新的稀疏参数不同,因此,在对稀疏参数进行更新后,各节点可全交换自身更新的稀疏参数,使得各节点皆能够持有待训练模型的最新的参数,以进行下一轮训练。
因此,该当前节点可将更新后的稀疏参数发送至其他节点,并接收其他节点发送的由其他节点更新的稀疏参数。
或者,由于训练样本涉及的稀疏参数的差异,该当前节点本轮训练更新得到的稀疏参数,在下一轮训练时未必会得到应用。
因此,在本说明书一个或多个实施例中,该当前节点还可重新确定自身的训练样本,并确定重新确定的自身的训练样本对应的稀疏参数,作为目标参数。并针对每个目标参数,查询更新该目标参数的节点。
当存在由其他节点更新的目标参数时,该当前节点可向其他节点发送参数的获取请求。使得其他节点可根据参数的获取请求,向该当前节点发送该当前节点所需的目标参数。
则,该当前节点可解释其他节点发送的其他节点更新的作为目标参数的稀疏参数。
并且,该当前节点也可接收其他节点发送的参数的获取请求,并根据接收到的参数的获取请求,向其他节点发送自身更新的稀疏参数。
因此,在本说明书一个或多个实施例中,当前节点在将更新后的稀疏参数发送至其他节点时,具体可接收其他节点发送的获取请求。并根据该获取请求,将更新后的稀疏参数发送至该其他节点。其中,该获取请求为其他节点根据该其他节点继续训练该待训练模型所需输入的训练样本确定的。
在本说明书一个或多个实施例中,当前节点在接收其他节点发送的由其他节点更新的稀疏参数时,具体可先确定继续训练待训练模型所需输入的训练样本,作为待输入样本。
之后,可根据预存的训练样本与稀疏参数的对应关系,确定待输入样本对应的稀疏参数,作为目标稀疏参数。
然后,可向更新目标稀疏参数的其他节点发送获取请求,并接收其他节点发送的由该其他节点更新的目标稀疏参数。
再或者,在本说明书一个或多个实施例中,该当前节点还可根据重新确定的训练样本涉及的稀疏参数的标识广播至其他节点,其他节点在接收到标识后,则可确定其中是否存在自身更新的稀疏参数的标识,若存在,则向当前节点发送对应的更新后的稀疏参数。
S110:根据更新后的稠密参数以及稀疏参数,继续联合所述其他节点对所述待训练模型进行训练,直至确定满足模型收敛条件为止。
在当前节点持有待训练模型的最新更新后的各稠密参数以及当前的训练样本涉及的稀疏参数后,该当前节点可根据最新更新后的稠密参数以及稀疏参数,继续联合其他节点对待训练模型进行训练,直至确定满足模型收敛条件为止。
其中,该模型收敛条件可根据需要设置,例如,可将待训练模型的输出及训练样本的标注确定损失中,小于预设的第一阈值的损失作为理想损失。
在将若干训练样本输入待训练模型,并多次基于待训练模型的输出及训练样本的标注确定损失后,在确定理想损失的数量大于预设的第二阈值时,确定满足模型收敛条件。
当然,还可以采用其他方法判断是否满足模型收敛条件。例如,在根据训练集中的训练样本对待训练模型进行预设轮次的训练后,采用测试集中的测试样本对待训练模型进行测试,确定待训练模型对应的曲线下的面积(Area Under Curve,AUC)指标。基于确定出的AUC指标值,判断是否满足模型收敛条件。
基于图1所示的模型训练方法,当前节点将当前节点自身的训练样本输入待训练模型后,可根据待训练模型的模型输出及训练样本的标注确定待训练模型的稠密参数的第一梯度及稀疏参数的第二梯度,以将第一梯度及第二梯度发送至其他节点,并接收其他节点基于自身的训练样本确定并发送的稠密参数的第三梯度和稀疏参数的第四梯度。之后,当前节点可根据第一梯度及第三梯度更新稠密参数,根据第二梯度中的至少部分梯度,和/或第四梯度中至少部分,对自身所需更新的稀疏参数进行更新。其他节点则根据接收到的梯度更新稠密参数及自身所需更新的稀疏参数。当前节点将更新后的稀疏参数发送至其他节点,并接收其他节点发送的由其他节点所需更新的稀疏参数后,可根据更新结果继续与其他节点对待训练模型进行分布式训练。
通过上述方法,当前节点与其他节点基于不同的训练样本,通过待训练模型确定输出,以各自根据输出计算待训练模型的稠密参数的梯度,以及稀疏参数的梯度。各节点交互自身计算得到的梯度后,基于稠密参数对应的梯度更新稠密参数,并各自基于稀疏参数对应的梯度,更新自身所需更新的稀疏参数。不同节点所需更新的稀疏参数不完全相同。更新参数后,当前节点根据更新后的稠密参数以及稀疏参数,继续联合其他节点对待训练模型进行分布式训练。能够通过分布式训练,采用不同的方式,分别对待训练模型的稀疏参数及稠密参数进行同步更新,提升模型的训练效率。
另外,在本说明书一个或多个实施例中,各节点中可包含主节点(chief节点)以及从节点。
在对待训练模型进行第一轮训练时,可对待训练模型的各参数进行初始化。对于稠密参数,可由主节点进行初始化并广播给各从节点。对于稀疏参数,由于不同节点所需更新的稀疏参数不同,因此,各节点可各自对自身所需更新的稀疏参数进行初始化,并发送至其他节点。或者,各节点可分别根据接收到的其他节点发送的参数的获取请求,向其他节点发送对应的初始化的稀疏参数。
因此,在将当前节点自身的训练样本输入待训练模型之前,各节点还可传输各自初始化得到的参数。
在本说明书一个或多个实施例中,当该当前节点为主节点时,可对待训练模型的各稠密参数,以及当前节点所需更新的第一稀疏参数,进行初始化。并将初始化后的各稠密参数以及第一稀疏参数发送至其他节点。
并且,该当前节点可接收其他节点发送的,待训练模型的各稀疏参数中,其他节点所需更新的第二稀疏参数。该第二稀疏参数为其他节点初始化得到的。
之后,该当前节点可根据初始化后的各稠密参数、第一稀疏参数以及第二稀疏参数,得到初始化的待训练模型。其他节点皆可根据初始化后的各稠密参数、第一稀疏参数以及第二稀疏参数,得到初始化的待训练模型。
同样的,当前节点发送和接收参数的操作不存在先后顺序。并且,第一稀疏参数与第二稀疏参数仅以方便描述为目的对稀疏参数进行区分,并非意味着节点数量为2个。当其他节点数量为多个时,每个其他节点皆对应一组第二稀疏参数。
在本说明书一个或多个实施例中,当该当前节点为从节点时,该当前节点可接收主节点广播的初始化得到的待训练模型的稠密参数。
并且,该当前节点可接收其他从节点以及主节点分别发送的,其他从节点初始化的其他从节点所需更新的稀疏参数,以及主节点初始化的主节点所需更新的稀疏参数。
当然,该当前节点可对该当前节点所需更新的稀疏参数进行初始化,并将初始化后的稀疏参数发送至其他从节点以及主节点。
最后,当前节点可根据初始化后的稠密参数以及初始化后的所述稀疏参数,得到初始化的所述待训练模型。同样的,其他节点皆可根据初始化后的稠密参数以及初始化后的所述稀疏参数,得到初始化的所述待训练模型。
需要说明的是,该当前节点接收主节点广播的稠密参数的操作、接收其他从节点以及主节点分别发送的稀疏参数的操作以及将初始化后的稀疏参数发送至其他从节点以及主节点的操作不存在先后顺序。
另外,在步骤S104中,根据第一梯度以及第三梯度,更新待训练模型的稠密参数时,具体的,该当前节点可针对每个稠密参数,确定第一梯度以及第三梯度中,该稠密参数对应的各梯度。并对该稠密参数对应的各梯度求均值,并根据得到的均值,对该稠密参数进行更新。
在本说明书一个或多个实施例中,在更新稀疏参数时,该当前节点可针对当前节点所需更新的每个稀疏参数,确定第二梯度以及第四梯度中,该稀疏参数对应的各梯度,以对该稀疏参数对应的各梯度求均值,并根据得到的均值,对该稀疏参数进行更新。
需要说明的是,对该待训练模型的类型不做限制,例如,该待训练模型可以是推荐模型、分类模型等,当然也可以是其他模型。
另外,如上所述,全规约的目的是对所有节点的数据进行整合,并使得每个节点皆能够得到整合后的数据。则具体实现方式包括多种,在上述所举出的实施例中,每个节点皆将自身计算得到的稠密参数的梯度发送给其他的每个节点。之后,各节点皆可根据接收得到的梯度求稠密参数对应的梯度的均值,以根据均值进行更新。
为了节约资源,还可由其中一个节点接收各节点计算得到的稠密参数对应的梯度,以计算均值,并将计算结果发送至其他的节点。而无需每个节点都进行计算,以节约计算资源,以及通信资源。例如,各节点可通过减半加倍(Halving doubling,HD)算法、环形规约(ring-reduce)算法等实现all reduce。
因此,各节点中可包括代表节点以及常规节点,各常规节点可将计算得到的稠密参数的梯度发送至代表节点,代表节点则可接收各常规节点发送的梯度,并针对每个稠密参数,根据该稠密参数的梯度,计算该稠密参数对应的均值。之后,代表节点则可将各稠密参数对应的均值广播至各常规节点。然后,每个节点皆可根据各稠密参数对应的均值,对各稠密参数进行更新。
还存在其他的实现全规约的方式,本说明书在此不一一进行说明。
在本说明书一个或多个实施例中,代表节点可以是主节点,常规节点可以是从节点。或者,代表节点也可以是从节点,本说明书在此不做限制。
另外,为了便于理解,本说明书还提供了与图1对应的模型训练***,如图2所示。
图2为本说明书提供的一种模型训练***的示意图。该***包括当前节点以及其他节点。该当前节点与该其他节点同步对稀疏参数以及稠密参数进行更新。该当前节点与其他节点基于不同的训练样本进行对待训练模型的参数的更新。其中,当前节点基于第一训练样本进行对参数的更新,其他节点基于第二训练样本进行对参数的更新。
其中,在待训练模型的各稀疏参数中,该当前节点所需更新的稀疏参数为第一稀疏参数,该其他节点所需更新的稀疏参数为第二稀疏参数。
在对稀疏参数进行更新时,该当前节点与其他节点通过all to all的方式进行通信。该当前节点首先向其他节点发送第一稀疏参数,并接收其他节点发送的第二稀疏参数。该其他节点则向当前节点发送第二稀疏参数,并接收当前节点发送的第一稀疏参数。通过第一轮交互,当前节点与其他节点皆获取到待训练模型所有最新更新的参数。当然,当前节点向其他节点发送的第一稀疏参数可为其他节点自身的训练样本涉及的稀疏参数,未必是该当前节点所需更新的所有稀疏参数。同理,其他节点向当前节点发送的第二稀疏参数可为当前节点自身的训练样本涉及的稀疏参数,未必是该其他节点所需更新的所有稀疏参数。
之后,该当前节点则可基于第一训练样本,通过待训练模型,得到第一训练样本对应的输出,以基于输出以及第一训练样本的标注,确定稀疏参数的第二梯度。该其他节点则基于第二训练样本,通过该待训练模型,得到第二训练样本的输出,以基于第二训练样本的输出以及第二训练样本的输出标注,确定稀疏参数的第四梯度。
当前节点可将第二梯度发送至其他节点,并接收其他节点发送的第四梯度。其他节点则向当前节点发送第四梯度,并接收当前节点发送的第二梯度。至此,当前节点与其他节点完成更新稀疏参数时的第二轮交互。
当前节点与其他节点则可基于第二梯度和/或第四梯度,更新至少部分各自所需更新的稀疏参数。
在更新稠密参数时,由于当前节点与其他节点皆分别更新所有的稠密参数,因此无需传递稠密参数,当前节点与其他节点仅需通过全规约的方式进行一轮对梯度的交互。
该当前节点可在将第一训练样本输入待训练模型后,确定第一训练样本对应的输出,以基于第一训练样本的输出以及第一训练样本的标注,确定各稠密参数的第一梯度。该其他节点可在将第二训练样本输入待训练模型后,确定第二训练样本对应的输出,以基于第二训练样本的输出以及第二训练样本的标注,确定各稠密参数的第三梯度。
该当前节点可将第一梯度发送至其他节点,并接收其他节点发送的第三梯度。该其他节点则可将第三梯度发送至当前节点,并接收当前节点发送的第一梯度。
当然,当前节点更新稀疏参数与更新稠密参数时利用的第一训练样本的输出是相同的输出,并非是将第一训练样本分别输入待训练模型得到的。其他节点同理。
在本说明书一个或多个实施例中,该模型训练***与该模型训练方法可应用于张量流(TensorFlow,TF)框架。
为了与TF框架的其他训练模式的检查点(checkpoint,CKPT)文件保持一致,使得用户历史上基于TF框架的其他训练模式得到的模型,能够在本说明书提供的模型训练方法对应的训练模式下应用,可将各节点中,作为chief节点的稠密参数与全部的稀疏参数放到全局变量(global variables)中,而非chief节点的稠密参数全部放到本地变量(localvariables)。在这种方式下,保存的ckpt与TF框架现有的训练模式一致,方便用户使用。
其中,CKPT文件用于存储训练得到的模型,或者存储训练模型的进度。
由于稠密参数对应的稠密变量(dense variable)为副本关系,即每个节点皆存有全量的稠密参数。因此所有节点的dense variable可以chief节点的初始化变量为准。并且,稠密参数与稀疏参数的安置(placement)策略可不同。在TF框架中,placement策略用于确定一个运算如何被指定给一个设备执行,在本说明书中指变量放置策略。
其中,稀疏参数的placement策略为每个节点中放置稀疏参数的一个分片。稠密参数的placement策略为每个节点中皆放置全量的稠密参数。
并且,在本说明书模型训练***中,可包括all to all模式下的键值对变量(key-value variable,KVVariable)文件的上层的操作(Operation,Op)。Op即用于进行计算(例如四则运算)、常量变量的定义、占位符定义等的操作,为算子。KVVariable为用于存储参数及其对应的梯度的变量。
为了便于理解该模型训练***如何实现,本说明书还提供了在TF框架下,该模型训练***对应的训练模式包含的算法模块:应用程序编程接口(Application ProgrammingInterface,API)模块、内核(kernel)模块以及通信后端(communication backend)模块。
其中,API可包括:设备接口(device fn)、训练模式切换接口(embeddingswitch)、变量创建接口(variable creator)、梯度应用接口(apply gradient rewriter)以及查找接口(all to all embedding lookup)。
设备接口用于实现将sparse variable的分片放到独立的节点上。训练模式切换接口,用于提供从TF框架其他训练模式一键切换到本说明书提供的训练模式的嵌入(embedding)op。
在TF框架中,计算图(graph)为实现模型训练的基础。图中的节点即op。节点间的边即数据。图即TF用于描述训练过程的数据流图。
该变量创建接口,用于使用户在构图时能够控制dense variable的初始化器(initializer),以及对dense variable或sparse variable在图中收集到的函数返回值的划分,以便后续独立管理dense参数或sparse参数。
梯度应用接口,用于反向计算时将求得的梯度按照dense variable all reduce,sparse variable all to all reduce的方式进行参数更新,以及在用户重写op后,返回重写后的训练op。需要说明的是,之所以要重写op,是为了将TF框架中原本的其他训练模式的op,修改为本说明书提供的训练模式对应的op。
查找接口,用于为kvvariable提供all to all的嵌入(embedding)查询算子。该查询算子用于查询给定key的值(value)。
内核模块则用于对本说明书提供的训练模式下的自定义kernel的实现,其中又可以分为通信与计算两部分。
通信内核可用于集合通讯原语all to all或广播(broadcasting)或all reduce的实现。即,可包括all to all op、broadcasting op以及all reduce op。另外,还可包括进行稀疏合并查询的定制op。稀疏合并查询,即,将对不同稀疏参数的查询进行合并。若不进行稀疏合并查询,则对每个稀疏参数的查询都需建立一个对应的网络连接,每一个查询都对应一个all to all的流程,通信成本极高。通过稀疏合并查询,可使得op执行一次,即可实现对所有的稀疏参数的查询。
计算内核用于实现稀疏参数的前向计算以及反向计算。
通信后端模块,用于实现底层通讯,包含基于传输控制协议(TransmissionControl Protocol,TCP)、远程直接数据存取协议(Remote Direct Memory Access,RDMA)、高速串行计算机扩展总线标准协议(Peripheral Component Interconnect Express,PCIE)、nvlink等多种通讯协议下的通讯库,为通讯的后端,可为通信内核提供协议支持。
本说明书还提供了图3所示的算法模块的示意图。如图,该算法模块包括接口、内核以及通信后端三部分。接口包括设备接口、训练模式切换接口、变量创建接口、梯度应用接口以及查找接口。
内核包括通信内核以及计算内核两种。通信内核包括全交换规约op(即,all toall reduce op)、编码op(encode op)、全规约op(即,all reduce op)、合并op(coalescingop)以及广播op(broadcasting op)。计算内核包括优化器(optimizer)以及键值对变量(KVvariabke)。优化器用于计算梯度以及更新参数。并且,优化器通过与键值对变量交互,从键值对变量中获取相应的参数,根据计算得到的梯度更新键值对变量,并根据基于梯度更新得到的参数,更新键值对变量。
通信后端用于为全交换规约、全规约以及广播等op提供协议支持。
另外,本说明书还提供了一种构建前向计算图的示意图,如图4所示。TF框架可通过图创建接口请求创建计算图。之后,则可创建图节点。其中,图节点即图中的节点,为op,并非上述提及的用于计算梯度的节点。为了区分,将用于计算梯度以及更新参数的节点,作为计算节点。
在创建图节点时,首先,可生成一个图节点,并向设备接口请求为图节点分配计算节点。设备接口则可根据用户预先设置的op与计算节点的对应关系,为该图节点分配对应的计算节点。并返回分配的计算节点。之后,可向变量创建接口请求为图节点调整集合(collection)和初始化器。该变量创建接口可为主节点分配用于广播稠密参数的初始化器,为从节点分配用于接收稠密参数的初始化器。
在分配好初始化器后,变量创建接口则可返回初始化器。并且,变量创建接口可为稠密参数和稀疏参数分配不同的集合(collection)。具体可将主节点下所有的variable配置为全局集合(global collections),从节点则仅为稀疏参数配置为globalcollections,稠密参数则配置为局部集合(local collections)。另外,所有计算节点中稀疏参数可额外写入sparse collection。之后,该变量创建接口可返回分配结果。该图节点创建完成。之后可循环创建图节点的过程。
在创建完成所有图节点后,则可返回创建结果。即,返回前向计算图。
另外,为了实现本说明书提供的模型训练***,使得该模型训练***中的节点可通过执行本说明书提供的模型训练方法,实现对待训练模型的分布式训练。可定义本说明书提供的训练模式下的训练操作(train op)。则,对于TF框架中的原始op可进行改写。
本说明书还提供了图5所示的反向过程的操作重写示意图。如图5,TF框架可通过重写接口创建训练操作,并获取创建好的反向计算图中的计算梯度操作(computegradient op),作为该训练操作中的计算梯度操作。并可获取应用梯度操作(applygradient op),通过梯度应用接口,重写应用梯度操作。梯度应用接口则可基于以下逻辑重写应用梯度接口:根据前向构图时的集合(collection),区分稠密参数与稀疏参数的梯度,根据稀疏参数的梯度进行稀疏参数的全交换更新,根据稠密参数的梯度进行稠密参数的全规约更新。并且,全交换更新与全规约更新的实现基于通信内核中的op通过通信后端实现。之后,梯度应用接口则可返回重写后的应用梯度操作。然后,则可返回重写后的训练操作。
本说明书还提供了与图1对应的装置。如图6所示。
图6为本说明书提供的一种模型训练装置的示意图。该模型训练装置应用于对待训练模型进行分布式训练的各节点,所述待训练模型中包含稠密参数和稀疏参数,不同的节点所需更新的稀疏参数不完全相同;所述装置包括:
确定模块200,用于将当前节点自身的训练样本输入所述待训练模型,根据所述待训练模型的输出以及所述训练样本的标注,确定所述稠密参数对应的第一梯度以及所述稀疏参数对应的第二梯度;
第一交互模块201,用于将所述第一梯度以及所述第二梯度发送至其他节点,以及接收所述其他节点发送的稠密参数对应的第三梯度和稀疏参数对应的第四梯度,所述第三梯度和所述第四梯度为所述其他节点基于所述其他节点自身的训练样本通过所述待训练模型确定的;
第一更新模块202,用于根据所述第一梯度以及所述第三梯度,更新所述待训练模型的稠密参数;
第二更新模块203,用于根据所述第二梯度中的至少部分梯度,和/或所述第四梯度中的至少部分梯度,对所述当前节点所需更新的稀疏参数进行更新;
第二交互模块204,用于将更新后的稀疏参数发送至所述其他节点,并接收所述其他节点发送的由所述其他节点更新的稀疏参数;
训练模块205,用于根据更新后的稠密参数以及稀疏参数,继续联合所述其他节点对所述待训练模型进行训练,直至确定满足模型收敛条件为止。
可选地,所述第一交互模块201,还用于从所述第二梯度中,确定所述其他节点所需更新的稀疏参数对应的第二梯度,作为目标梯度,将所述第一梯度以及所述目标梯度发送至所述其他节点,接收所述其他节点发送的所述当前节点所需更新的稀疏参数对应的第四梯度,以及稠密参数对应的第三梯度。
可选地,所述第一更新模块202,还用于针对每个稠密参数,确定所述第一梯度以及所述第三梯度中,该稠密参数对应的各梯度,对该稠密参数对应的各梯度求均值,并根据得到的均值,对该稠密参数进行更新。
可选地,所述第二更新模块203,还用于针对所述当前节点所需更新的每个稀疏参数,确定所述第二梯度以及所述第四梯度中,该稀疏参数对应的各梯度,对该稀疏参数对应的各梯度求均值,并根据得到的均值,对该稀疏参数进行更新。
可选地,所述各节点中,包括主节点以及从节点。
可选地,所述装置还包括:
第一初始化模块206,将所述当前节点自身的训练样本输入所述待训练模型之前,用于当所述当前节点为主节点时,对所述待训练模型的各稠密参数,以及所述当前节点所需更新的第一稀疏参数,进行初始化,将初始化后的所述各稠密参数以及所述第一稀疏参数发送至所述其他节点,接收所述其他节点发送的,所述待训练模型的各稀疏参数中,所述其他节点所需更新的第二稀疏参数,所述第二稀疏参数为所述其他节点初始化得到的,根据初始化后的所述各稠密参数、所述第一稀疏参数以及所述第二稀疏参数,得到初始化的所述待训练模型。
可选地,所述装置还包括:
第二初始化模块207,将所述当前节点自身的训练样本输入所述待训练模型之前,用于当所述当前节点为从节点时,接收所述主节点广播的初始化得到的所述待训练模型的所述稠密参数,接收其他从节点以及所述主节点分别发送的,所述其他从节点初始化的所述其他从节点所需更新的稀疏参数,以及所述主节点初始化的所述主节点所需更新的稀疏参数,对所述当前节点所需更新的稀疏参数进行初始化,并将初始化后的稀疏参数发送至所述其他从节点以及所述主节点,根据初始化后的所述稠密参数以及初始化后的所述稀疏参数,得到初始化的所述待训练模型。
可选地,所述第二交互模块204,还用于接收所述其他节点发送的获取请求;根据所述获取请求,将更新后的稀疏参数发送至所述其他节点;其中,所述获取请求为所述其他节点根据所述其他节点继续训练所述待训练模型所需输入的训练样本确定的。
可选地,所述第二交互模块204,还用于确定继续训练所述待训练模型所需输入的训练样本,作为待输入样本;根据预存的训练样本与稀疏参数的对应关系,确定所述待输入样本对应的稀疏参数,作为目标稀疏参数;向更新所述目标稀疏参数的其他节点发送获取请求,接收所述其他节点发送的由所述其他节点更新的所述目标稀疏参数。
可选地,所述当前节点和所述其他节点包含图形处理器,所述图形处理器用于计算梯度以及更新参数,所述当前节点和所述其他节点通过所述图形处理器的高速直连通道传输数据。
本说明书还提供了一种计算机可读存储介质,该存储介质存储有计算机程序,计算机程序可用于执行上述模型训练方法。
本说明书还提供了图7所示的电子设备的示意结构图。如图7所述,在硬件层面,该电子设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,以实现上述模型训练方法。当然,除了软件实现方式之外,本说明书并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字***“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的***、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书的实施例可提供为方法、***或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。
Claims (20)
1.一种模型训练方法,应用于对待训练模型进行分布式训练的各节点,所述待训练模型中包含稠密参数和稀疏参数,不同的节点所需更新的稀疏参数不完全相同;所述方法包括:
当前节点将所述当前节点自身的训练样本输入所述待训练模型,根据所述待训练模型的输出以及所述训练样本的标注,确定所述稠密参数对应的第一梯度以及所述稀疏参数对应的第二梯度;
将所述第一梯度以及所述第二梯度发送至其他节点,以及接收所述其他节点发送的稠密参数对应的第三梯度和稀疏参数对应的第四梯度,所述第三梯度和所述第四梯度为所述其他节点基于所述其他节点自身的训练样本通过所述待训练模型确定的;
根据所述第一梯度以及所述第三梯度,更新所述待训练模型的稠密参数;
根据所述第二梯度中的至少部分梯度,和/或所述第四梯度中的至少部分梯度,对所述当前节点所需更新的稀疏参数进行更新;
将更新后的稀疏参数发送至所述其他节点,并接收所述其他节点发送的由所述其他节点更新的稀疏参数;
根据更新后的稠密参数以及稀疏参数,继续联合所述其他节点对所述待训练模型进行训练,直至确定满足模型收敛条件为止。
2.如权利要求1所述的方法,将所述第一梯度以及所述第二梯度发送至其他节点,以及接收所述其他节点发送的稠密参数对应的第三梯度和稀疏参数对应的第四梯度,具体包括:
从所述第二梯度中,确定所述其他节点所需更新的稀疏参数对应的第二梯度,作为目标梯度;
将所述第一梯度以及所述目标梯度发送至所述其他节点;
接收所述其他节点发送的所述当前节点所需更新的稀疏参数对应的第四梯度,以及稠密参数对应的第三梯度。
3.如权利要求1所述的方法,根据所述第一梯度以及所述第三梯度,更新所述待训练模型的稠密参数,具体包括:
针对每个稠密参数,确定所述第一梯度以及所述第三梯度中,该稠密参数对应的各梯度;
对该稠密参数对应的各梯度求均值,并根据得到的均值,对该稠密参数进行更新。
4.如权利要求1所述的方法,根据所述第二梯度中的至少部分梯度,和/或所述第四梯度中的至少部分梯度,对所述当前节点所需更新的稀疏参数进行更新,具体包括:
针对所述当前节点所需更新的每个稀疏参数,确定所述第二梯度以及所述第四梯度中,该稀疏参数对应的各梯度;
对该稀疏参数对应的各梯度求均值,并根据得到的均值,对该稀疏参数进行更新。
5.如权利要求1所述的方法,所述各节点中,包括主节点以及从节点。
6.如权利要求5所述的方法,将所述当前节点自身的训练样本输入所述待训练模型之前,所述方法还包括:
当所述当前节点为主节点时,对所述待训练模型的各稠密参数,以及所述当前节点所需更新的第一稀疏参数,进行初始化;
将初始化后的所述各稠密参数以及所述第一稀疏参数发送至所述其他节点;
接收所述其他节点发送的,所述待训练模型的各稀疏参数中,所述其他节点所需更新的第二稀疏参数,所述第二稀疏参数为所述其他节点初始化得到的;
根据初始化后的所述各稠密参数、所述第一稀疏参数以及所述第二稀疏参数,得到初始化的所述待训练模型。
7.如权利要求5所述的方法,将所述当前节点自身的训练样本输入所述待训练模型之前,所述方法还包括:
当所述当前节点为从节点时,接收所述主节点广播的初始化得到的所述待训练模型的所述稠密参数;
接收其他从节点以及所述主节点分别发送的,所述其他从节点初始化的所述其他从节点所需更新的稀疏参数,以及所述主节点初始化的所述主节点所需更新的稀疏参数;
对所述当前节点所需更新的稀疏参数进行初始化,并将初始化后的稀疏参数发送至所述其他从节点以及所述主节点;
根据初始化后的所述稠密参数以及初始化后的所述稀疏参数,得到初始化的所述待训练模型。
8.如权利要求1所述的方法,将更新后的稀疏参数发送至所述其他节点,具体包括:
接收所述其他节点发送的获取请求;
根据所述获取请求,将更新后的稀疏参数发送至所述其他节点;
其中,所述获取请求为所述其他节点根据所述其他节点继续训练所述待训练模型所需输入的训练样本确定的。
9.如权利要求1所述的方法,接收所述其他节点发送的由所述其他节点更新的稀疏参数,具体包括:
确定继续训练所述待训练模型所需输入的训练样本,作为待输入样本;
根据预存的训练样本与稀疏参数的对应关系,确定所述待输入样本对应的稀疏参数,作为目标稀疏参数;
向更新所述目标稀疏参数的其他节点发送获取请求,接收所述其他节点发送的由所述其他节点更新的所述目标稀疏参数。
10.如权利要求1-9任一项所述的方法,所述当前节点和所述其他节点包含图形处理器,所述图形处理器用于计算梯度以及更新参数,所述当前节点和所述其他节点通过所述图形处理器的高速直连通道传输数据。
11.一种模型训练装置,应用于对待训练模型进行分布式训练的各节点,所述待训练模型中包含稠密参数和稀疏参数,不同的节点所需更新的稀疏参数不完全相同;所述装置包括:
确定模块,用于将当前节点自身的训练样本输入所述待训练模型,根据所述待训练模型的输出以及所述训练样本的标注,确定所述稠密参数对应的第一梯度以及所述稀疏参数对应的第二梯度;
第一交互模块,用于将所述第一梯度以及所述第二梯度发送至其他节点,以及接收所述其他节点发送的稠密参数对应的第三梯度和稀疏参数对应的第四梯度,所述第三梯度和所述第四梯度为所述其他节点基于所述其他节点自身的训练样本通过所述待训练模型确定的;
第一更新模块,用于根据所述第一梯度以及所述第三梯度,更新所述待训练模型的稠密参数;
第二更新模块,用于根据所述第二梯度中的至少部分梯度,和/或所述第四梯度中的至少部分梯度,对所述当前节点所需更新的稀疏参数进行更新;
第二交互模块,用于将更新后的稀疏参数发送至所述其他节点,并接收所述其他节点发送的由所述其他节点更新的稀疏参数;
训练模块,用于根据更新后的稠密参数以及稀疏参数,继续联合所述其他节点对所述待训练模型进行训练,直至确定满足模型收敛条件为止。
12.如权利要求11所述的装置,所述第一交互模块,还用于从所述第二梯度中,确定所述其他节点所需更新的稀疏参数对应的第二梯度,作为目标梯度;将所述第一梯度以及所述目标梯度发送至所述其他节点;接收所述其他节点发送的所述当前节点所需更新的稀疏参数对应的第四梯度,以及稠密参数对应的第三梯度。
13.如权利要求11所述的装置,所述第一更新模块,还用于针对每个稠密参数,确定所述第一梯度以及所述第三梯度中,该稠密参数对应的各梯度;对该稠密参数对应的各梯度求均值,并根据得到的均值,对该稠密参数进行更新。
14.如权利要求11所述的装置,所述第二更新模块,还用于针对所述当前节点所需更新的每个稀疏参数,确定所述第二梯度以及所述第四梯度中,该稀疏参数对应的各梯度;对该稀疏参数对应的各梯度求均值,并根据得到的均值,对该稀疏参数进行更新。
15.如权利要求11所述的装置,所述各节点中,包括主节点以及从节点。
16.如权利要求15所述的装置,所述装置还包括:
第一初始化模块,将所述当前节点自身的训练样本输入所述待训练模型之前,用于当所述当前节点为主节点时,对所述待训练模型的各稠密参数,以及所述当前节点所需更新的第一稀疏参数,进行初始化;将初始化后的所述各稠密参数以及所述第一稀疏参数发送至所述其他节点;接收所述其他节点发送的,所述待训练模型的各稀疏参数中,所述其他节点所需更新的第二稀疏参数,所述第二稀疏参数为所述其他节点初始化得到的;根据初始化后的所述各稠密参数、所述第一稀疏参数以及所述第二稀疏参数,得到初始化的所述待训练模型。
17.如权利要求15所述的装置,所述装置还包括:
第二初始化模块,将所述当前节点自身的训练样本输入所述待训练模型之前,用于当所述当前节点为从节点时,接收所述主节点广播的初始化得到的所述待训练模型的所述稠密参数;接收其他从节点以及所述主节点分别发送的,所述其他从节点初始化的所述其他从节点所需更新的稀疏参数,以及所述主节点初始化的所述主节点所需更新的稀疏参数;对所述当前节点所需更新的稀疏参数进行初始化,并将初始化后的稀疏参数发送至所述其他从节点以及所述主节点;根据初始化后的所述稠密参数以及初始化后的所述稀疏参数,得到初始化的所述待训练模型。
18.如权利要求11所述的装置,所述第二交互模块,还用于确定继续训练所述待训练模型所需输入的训练样本,作为待输入样本;根据预存的训练样本与稀疏参数的对应关系,确定所述待输入样本对应的稀疏参数,作为目标稀疏参数;向更新所述目标稀疏参数的其他节点发送获取请求,接收所述其他节点发送的由所述其他节点更新的所述目标稀疏参数。
19.一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述权利要求1~10任一项所述的方法。
20.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述权利要求1~10任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310096352.0A CN116090584A (zh) | 2023-01-31 | 2023-01-31 | 一种模型训练方法、装置、存储介质及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310096352.0A CN116090584A (zh) | 2023-01-31 | 2023-01-31 | 一种模型训练方法、装置、存储介质及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116090584A true CN116090584A (zh) | 2023-05-09 |
Family
ID=86208102
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310096352.0A Pending CN116090584A (zh) | 2023-01-31 | 2023-01-31 | 一种模型训练方法、装置、存储介质及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116090584A (zh) |
-
2023
- 2023-01-31 CN CN202310096352.0A patent/CN116090584A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102189231B1 (ko) | 가상 fpga 관리 및 최적화 시스템 | |
TWI833806B (zh) | 用於分片創建的裝置及系統 | |
CN114035937A (zh) | 一种基于人工智能的分布式训练和推理方法、***、设备和可读存储介质 | |
US10600144B2 (en) | Disaggregated graphics asset management for virtualized graphics | |
WO2002003258A1 (en) | Method and apparatus for heterogeneous distributed computation | |
CN110058936B (zh) | 用于确定专用处理资源的资源量的方法、设备和计算机程序产品 | |
US20200118303A1 (en) | Efficient refinement of tiles of a hlod tree | |
US20230394110A1 (en) | Data processing method, apparatus, device, and medium | |
US20220197858A1 (en) | Dynamic allocation of arithmetic logic units for vectorized operations | |
JP2022526378A (ja) | コンピューティングプラットフォーム上の機能実施のための計算リソース推定 | |
KR102326586B1 (ko) | 큰 규모 분산 행렬 곱 처리 방법 및 그 장치 | |
CN115203210A (zh) | 哈希表处理方法、装置、设备及计算机可读存储介质 | |
CN108304455A (zh) | 一种处理业务请求的方法、装置及设备 | |
JP2024512843A (ja) | メモリチャネルコントローラのオンチップ相互接続 | |
CN116090584A (zh) | 一种模型训练方法、装置、存储介质及设备 | |
CN113177632A (zh) | 一种基于流水线并行的模型训练方法、装置以及设备 | |
US9390029B2 (en) | Dynamic management of random access memory | |
CN110750363A (zh) | 计算机存储管理方法和装置、电子设备和存储介质 | |
US11977957B2 (en) | Quantum computing program compilation using cached compiled quantum circuit files | |
KR101862799B1 (ko) | 메모리 컨트롤러 및 메모리 컨트롤 방법 | |
CN117035123B (zh) | 一种并行训练中的节点通信方法、存储介质、设备 | |
US11169996B2 (en) | Query optimizer injection for dynamically provisioned database containers | |
CN114138484A (zh) | 资源分配方法、装置以及介质 | |
Belaid et al. | New Three‐Level Resource Management Enhancing Quality of Offline Hardware Task Placement on FPGA | |
CN116185307B (zh) | 一种模型数据的存储方法、装置、存储介质及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |