WO2024017283A1 - 一种模型训练系统、方法及相关设备 - Google Patents

一种模型训练系统、方法及相关设备 Download PDF

Info

Publication number
WO2024017283A1
WO2024017283A1 PCT/CN2023/108091 CN2023108091W WO2024017283A1 WO 2024017283 A1 WO2024017283 A1 WO 2024017283A1 CN 2023108091 W CN2023108091 W CN 2023108091W WO 2024017283 A1 WO2024017283 A1 WO 2024017283A1
Authority
WO
WIPO (PCT)
Prior art keywords
memory
node
parameters
model
parameter
Prior art date
Application number
PCT/CN2023/108091
Other languages
English (en)
French (fr)
Inventor
玉兆辉
张奇
赵嘉威
游俊
Original Assignee
华为技术有限公司
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 华为技术有限公司 filed Critical 华为技术有限公司
Publication of WO2024017283A1 publication Critical patent/WO2024017283A1/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Biomedical Technology (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供了一种模型训练系统,其中,模型训练系统中的第二节点用于发送多个参数获取请求至第一节点;第一节点用于根据多个参数获取请求确定多个参数获取请求所获取的参数分别存储在第一内存及第二内存,将从第一内存及第二内存获取的参数进行合并,并将合并后的参数发送至第二节点;第二节点还用于接收合并后的参数,并使用合并后的参数对模型进行训练。本申请将从第一内存和第二内存中获取到的参数进行合并后发送,尤其在推荐模型训练等节点之间需要传递的参数数量较多的场景中,可以使得传输的报文数量大大降低,进而提高数据的传输效率。

Description

一种模型训练系统、方法及相关设备
本申请要求于2022年07月22日提交中国专利局、申请号为202210869512.6、发明名称为“一种推荐系统”、以及于2022年12月19日提交中国专利局、申请号为202211634067.1、发明名称为“一种模型训练系统、方法及相关设备”的中国专利申请的优先权,其全部内容通过引用结合在本申请中。
技术领域
本申请涉及人工智能领域,尤其涉及一种模型训练系统、方法及相关设备。
背景技术
在计算机节点集群中,不同节点之间往往需要进行频繁的数据传递,例如,在推荐模型的训练场景中,由于推荐模型的模型参数的数量巨大,需要大量的内存空间,因此可以将模型参数部署在计算机节点集群中上。
搜索和推荐的任务是互联网应用常见的业务场景,也是互联网的核心技术。现有的搜索场景中,通过将对象(用户或者物品)的属性信息表示为嵌入向量,并在模型训练过程中更新嵌入向量。模型参数在模型训练时,负责进行模型训练的节点可以从节点集群中负责存储训练样本的节点中获取到所需的模型参数。
在现有的实现中,负责训练样本存储的节点可以将模型参数挨个发送到负责进行模型训练的节点,在模型参数数量较大的情况下,数据的传输效率较低,进而导致模型的训练效率较低。
发明内容
本申请提供了一种模型训练系统,用于提高模型训练时计算节点集群中节点之间的数据传输效率。此外,本申请还提供了一种模型训练系统、方法、计算机可读存储介质以及计算机程序产品。
第一方面,本申请提供了一种模型训练系统,模型训练系统包括多个节点,模型训练需要的参数分布在多个节点中;多个节点中的第一节点包括第一内存和第二内存,第一内存中和第二内存中分别存储模型的部分参数,第一内存和第二内存通过不同的协议与第一节点中的处理器进行通信;多个节点中的第二节点用于发送多个参数获取请求至第一节点,多个参数获取请求用于获取第二节点训练模型时需要的参数;第一节点用于根据多个参数获取请求确定多个参数获取请求所获取的参数分别存储在第一内存及第二内存,将从第一内存及第二内存获取的参数进行合并,并将合并后的参数发送至第二节点;第二节点还用于接收合并后的参数,并使用合并后的参数对模型进行训练。
本申请实施例中,将从第一内存和第二内存中获取到的参数进行合并后发送,尤其在推荐模型训练等节点之间需要传递的参数数量较多的场景中,可以使得传输的报文数量大大降低,进而提高数据的传输效率。
在一种可能的实现中,第一节点在用于对第一内存及第二内存获取的参数进行合并时具体用于:将从第一内存中获取的参数及从第二内存中获取的参数都缓存至第一内存中进行合并。
在一种可能的实现中,第一节点在用于对第一内存及第二内存获取的参数进行合并时具体用于:将从第一内存中获取的参数及从第二内存中获取的参数都缓存至第二内存中进行合并。
在一种可能的实现中,第一节点在用于对第一内存及第二内存获取的参数进行合并时具体用于:将从第一内存中获取的参数缓存至第二内存,将从第二内存中获取的参数缓存至第一内存。
将从第一内存中获取的参数缓存至第二内存,相比于将从第一内存中获取的参数缓存至第一内存,可以降低写入过程的DDR的带宽占用。
将从第二内存中获取的参数缓存至第一内存,相比于将从第二内存中获取的参数缓存至第二内存,可以降低数据传输的时延。
将从第一内存中获取的参数以及从第二内存中获取的参数合并后均缓存至第一内存,可以数据传输 的时延。
将从第一内存中获取的参数以及从第二内存中获取的参数合并后均缓存至第二内存,可以降低写入过程的DDR的带宽占用。
在一种可能的实现中,第二节点还用于接收到合并后的参数后,将合并后的参数与从其他节点接收的参数进行排序后,再使用排序后的参数对模型进行训练。
在一种可能的实现中,第二节点还用于:对模型训练完后,获取模型训练后产生的梯度数据,并根据梯度数据确定第一节点的参数对应的梯度;将第一节点的参数对应的梯度合并后发送至第一节点;第一节点用于:在接收到梯度后,区分第一内存中存储的参数对应的梯度及第二内存中存储的参数对应的梯度,并分别更新第一内存中的参数及第二内存中的参数。
在一种可能的实现中,第一内存通过DDR协议连接至处理器,第二内存为扩展内存,第二内存通过开放式互连协议CXL连接至处理器。
本申请实施例,将模型参数存储到第一节点的扩展内存中,一方面,在从扩展内存中读取数据时,不占用DDR带宽,从而降低了DDR带宽的占用,另一方面,由于内存自身的存储空间有限,在推荐模型等模型参数的数量巨大的场景中,通过将模型参数存储到扩展内存中可以降低存储模型参数的节点数量。
在一种可能的实现中,模型为推荐模型;参数为嵌入向量embedding。
第二方面,本申请提供了一种模型训练方法,应用于分布式训练系统,分布式训练系统包括多个节点,模型训练需要的参数分布在多个节点中;
多个节点中的第一节点包括第一内存和第二内存,第一内存中和第二内存中分别存储模型的部分参数,第一内存和第二内存通过不同的协议与第一节点中的处理器进行通信;方法包括:
多个节点中的第二节点发送多个参数获取请求至第一节点,多个参数获取请求用于获取第二节点训练模型时需要的参数;
第一节点根据多个参数获取请求确定多个参数获取请求所获取的参数分别存储在第一内存及第二内存,将从第一内存及第二内存获取的参数进行合并,并将合并后的参数发送至第二节点;
第二节点接收合并后的参数,并使用合并后的参数对模型进行训练。
在一种可能的实现中,对第一内存及第二内存获取的参数进行合并,包括:
将从第一内存中获取的参数及从第二内存中获取的参数都缓存至第一内存中进行合并。
在一种可能的实现中,对第一内存及第二内存获取的参数进行合并,包括:
将从第一内存中获取的参数及从第二内存中获取的参数都缓存至第二内存中进行合并。
在一种可能的实现中,对第一内存及第二内存获取的参数进行合并,包括:
将从第一内存中获取的参数缓存至第二内存,将从第二内存中获取的参数缓存至第一内存。
在一种可能的实现中,方法还包括:
第二节点接收到合并后的参数后,将合并后的参数与从其他节点接收的参数进行排序后,再使用排序后的参数对模型进行训练。
在一种可能的实现中,方法还包括:
第二节点对模型训练完后,获取模型训练后产生的梯度数据,并根据梯度数据确定第一节点的参数对应的梯度;
将第一节点的参数对应的梯度合并后发送至第一节点;
第一节点在接收到梯度后,区分第一内存中存储的参数对应的梯度及第二内存中存储的参数对应的梯度,并分别更新第一内存中的参数及第二内存中的参数。
在一种可能的实现中,第一内存通过DDR协议连接至处理器,第二内存为扩展内存,第二内存通过开放式互连协议CXL连接至处理器。
在一种可能的实现中,模型为推荐模型;
参数为嵌入向量embedding。
第二方面提供的模型训练方法,对应于第一方面提供的模型训练系统,故第二方面任一种可能实现 方式中的模型训练方法所具有的技术效果,可以参照第一方面以及第一方面中相应实现方式所具有的技术效果,在此不做赘述。
第三方面,本申请提供一种计算节点,该计算节点包括处理器、存储器和网卡;该存储器用于存储指令,当该计算节点运行时,该处理器以及网卡用于执行该存储器存储的该指令,以使该计算节点执行上述第一方面或任一种可能实现方式中第一节点或者第二节点所执行的步骤。需要说明的是,该存储器可以集成于处理器中,也可以是独立于处理器之外。计算节点还可以包括总线。其中,处理器通过总线连接存储器。其中,存储器可以包括可读存储器以及随机存取存储器;此外,存储器还可以包括内存以及扩展内存。
第四方面,本申请提供一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算节点上运行时,使得计算节点执行上述第二方面或第二方面的任一种实现方式该的方法。
第五方面,本申请提供了一种包含指令的计算机程序产品,当其在计算节点上运行时,使得计算节点执行上述第二方面或第二方面的任一种实现方式的方法、或者上述第二方面或第二方面的任一种实现方式的方法。
本申请在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其它的附图。
图1为本申请实施例提供的推荐场景示意图;
图2A为本申请实施例提供的模型训练以及推理的架构示意图;
图2B为本申请实施例提供的训练系统的架构示意图;
图3A为本申请实施例提供的一示例性节点架构示意图;
图3B为本申请实施例提供的另一示例性节点架构示意图;
图4为本申请实施例提供的另一示例性节点架构示意图;
图5为本申请实施例提供的一种模型训练方法的流程示意图;
图6为本申请实施例提供的一种数据存储示意图;
图7为本申请实施例提供的一种数据拉取的流程示意图;
图8为本申请实施例提供的一种数据推送的流程示意图;
图9为本申请实施例提供的一种模型训练装置的结构示意图。
具体实施方式
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解,这样使用的术语在适当情况下可以互换,这仅仅是描述本申请的实施例中对相同属性的对象在描述时所采用的区分方式。
“至少一个”是指一个或者多个,而“多个”是指两个或两个以上。
“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。
字符“/”一般表示前后关联对象是一种“或”的关系,例如,A/B可以表示A或B。
此外,本申请的描述中所提到的术语“包括”、“包含”和“具有”,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括其他没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
需要说明的是,本申请中,“示例性的”或者“例如”等词用于表示作例子或说明。“示例性的”或者“例如”的任何实现方式(如本申请中的实施例)或设计方案不应被解释为比其它实现方式或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
本申请的说明书以及附图中“的(英文:of)”,“相应的(英文:relevant)”和“对应的(英文:corresponding)”有时可以混用,应当指出的是,在不强调其区别时,其所要表达的含义是一致的。
下面对本申请实施例涉及的一些术语概念做解释说明。
(1)节点:
例如,节点可以是本申请实施例中的第一节点和第二节点。
节点是具有处理数据和存储数据这两种功能中至少一种功能的设备。节点上运行有操作系统,节点可以操作系统区分,也就是说,不同的节点运行的操作系统不同。或者说,一个操作系统的运行所使用到的硬件和软件可视归属同一个节点。本申请中,节点可以是完整的物理机。例如一个终端,或者一个网络设备,如服务器,服务器代理等。本申请中的数据访问,可以理解为一个节点通过实例访问另一个节点维护的数据。节点中的设备是指节点中的部件或者组件,例如节点是物理机时,CPU和内存都是该节点中的设备。物理机是指封装成一个产品的计算机,例如服务器,台式电脑,一体机(all-in-one PC,AIO)、笔记本电脑或者智能手机等。
(2)DRAM:
是一种半导体存储器,主要的工作原理是利用电容内存储电荷的数量于阈值的大小关系代表一个二进制比特(bit),取值为1或0。由于在现实中晶体管会有漏电电流的现象,导致电容上所存储的电荷数量并不足以正确的进行数据判别,而导致数据毁损。因此对于DRAM来说,周期性地充电(也可称刷新)是一个不可避免的条件。由于这种需要定时刷新的特性,因此被称为“动态”随机存储器。相对来说,静态随机存储器只要存入数据,纵使不刷新也不会丢失数据。
(3)双倍数据速率(double data rate,DDR)
DDR是电子工程设计发展联合协会(jointelectron device engineering council,JEDEC)标准,是并行总线通信标准,该标准中包括连接接口的物理规格和数据传输的相关协议等。(4)本地:对一个实例来说,运行该实例(例如和模型训练相关的实例)的节点,就是本地。如本地内存,全称应该是“一个实例的本地内存”,也就是指运行该实例的节点的内存。运行实例的节点可以从不同的粒度来描述。例如可以只是处理器,如中央处理器(Central Processing Unit,CPU),或者图处理器(Graphics Processing Unit,GPU),也可以是完整的物理机,即包括处理电路和存储介质。具体采用哪种描述,要看涉及的数据访问过程是否跨物理机。
(5)远端:远端是与“本地”相对的概念。也就是说,对一个实例来说,除了运行该实例的节点,其他的节点就是远端。远端可以是具有计算能力的设备,也可以是用于存储数据的设备。
(6)标识:用于将一种或者一个事物与其他同类或不同类的事物做区分。比如,节点的标识,网络的标识,网卡的标识。标识可以是名称,编号,也可以是以某个有区分性的特征作为标识,例如用种类标识。本申请对各种标识的实现不做限制,只要可以做出区分即可。例如,在本申请的一些实现方式下,以实例的虚拟地址空间的标识,作为实例的标识,而非采用常见的,以实例的名称或者编号作为实例的标识。
(7)地址空间:也可以叫存储空间,指能被某个设备或者实例使用的一段或者多段地址。例如,某个设备或者实例的虚拟地址空间,就是能被该设备或者实例使用的,也就是属于该设备或者实例的一段或者多段虚拟地址。某个设备或者实例的虚拟地址空间是由该设备或者实例所在的操作系统分配的。又例如,某个设备或者实例的物理地址空间,就是分配给该设备或者实例使用的一段或者多段物理地址,在该设备或者实例这个物理地址空间时,其他设备或者实例无法使用这个物理地址空间中地址。实例的物理地址空间是运行该实例的操作系统分配的。这个分配可能是动态的,例如随着实例的运行,占用的物理地址空间越来越大,但是会有一个上限。设备的物理地址空间的大小和范围通常是固定的。
下面对本申请实施例的场景举例说明。
本申请实施例可以应用于信息推荐领域,该场景包括但不限于涉及电商产品推荐、搜索引擎结果推荐、应用市场的软件推荐、音乐推荐、视频推荐、新闻推荐、阅读内容推荐、终身伴侣相关的应用等场景,其中,各种不同应用场景中被推荐的物品也可以称为“推荐对象”。在不同的推荐场景中,推荐对象可以是媒体内容项,例如APP,或者视频(例如短视频或者直播类视频),或者音乐,或者某款商品(如线上购物平台的呈现界面,会根据用户的不同而选择不同的商品进行呈现),或者文章。
比如,以应用商店为例,用户打开手机应用市场即可触发应用市场的推荐模块,应用市场的推荐模块会根据用户的历史下载记录、用户点击记录,应用的自身特征、时间、地点等环境特征信息,预测用户对给定的各个候选应用的下载可能性。根据预测的结果,应用市场按照可能性降序展示,达到提高应用下载概率的效果。具体来说,将更有可能下载的应用排在靠前的位置,将不太可能下载的应用排列在靠后的位置。而用户的行为也会存入日志并通过离线训练模块对预测模型的参数进行训练和更新。
又比如,在终身伴侣相关的应用中,可以基于用户在视频、音乐、新闻等域的历史数据,通过各种模型和算法,仿照人脑机制,构建认知大脑,搭建用户终身学习系统框架。终身伴侣可以根据系统数据和应用数据等来记录用户过去发生的事件,理解用户的当前意图,预测用户未来的动作或行为,最终实现智能服务。
推荐过程可以由推荐系统实现,推荐系统可以向用户呈现感兴趣的信息。为了能够确定用户感兴趣的信息,需要基于上下文信息、用户的属性信息、物品的属性信息等,进行用户和物品之间的匹配。
推荐系统通常涉及用户行为日志采集、日志数据预处理(例如,量化、采样等)、样本集训练以获得推荐模型、根据推荐模型对训练样本项对应的场景中所涉及的对象(如APP、音乐等)进行分析处理、例如,推荐模型训练环节中所选择的样本来自于手机应用市场用户对于所推荐APP的操作行为,则由此所训练出来的推荐模型则适用于上述手机APP应用市场,或者可以用于其它的类型的终端的APP应用市场进行终端APP的推荐。推荐模型将最终计算出各个待推荐对象的推荐概率或者分值,推荐系统根据一定的选择规则选定的推荐结果,例如按照推荐概率或者分值进行排序,通过相应的应用或者终端设备呈现给用户、用户对推荐结果中的对象进行操作以生成用户行为日志等环节。
接下来介绍本申请的应用场景:
本申请可以应用于推荐系统,具体的,可以应用于推荐系统中推荐模型的训练过程。
例如,图1是本申请实施例提供的推荐系统的示意图。如图1所示,当一个用户进入统,会触发一个推荐的请求,推荐系统会将该请求及其相关信息输入到推荐模型,然后预测用户对系统内的物品的选择率。进一步,根据预测的选择率或基于该选择率的某个函数将物品降序排列,即推荐系统可以按顺序将物品展示在不同的位置作为对用户的推荐结果。用户浏览不同的处于位置的物品并发生用户行为,如浏览、选择以及下载等。同时,用户的实际行为会存入日志中作为模型参数,通过训练模块(例如,离线或者在线)不断更新推荐模型的参数,提高模型的预测效果。
例如,用户打开智能终端(例如,手机)中的应用市场即可触发应用市场中的推荐系统。应用市场的推荐系统会根据用户的历史行为日志,例如,用户的历史下载记录、用户选择记录,应用市场的自身特征,比如时间、地点等环境特征信息,预测用户下载推荐的各个候选应用(application,APP)的概率。根据计算的结果,应用市场的推荐系统可以按照预测的概率值大小降序展示候选APP,从而提高候选APP的下载概率。
示例性地,可以将预测的用户选择率较高的APP展示在靠前的推荐位置,将预测的用户选择率较低的APP展示在靠后的推荐位置。
上述推荐模型可以是神经网络模型,下面对本申请实施例可能涉及的神经网络的相关术语和概念进行介绍。
(1)神经网络
神经网络可以是由神经单元组成的,神经单元可以是指以xs(即输入数据)和截距1为输入的运算单元,该运算单元的输出可以为:
其中,s=1、2、……n,n为大于1的自然数,Ws为xs的权重,b为神经单元的偏置。f为神经单元的激活函数(activation functions),用于将非线性特性引入神经网络中,来将神经单元中的输入信号转换为输出信号。该激活函数的输出信号可以作为下一层卷积层的输入,激活函数可以是sigmoid函数。神经网络是将多个上述单一的神经单元联结在一起形成的网络,即一个神经单元的输出可以是另一个神经单元的输入。每个神经单元的输入可以与前一层的局部接受域相连,来提取局部接受域的特征,局部接受域可以是由若干个神经单元组成的区域。
(2)损失函数
在训练深度神经网络的过程中,因为希望深度神经网络的输出尽可能的接近真正想要预测的值,所以可以通过比较当前网络的预测值和真正想要的目标值,再根据两者之间的差异情况来更新每一层神经网络的权重向量(当然,在第一次更新之前通常会有初始化的过程,即为深度神经网络中的各层预先配置参数),比如,如果网络的预测值高了,就调整权重向量让它预测低一些,不断的调整,直到深度神经网络能够预测出真正想要的目标值或与真正想要的目标值非常接近的值。因此,就需要预先定义“如何比较预测值和目标值之间的差异”,这便是损失函数(loss function)或目标函数(objective function),它们是用于衡量预测值和目标值的差异的重要方程。其中,以损失函数举例,损失函数的输出值(loss)越高表示差异越大,那么深度神经网络的训练就变成了尽可能缩小这个loss的过程。
(3)反向传播
可以采用误差反向传播(back propagation,BP)算法在训练过程中修正初始模型中参数的大小,使得模型的误差损失越来越小。具体地,前向传递输入信号直至输出会产生误差损失,通过反向传播误差损失信息来更新初始模型中的参数,从而使误差损失收敛。反向传播算法是以误差损失为主导的反向传播运动,旨在得到最优的模型参数,例如权重矩阵。
接下来介绍本申请的应用架构示意:
图2A、图2B、图3A、图3B和图4为本申请的应用架构示意,其中,图2A为从对推荐系统的训练和推理两方面角度描述的架构示意,图2B为分布式训练系统的架构示意,图3A和图3B针对于分布式训练系统中节点硬件架构提供了更丰富的细节,图4针对于分布式训练系统中节点的软件架构提供了更丰富的细节。
参见图2A,本实施例提供了一种推荐系统架构200。数据采集设备260用于采集样本,一个模型参数可以由多个特征信息(或者描述为属性信息,例如用户属性以及物品属性)组成,或者是基于特征信息得到的嵌入向量embedding(例如本申请实施例中的第一参数和第二参数),特征信息可以有多种,具体可以包括用户特征信息和对象特征信息以及标签特征,用户特征信息用于表征用户的特征,例如性别,年龄,职业,爱好等,对象特征信息用于表征向用户所推送的对象的特征,不同的推荐系统对应不同的对象,不同的对象所需要提取的特征类型也不想同,例如APP市场的模型参数中所提取的对象特征可以为,APP的名称(标识),类型,大小等;而电商类APP的模型参数中所提起的对象特征可以为,商品的名称,所属的类别,价格区间等;标签特征,则是用于表示这个样本是正例还是负例,通常样本的标签特征可以通过用户对所推荐对象的操作信息所获的,用户对所推荐对象有进行操作的样本为正例,用户对所推荐对象没有进行操作,或者仅浏览的样本为负例,例如当用户点击或者下载或者购买了所推荐的对象,则标签特征为1,表示该样本是正例,而如果用户没有对所推荐的对象进行任何操作,则标签特征为0,表示该样本是负例。样本在采集后可以保存在数据库230中,数据库230中的样本中的部分或全部特征信息也可以直接从客户设备240中获取,如用户特征信息,用户对对象的操作信息(用于确定类型标识),对象特征信息(如对象标识)等。
数据采集设备260采集的模型参数可以存储在数据库230中,数据库230具体可以为多个节点中的存储器,本申请实施例中,存储器可以为内存或者扩展内存。
分布式训练系统220基于数据库230中样本训练来训练推荐模型201。推荐模型201能够用于对大量对 象进行评估从而得出各个待推荐对象的分值,进一步的还可以从大量对象的评估结果中推荐指定或者预设数目个对象,计算模块211基于推荐模型201的评估结果获取推荐结果,通过I/O接口212推荐给客户设备。
在本申请实施例中,该分布式训练系统220可以采用训练集中的样本对推荐模型进行训练从而得到训练后的推荐模型;计算模块211的实现细节可以参照图5所示的方法实施例的详细描述。
分布式训练系统220通过训练得到训练后的推荐模型201后,可以将推荐模型201发送给执行设备210,或者直接将模型参数矩阵发送给执行设备210,在执行设备210中构建推荐模型,用于进行相应系统的推荐,例如基于视频相关的样本训练获得的推荐模型可以用于视频网站或APP中对用户进行视频的推荐,基于APP相关的样本训练获得的推荐模型可以用于应用市场中对用户进行APP的推荐。
执行设备210配置有I/O接口212,与外部设备进行数据交互,执行设备210可以通过I/O接口212从客户设备240获取用户特征信息,例如用户标识、用户身份、性别、职业、爱好等,此部分信息也可以从系统数据库中获取。推荐模型201基于用户特征信息和待推荐对象特征信息向用户推荐目标推荐对象。执行设备210可以设置在云端服务器中,也可以设置于用户客户端中。
执行设备210可以调用数据存储系统250中的数据、代码等,同时也可以将输出的数据存入数据存储系统250中。数据存储系统250可以设置于执行设备210中,也可以独立设置,或者设置于其他网络实体中,数量可以是一个也可以是多个。
计算模块211使用推荐模型201对用户特征信息,待推荐对象特征信息进行处理,例如,该计算模块211使用推荐模型201对用户特征信息,以及待推荐对象的特征信息进行分析处理,从而得出该待推荐对象的分值,对待推荐对象按照分值进行排序,其中,排序靠前的对象将作为推荐给客户设备240的对象。
最后,I/O接口212将推荐结果返回给客户设备240,呈现给用户。
参照图2B,分布式训练系统220可以包括多个节点,数据库230可以将训练参数部署在多个节点中,在进行模型训练时,多个节点中的一个或多个节点可以通过网络节点集群的其他节点中拉取训练所需的训练参数来进行模型训练,并将训练后得到的梯度回传至其他节点,由其他节点进行训练参数的更新。
下面基于图3A,描述本申请适用的一种节点100的架构图,该节点100可以为图2B中介绍的分布式训练系统中的节点。应理解,图3A描述的架构只是为了便于理解的一种示意,并不是对本申请提及的节点可使用的架构的限制,该节点100中的其他软件部分,例如操作系统和其他硬件部分,如显示器等,并未显示。
该节点的架构示意包括硬件部分。具体的,硬件包括:
中央处理器(central processing unit,CPU)1004和内存管理单元(Memory Management Unit,MMU)1005:两者一般是封装成一个芯片的。CPU运行应用,发起用于读数据或者写数据的请求,下文也简称为访存请求,即访问存储介质的请求,因为读数据或者写数据都要找到存储介质(例如内存或者扩展内容)中的地址。MMU负责由CPU发起的访问内存的请求的地址翻译,也就是将访存请求中的虚拟地址转换成物理地址。
内存(Memory)1006:图3A中以内存为例示意该节点上的存储介质,该内存的物理形态可以是内存条。在本申请的方法中,内存除了提供给本地的实例(例如进程)使用,还可以被其他节点的实例使用,其他节点的实例使用的方式是通过请求,向这个内存写数据,或者请求读取该内存中的数据。CPU 1004向内存1006中读写数据时,占用的是双倍速率(double data rate,DDR)带宽。
扩展内存组件1002:扩展内存组件1002可以包括扩展芯片以及扩展内存,扩展芯片可以包括控制器,例如控制器可以是开放式互连协议(compute express link,CXL)控制器以及内存控制器,CXL控制器用于引出CXL接口,其中,CXL接口可以连接CPU 1004,可选的,CXL接口可以通过PCIe金手指连接CPU 1004。由于CXL总线与PCIe总线的物理层兼容,因此内存扩展组件1002可以与PCIe设备一样使用服务器机箱内的PCIe插槽,无需额外的通信线缆。
扩展内存是基于CXL协议(或者是类CXL协议)的一种插入在PCIe插槽上面的功能与内存相似的硬件,不带持久化特性,内部介质是DRAM,因此可以视为DDR DRAM的扩展。其带宽是取决于PCIe协议 的带宽(PCIe 5.0:128GB/S),时延大概是350ns,略微差于DDR的读写时延和带宽。
CPU 1004通过CXL接口连接扩展芯片,扩展芯片通过其中的内存控制器连接扩展内存,进而实现了CPU 1004连接扩展内存,实现了节点内的内存扩展。
训练模块1001:训练模块1001可以是神经网络处理器(neural network processing unit,NPU)、图形处理器(graphics processing unit,GPU)、张量处理器(tensor processing unit,TPU)等AI训练卡。
虽然在图3A示出的架构中节点100包含训练模块1001,针对于用于存储模型参数的节点来说,可能不包含训练模块1001,例如图3B所示的那样。
收发模块1003:收发模块1003可以是基于物理机间互联协议的网卡,物理机间互联协议可以是ROCE、IB、TCP、CXL等。CPU 1004可以控制收发模块1003将数据通过网络传输到其他计算节点,收发模块1003可以接收到来自其他节点传输的数据。
图4为节点集群的软件架构示意。
如图4所示,每一个节点的软件形态可以包括多个worker和多个server(图4只画了一个),worker和server都是单独的一个进程,每个worker主要是用于训练和推理相关模型数据,而每个server则用于存储模型参数(例如图4示出的embedding表)。
对应相应的硬件,每个worker包含了训练模块,用于负责数据的训练推理工作,每个server主要则是在CPU上运行,本申请实施例中,server的embedding表可以放置于内存或者扩展内存中,其他的一些数据如优化器中的计算参数也可以放置在内存或者扩展内存。
在实际应用中,在模型的一次迭代训练过程中,包括前向传播和反向传播两个过程,其中,前向传播过程为将模型参数输入到待训练模型中,得到待训练模型的处理结果,处理结果可以确定模型参数对应的更新梯度,反向传播则是基于模型参数对应的更新梯度来进行模型的更新。
更具体的,负责前向传播的节点(例如本申请实施例中的第二节点)可以从存储模型参数的节点(例如本申请实施例中的第一节点)处获取到模型参数,根据模型参数得到更新梯度,并将更新梯度回传至存储模型参数的节点,以便存储模型参数的节点根据更新梯度得到更新后的模型参数,并将更新后的模型参数替换掉更新前存储的模型参数。
其中,上述负责前向传播的节点获取模型参数的过程可以称之为数据的拉取(pull)过程,负责前向传播的节点根据模型参数得到更新梯度的过程可以为称之训练(train)过程,上述将更新梯度回传至存储模型参数的节点可以称之为数据的推送(push)过程。
为便于理解,下面结合附图,对上述数据的拉取(pull)过程、训练(train)过程以及数据的推送(push)过程分别进行详细介绍。
在现有的实现中,将模型参数均部署在节点的内存(例如动态随机存取内存(dynamic random access memory,DRAM))中,在负责前向传播的节点从其他负责存储的节点中获取模型参数时,需要占用DDR带宽,进而会导致DDR带宽拥堵。
具体的,在一种情况中,当前模型迭代所需的模型参数存储在位于训练模块远端节点的内存中时(例如,训练模块和内存位于不同的节点),节点(训练模块所在的节点)的处理器可以通知远端节点(当前模型迭代所需的模型参数所存储的节点)中的处理器获取当前模型迭代所需的模型参数,远端节点的处理器可以通过DDR从内存对应的存储位置中读取当前模型迭代所需的模型参数,并将该数据通过DDR写入到缓存(属于内存的存储空间)中,并传递至收发模块(例如,网卡),收发模块可以将该数据传递至训练模块所在的节点。也就是说,无论是远端节点的处理器从内存中读取模型参数还是将模型参数写入缓存,均需要占用DDR带宽。
具体的,在一种情况中,负责进行前向传播的节点可以包括训练模块,训练模块可以为CPU、NPU或者GPU等具备AI处理能力的处理器,在一种实现中,当前模型迭代所需的模型参数存储在位于训练模块本地的内存中时(例如,训练模块和内存位于同一个节点),节点的处理器(例如CPU)可以通过DDR从内存对应的存储位置中读取当前模型迭代所需的模型参数,并将该数据通过DDR写入到缓存(属 于内存的存储空间)中,并传递至训练模块。也就是说,无论是处理器从内存中获取模型参数还是将模型参数写入缓存,均需要占用DDR带宽。
本申请实施例中,可以将一些模型参数存储至通过不同的协议与处理器进行通信的内存(例如本申请中的第一内存和第二内存)中,其中,处理器在第二内存中读取和写入数据时占用的是高速串行计算机扩展总线标准(peripheral component interconnect express,PCIE)的带宽,从而降低了DDR带宽的占用。
参见图5,示出了本申请实施例提供的一种模型训练方法的流程示意图,该方法可以应用于图2至图4所示的网络架构中,或者可以用于其它网络架构中。如图5所示,该方法具体可以包括:
S401:多个节点中的第二节点用于发送多个参数获取请求至第一节点,多个参数获取请求用于获取第二节点训练模型时需要的参数。
在一些场景中,需要更新的模型参数的数量很大,因此,可以将大量的模型参数存储在多个节点中,在模型训练时,负责进行前向传播的节点需要从多个节点中获取到当前批次所需的模型参数。
以推荐模型为例,模型参数可以为用户或者物品对应的嵌入向量(embedding),其中,推荐模型可以根据用户的嵌入向量和多个物品的嵌入向量,来确定向用户推荐多个物品中的哪一个。
接下来分别介绍用户或者物品对应的嵌入向量:
在一种可能的实现中,可以通过嵌入层对用户的属性信息进行嵌入处理,得到用户的嵌入向量,可以通过嵌入层对物品的属性信息进行嵌入处理,得到物品的嵌入向量。
其中,用户的属性信息可以为与用户喜好特征相关的属性,性别、年龄、职业、收入、爱好以及受教育程度中的至少一种,其中,性别可以为男或者女,年龄可以为0-100之间的数字,职业可以为教师、程序员、厨师等等,爱好可以为篮球、网球、跑步等等,受教育程度可以为小学、初中、高中、大学等等;本申请并不限定用户的属性信息的具体类型。
其中,物品可以为实体物品,或者是虚拟物品,例如可以为应用程序(application,APP)、音视频、网页以及新闻资讯等物品,物品的属性信息可以为物品名称、开发者、安装包大小、品类以及好评度中的至少一种,其中,以物品为应用程序为例,物品的品类可以为聊天类、跑酷类游戏、办公类等等,好评度可以为针对于物品的打分、评论等;本申请并不限定物品的属性信息的具体类型。
在一种可能的实现中,可以将模型参数(例如上述用户和物品的嵌入向量,或者还可以包含其他的模型参数)存储在对应的节点中。
在模型参数的部署阶段,可以将待训练模型对应的模型参数部署在节点集群中,具体可以根据业务和模型的需求调整数据放置在各个节点的数量比例。
例如,可以将模型的部分参数部署在第一节点中,具体的,模型的部分参数可以分别存储在第一节点的第一内存和第二内存中。其中,第一节点可以为上述介绍的远端节点。
在一种可能的实现中,第一内存和第二内存通过不同的协议与第一节点的处理器通信,例如,第一内存可以通过DDR协议与处理器通信,第二内存可以通过CXL协议与处理器通信,其中,处理器在从第一内存中读写数据时,占用的是DDR带宽,处理器在从第二内存中读写数据时,占用的是PCIE带宽。
在一种可能的实现中,第二节点可以确定当前模型训练迭代轮次所需的模型参数存储在第一节点中,具体的,第二节点的处理器在确定当前模型训练迭代轮次所需的第一参数存储在第一节点的内存中,以及当前模型训练迭代轮次所需的第二参数存储在第一节点的扩展内存中时,第二节点可以执行步骤S401,S401具体为第二节点发送多个参数获取请求至第一节点,多个参数获取请求用于获取第二节点训练模型时需要的参数。
具体的,第二节点可以向第一节点的收发模块(例如网网卡)发送多个样本获取请求,第一节点的收发模块可通知处理器多个样本获取请求中的内容。
S402:第一节点根据多个参数获取请求确定多个参数获取请求所获取的参数分别存储在第一内存及第二内存,将从第一内存及第二内存获取的参数进行合并,并将合并后的参数发送至第二节点。
在一种可能的实现中,步骤S402具体可以包括:步骤S4021、步骤S4022、步骤S4023和步骤S4024,步骤S4021具体为:第一节点根据多个参数获取请求确定多个参数获取请求所获取的参数分别存储在第 一内存及第二内存,步骤S4022具体为:从第一内存及第二内存获取参数,步骤S4023具体为:将从第一内存及第二内存获取参数进行合并,步骤S4024具体为:将合并后的参数发送至第二节点。接下来分别进行说明:
在一种可能的实现中,该多个参数获取请求可以包含处理器需要获取的数据(也就是模型的部分参数)的虚拟地址。第一节点可以维护有相应的存储页表,该存储页表可以包括数据的虚拟地址与物理地址的映射关系,物理地址为存储该数据的存储空间的地址。
在一种可能的实现中,该多个参数获取请求可以包含指示数据(也就是模型的部分参数)的标识,第一节点可以维护有相应的存储页表,该存储页表可以包括数据的标识与虚拟地址的映射关系,虚拟地址与数据的存储空间的物理地址相对应。基于该页表,第一节点的处理器可以确定出请求中指示的模型的部分参数对应的虚拟地址。
在一种可能的实现中,多个参数获取请求中的部分参数请求用于获取存储在第一节点的第一内存中的参数(为了方便描述,本申请实施例可以将存储在第一内存中的参数称之为第一参数,第一参数可以包括模型的一个或多个参数),多个参数获取请求中的另一部分参数请求用于获取存储在第一节点的第二内存中的参数(为了方便描述,本申请实施例可以将存储在第二内存中的参数称之为第二参数,第二参数可以包括模型的一个或多个参数)。因此,处理器可以根据多个参数获取请求确认多个参数获取请求所获取的参数分别存储在第一内存及第二内存。
第一节点在执行步骤S4021(第一节点根据多个参数获取请求确定多个参数获取请求所获取的参数分别存储在第一内存及第二内存)之后,可以执行步骤S4022(从第一内存及第二内存获取参数)。
以多个参数获取请求所获取的参数为第一参数(位于第一内存)和第二参数(位于第二内存)为例:
在一种可能的实现中,第一节点的处理器可以从第一节点的第一内存中读取第一参数,具体的,第一节点的处理器可以基于第一参数的虚拟地址,从第一节点的第一内存中的对应存储位置处读取第一参数。
在一种可能的实现中,第一节点的处理器在基于第一参数的虚拟地址,从第一节点的第一内存中的对应存储位置处读取第一参数时,第一参数对应的虚拟地址可以用于确定第一参数在第一节点的第一内存中的物理地址(该映射过程可以通过内存控制器的翻译实现,此处不再赘述)。
在一种可能的实现中,第一节点的处理器可以从第一节点的第二内存中读取第二参数,具体的,第一节点的处理器可以基于第二参数的虚拟地址,从第一节点的第二内存中的对应存储位置处读取第二参数。
在一种可能的实现中,第一节点的处理器在基于第二参数的虚拟地址,从第一节点的第二内存中的对应存储位置处读取第二参数时,第二参数对应的虚拟地址可以用于确定第二参数在第一节点的第二内存中的物理地址(该映射过程可以通过内存控制器的翻译实现,此处不再赘述),第二参数对应的虚拟地址可以用于确定第二参数在第一节点的第二内存中的物理地址。
以第一内存可以通过DDR协议与处理器通信,第二内存可以通过CXL协议与处理器通信为例,第一节点的处理器在读取第一参数时可以是基于DDR的线路,第一节点的处理器在读取第二参数时可以是基于CXL或者是类CXL的线路,CXL和DDR是两套完全不同的数据线路,CXL是基于PCIe的,DDR是基于CPU的内存控制器的,相互之间的带宽不影响。
本申请实施例,将模型参数存储到第一节点的扩展内存中,一方面,在从扩展内存中读取数据时,不占用DDR带宽,从而降低了DDR带宽的占用,另一方面,由于内存自身的存储空间有限,在推荐模型等模型参数的数量巨大的场景中,通过将模型参数存储到扩展内存中可以降低存储模型参数的节点数量。
在一种可能的实现中,处理器在从第一内存和第二内存获取参数之后,可以执行步骤S4023(将从第一内存及第二内存获取的参数进行合并)。
其中,合并的参数可以是模型在某一轮迭代过程中所需的参数,或者是,处理器可以每间隔一定的时间后就对获取的参数进行合并,或者是,处理器可以是在每获取到一定数量的参数后就对获取的参数进行合并。
其中,这里所谓的合并,可以理解为将读取的参数写入到缓存中一段或多段连读的存储空间中。
在一种可能的实现中,缓存可以是由第一内存提供的存储空间,也可以是由第二内存提供的存储空间,也可以是由第一内存和第二内存共同提供的存储空间。
其中,第一参数可以为一个或多个embedding,第二参数可以为一个或多个embedding,在第一参数为多个embedding时,可以将第一参数中的多个embedding进行聚合并写入到缓存中。第一参数中的多个embedding在缓存中占用了一片连续的存储空间。在第二参数为多个embedding时,可以将第二参数中的多个embedding进行聚合并写入到缓存中,第二参数中的多个embedding在缓存中占用了一片连续的存储空间。
在一种可能的实现中,步骤S4023具体可以为:第一节点的处理器将第一参数写入到第一节点的第二内存中、以及将第二参数写入到第一节点的第一内存中;或者,S4023具体为:第一节点的处理器将第一参数写入到第一节点的第一内存中、以及将第二参数写入到第一节点的第二内存中;或者,S4023具体为:第一节点的处理器将第一参数写入到第一节点的第一内存中、以及将第二参数写入到第一节点的第二内存中。
在一种可能的实现中,第一内存为内存,第二内存为扩展内存,从第二内存中读写数据时基于的是CXL协议,该协议约束了数据的读取和写入均需要携带CXL相关的报文头,且读写时相比DDR时延会更长。
将从第一内存中获取的参数缓存至第二内存,相比于将从第一内存中获取的参数缓存至第一内存,可以降低写入过程的DDR的带宽占用。
将从第二内存中获取的参数缓存至第一内存,相比于将从第二内存中获取的参数缓存至第二内存,可以降低数据传输的时延。
将从第一内存中获取的参数以及从第二内存中获取的参数合并后均缓存至第一内存,可以数据传输的时延。
将从第一内存中获取的参数以及从第二内存中获取的参数合并后均缓存至第二内存,可以降低写入过程的DDR的带宽占用。
在一种可能的实现中,第一节点的处理器还可以执行步骤S4024,步骤S4024具体为:第一节点将合并后的参数发送至第二节点。
其中,步骤S4024具体可以包括:步骤S40241:第一节点的处理器通知第一节点的收发模块从第一节点的缓存中读取合并后的参数。该通知中可以携带存储合并后的参数在缓存中的地址。步骤S40242:第一节点的收发模块第一节点的缓存中读取合并后的参数。步骤S40243:第一节点的收发模块将合并后的参数发送至第二节点。
本申请实施例中,将从第一内存和第二内存中获取到的参数进行合并后发送,尤其在推荐模型训练等节点之间需要传递的参数数量较多的场景中,可以使得传输的报文数量大大降低,进而提高数据的传输效率。
在一种可能的实现中,第一节点的处理器可以触发第一节点的收发模块获取到第一参数和第二参数,并将第一参数和第二参数发送至第二节点,例如发送到第二节点的收发模块,可选的,收发模块可以为网卡。
具体的,收发模块可以通过远程直接内存访问(remote direct memory access,RDMA)、CXL或者其他高速传输协议将第一参数和第二参数发送至第二节点。
通常情况下,单个模型参数的大小较小,往往只有几个字节或者几百字节,如果收发模块直接将携带单个模型参数的报文发送到第二节点的接收模块时,传输报文头数据可能会将大于实际需要传输的模型参数,此外,稍微大一些的模型每次需要拉取的模型参数都是百万级别的,因此过多的报文传输会给网卡带来很大的请求压力。本实施例中,可以将报文数据发送至第二节点,且在报文数据中第一参数和第二参数共享同一个报文头(也就是合并后发送),进而可以降低报文的数据大小,以及数据拉取时发送的报文数量。
步骤S403:第二节点接收合并后的参数,并使用合并后的参数对模型进行训练。
在一种可能的实现中,步骤S403可以包括:步骤S4031:第二节点的收发模块接收到第一参数以及 第二参数,步骤S4032:将第一参数和第二参数传递至训练模块。例如,步骤S4032具体可以包括步骤S40321和步骤S40322,步骤S40321具体为:第二节点的收发模块将第一参数以及第二参数写入到位于第二节点的缓存中,步骤S40322具体为:第二节点的处理器可以从缓存中读取第一参数以及第二参数,并将第一参数以及第二参数传递至第二节点的训练模块中。
可选的,训练模块在获取到第一参数和第二参数之后,可以执行步骤S404:训练模块可以根据第一参数以及第二参数执行待训练模型的训练过程,得到第一参数对应的更新梯度以及第二参数对应的更新梯度、或者是直接得到更新后的第一参数以及更新后的第二参数。
在一种可能的实现中,第二节点在获取到第一参数以及第二参数之后,可以将第一参数和第二参数传递至训练模块,训练模块可以根据第一参数以及第二参数,得到第一参数对应的更新梯度以及第二参数对应的更新梯度。
在一种可能的实现中,第二节点的处理器可以将第一参数对应的更新梯度以及第二参数对应的更新梯度、或者更新后的第一参数以及更新后的第二参数写入到位于内存的缓存中,第二节点的处理器通知第二节点的收发模块从内存的缓存中读取第一参数对应的更新梯度以及第二参数对应的更新梯度、或者更新后的第一参数以及更新后的第二参数。第二节点的收发模块可以执行步骤S405:将第一参数对应的梯度以及第二参数对应的梯度合并后发送至第一节点。
为了能够让第一节点知晓从第二节点发送的梯度或者更新后的数据对应于之前的哪一个模型参数,可以在报文数据中携带梯度或者更新后的数据与对应的虚拟地址或者标识的对应关系。
在一种可能的实现中,针对于同一个节点的梯度或者更新后的数据,可以放置在同一个报文数据中并由第二节点的收发模块发送到第一节点的收发模块,从而降低报文的数据大小,以及数据拉取时发送的报文数量。
可选的,还可以包括步骤S406:第一节点在接收到梯度后,区分第一内存中存储的参数对应的梯度及第二内存中存储的参数对应的梯度,并分别更新第一内存中的参数及第二内存中的参数。
其中,这里的更新可以包括基于梯度进行参数的更新,以及将更新后的参数写入到内存中对应的存储位置。也就是说,S406可以包括步骤S4061和步骤S4062。
具体的,步骤S4061具体为:第一节点的处理器(例如可以为处理器中包括的优化器)可以根据第一参数对应的更新梯度对第一参数进行更新,得到更新后的第一参数,第一节点的处理器可以根据第二参数对应的更新梯度对第二参数进行更新,得到更新后的第二参数。
步骤S4062具体为:第一节点的处理器可以将更新后的第一参数写入第一参数所在的存储位置。第一节点的处理器可以将更新后的第二参数写入第二参数所在的存储位置。
接下来结合一个具体的示例介绍本申请实施例中的模型训练方法:
参照图7,图7为模型训练过程的模型参数拉取(pull)流程,图8为模型训练过程的训练(training)流程和数据推送(push)流程。图7和图8中以模型参数为嵌入向量(embedding)为例进行说明:
在模型参数部署阶段,可以将embedding数据和其他数据(other value)部署在不同物理节点的内存DRAM和扩展内存(Memory Expander)上,这些数据都放在server进程申请的虚拟地址中,可以根据业务和模型的需求调整数据放置的比例,模型参数的部署示意可以参照图6所示。
以图7为例,节点1上的训练模块作为训练发起者,在数据拉取的过程中,当前模型训练轮次所需的模型参数(embedding表1中的数据和embedding表2中的数据)在节点1上,进行本地内存拷贝(拷贝可以理解为读取和写入),这里的拷贝分为两种形式:由内存到内存中缓存的拷贝、以及由扩展内存到内存的拷贝。前一种读写的时候均利用DDR带宽,后在读取数据的时候利用PCIe带宽,写入的时候利用DDR带宽。
在数据拉取的过程中,当前模型训练轮次所需的模型参数(embedding表3中的数据和embedding表4中的数据)在节点2上,将embedding表4中的数据进行聚合,拷贝到扩展内存上,而扩展内存中的数据进行聚合,拷贝到内存,两两都形成一片连续的buffer。这里将数据交错放置的目的是,这样做可以平衡PCIe和DDR之间的拷贝时延和带宽压力,使得整体时延带宽达到最优。
节点2将buffer中的数据通过网卡等,发送到节点1的内存中。节点1可以通过共享内存buffer 将数据发到训练模块,开始训练流程。
图8示出了一种数据推送(push)流程,训练模块将数据(例如更新梯度)送至内存,数据需要被传递到目的端,若目的端在节点1,则将数据和other value一起放入优化器中进行运算,其中embedding表和other value可以存在同一种硬件中,也可以不存在于同一种硬件,可以根据现实情况来平衡DDR和PCIe的带宽占用。
若目的端在节点2,则将节点1的聚合之后的数据通过网卡发送到节点2。
节点2接收到模型参数之后,分别根据地址需求将模型参数放在内存或者扩展内存中。将模型参数放到优化器中进行运算,运算完成之后,打散到embedding表中去,完成流程。
上文中结合图1至图8,详细描述了本申请所提供的模型训练方法,下面将结合图9,描述根据本申请所提供的模型训练装置。
图9为本申请提供的一种模型训练装置的结构示意图。如图9所示,该装置应用于第一节点,该装置900包括处理器901和收发模块902;
该处理器901,用于接收多个参数获取请求,多个参数获取请求用于获取第二节点训练模型时需要的参数;
根据多个参数获取请求确定多个参数获取请求所获取的参数分别存储在第一内存及第二内存,将从第一内存及第二内存获取的参数进行合并;
该收发模块902,用于并将合并后的参数发送至第二节点。
在一种可能的实现中,该处理器901,在用于对第一内存及第二内存获取的参数进行合并时具体用于:
将从第一内存中获取的参数及从第二内存中获取的参数都缓存至第一内存中进行合并。
在一种可能的实现中,该处理器901,在用于对第一内存及第二内存获取的参数进行合并时具体用于:
将从第一内存中获取的参数及从第二内存中获取的参数都缓存至第二内存中进行合并。
在一种可能的实现中,该处理器901,在用于对第一内存及第二内存获取的参数进行合并时具体用于:
将从第一内存中获取的参数缓存至第二内存,将从第二内存中获取的参数缓存至第一内存。
在一种可能的实现中,第一内存通过DDR协议连接至处理器,第二内存为扩展内存,第二内存通过开放式互连协议CXL连接至处理器。
在一种可能的实现中,模型为推荐模型;参数为嵌入向量embedding。
图9所示的模型训练装置900,对应于图5所示实施例中的模型训练方法中的第一节点,故模型训练装置900所具有的功能及其技术效果,可参见图5所示实施例中的相关之处描述,在此不做赘述。
此外,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算节点上运行时,使得该计算节点执行上述实施例中的模型训练方法。
此外,本申请实施例还提供了一种计算机程序产品,计算机程序产品被模型训练装置执行时,一个或者多个模型训练装置执行前述模型训练方法中的任一方法。该计算机程序产品可以为一个软件安装包,在需要使用前述模型训练方法的任一方法的情况下,可以下载该计算机程序产品并在计算机上执行该计算机程序产品。
另外需说明的是,以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本申请提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,这仅仅是描述本申请的实施例中对相同属性的对象在描述时所采用的区分方式。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本申请而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘、U盘、移动硬盘、ROM、RAM、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,训练设备,或者网络设备等)执行本申请各个实施例的方法。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘(solid state drive,SSD)。
以上,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (19)

  1. 一种模型训练系统,其特征在于,所述模型训练系统包括多个节点,所述模型训练需要的参数分布在所述多个节点中;
    所述多个节点中的第一节点包括第一内存和第二内存,所述第一内存中和第二内存中分别存储所述模型的部分参数,所述第一内存和所述第二内存通过不同的协议与所述第一节点中的处理器进行通信;
    所述多个节点中的第二节点用于发送多个参数获取请求至第一节点,所述多个参数获取请求用于获取所述第二节点训练所述模型时需要的参数;
    所述第一节点用于根据所述多个参数获取请求确定所述多个参数获取请求所获取的参数分别存储在所述第一内存及所述第二内存,将从所述第一内存及所述第二内存获取的参数进行合并,并将合并后的参数发送至所述第二节点;
    所述第二节点还用于接收所述合并后的参数,并使用所述合并后的参数对所述模型进行训练。
  2. 根据权利要求1所述的系统,其特征在于,所述第一节点在用于对所述第一内存及所述第二内存获取的参数进行合并时具体用于:
    将从所述第一内存中获取的参数及从所述第二内存中获取的参数都缓存至所述第一内存中进行合并。
  3. 根据权利要求1所述的系统,其特征在于,所述第一节点在用于对所述第一内存及所述第二内存获取的参数进行合并时具体用于:
    将从所述第一内存中获取的参数及从所述第二内存中获取的参数都缓存至所述第二内存中进行合并。
  4. 根据权利要求1所述的系统,其特征在于,所述第一节点在用于对所述第一内存及所述第二内存获取的参数进行合并时具体用于:
    将从所述第一内存中获取的参数缓存至所述第二内存,将从所述第二内存中获取的参数缓存至所述第一内存。
  5. 根据权利要求1至4任意一项所述的系统,其特征在于,所述第二节点还用于接收到所述合并后的参数后,将所述合并后的参数与从其他节点接收的参数进行排序后,再使用排序后的参数对所述模型进行训练。
  6. 根据权利要求1至5任意一项所述的系统,所述第二节点还用于:
    对所述模型训练完后,获取所述模型训练后产生的梯度数据,并根据所述梯度数据确定所述第一节点的参数对应的梯度;
    将所述第一节点的参数对应的梯度合并后发送至所述第一节点;
    所述第一节点用于:
    在接收到所述梯度后,区分所述第一内存中存储的参数对应的梯度及所述第二内存中存储的参数对应的梯度,并分别更新所述第一内存中的参数及所述第二内存中的参数。
  7. 根据权利要求1至6任意一项所述的系统,其特征在于,所述第一内存通过DDR协议连接至所述处理器,所述第二内存为扩展内存,所述第二内存通过开放式互连协议CXL连接至所述处理器。
  8. 根据权利要求1至7任意一项所述的系统,其特征在于,所述模型为推荐模型;
    所述参数为嵌入向量embedding。
  9. 一种模型训练方法,其特征在于,应用于分布式训练系统,所述分布式训练系统包括多个节点,所述模型训练需要的参数分布在所述多个节点中;
    所述多个节点中的第一节点包括第一内存和第二内存,所述第一内存中和第二内存中分别存储所述模型的部分参数,所述第一内存和所述第二内存通过不同的协议与所述第一节点中的处理器进行通信;所述方法包括:
    所述多个节点中的第二节点发送多个参数获取请求至第一节点,所述多个参数获取请求用于获取所述第二节点训练所述模型时需要的参数;
    所述第一节点根据所述多个参数获取请求确定所述多个参数获取请求所获取的参数分别存储在所 述第一内存及所述第二内存,将从所述第一内存及所述第二内存获取的参数进行合并,并将合并后的参数发送至所述第二节点;
    所述第二节点接收所述合并后的参数,并使用所述合并后的参数对所述模型进行训练。
  10. 根据权利要求9所述的方法,其特征在于,所述对所述第一内存及所述第二内存获取的参数进行合并,包括:
    将从所述第一内存中获取的参数及从所述第二内存中获取的参数都缓存至所述第一内存中进行合并。
  11. 根据权利要求9所述的方法,其特征在于,所述对所述第一内存及所述第二内存获取的参数进行合并,包括:
    将从所述第一内存中获取的参数及从所述第二内存中获取的参数都缓存至所述第二内存中进行合并。
  12. 根据权利要求9所述的方法,其特征在于,所述对所述第一内存及所述第二内存获取的参数进行合并,包括:
    将从所述第一内存中获取的参数缓存至所述第二内存,将从所述第二内存中获取的参数缓存至所述第一内存。
  13. 根据权利要求9至12任意一项所述的方法,其特征在于,所述方法还包括:
    所述第二节点接收到所述合并后的参数后,将所述合并后的参数与从其他节点接收的参数进行排序后,再使用排序后的参数对所述模型进行训练。
  14. 根据权利要求9至13任意一项所述的方法,所述方法还包括:
    所述第二节点对所述模型训练完后,获取所述模型训练后产生的梯度数据,并根据所述梯度数据确定所述第一节点的参数对应的梯度;
    将所述第一节点的参数对应的梯度合并后发送至所述第一节点;
    所述第一节点在接收到所述梯度后,区分所述第一内存中存储的参数对应的梯度及所述第二内存中存储的参数对应的梯度,并分别更新所述第一内存中的参数及所述第二内存中的参数。
  15. 根据权利要求9至14任意一项所述的方法,其特征在于,所述第一内存通过DDR协议连接至所述处理器,所述第二内存为扩展内存,所述第二内存通过开放式互连协议CXL连接至所述处理器。
  16. 根据权利要求9至15任意一项所述的方法,其特征在于,所述模型为推荐模型;
    所述参数为嵌入向量embedding。
  17. 一种计算节点,其特征在于,所述计算节点包括处理器及存储器,所述存储器存储有程序指令,所述处理器运行所述程序指令以执行权利要求9至16任意一项所述的方法中所述处理器及所述训练模块所执行的步骤。
  18. 一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当其在计算节点上运行时,使得所述计算节点执行如权利要求9至16任一项所述的方法。
  19. 一种包含指令的计算机程序产品,当其在计算节点上运行时,使得所述计算节点执行如权利要求9至16任一项所述的方法。
PCT/CN2023/108091 2022-07-22 2023-07-19 一种模型训练系统、方法及相关设备 WO2024017283A1 (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
CN202210869512.6 2022-07-22
CN202210869512 2022-07-22
CN202211634067.1A CN117436499A (zh) 2022-07-22 2022-12-19 一种模型训练系统、方法及相关设备
CN202211634067.1 2022-12-19

Publications (1)

Publication Number Publication Date
WO2024017283A1 true WO2024017283A1 (zh) 2024-01-25

Family

ID=89548619

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2023/108091 WO2024017283A1 (zh) 2022-07-22 2023-07-19 一种模型训练系统、方法及相关设备

Country Status (2)

Country Link
CN (1) CN117436499A (zh)
WO (1) WO2024017283A1 (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107330516A (zh) * 2016-04-29 2017-11-07 腾讯科技(深圳)有限公司 模型参数训练方法、装置及系统
CN111813869A (zh) * 2020-08-21 2020-10-23 支付宝(杭州)信息技术有限公司 一种基于分布式数据的多任务模型训练方法及系统
US20210083950A1 (en) * 2019-09-13 2021-03-18 Oracle International Corporation Determining optimum software update transmission parameters
CN113033800A (zh) * 2019-12-25 2021-06-25 香港理工大学深圳研究院 分布式深度学习方法、装置、参数服务器及主工作节点
CN113283596A (zh) * 2021-05-18 2021-08-20 北京达佳互联信息技术有限公司 一种模型参数训练方法、服务器、系统及存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107330516A (zh) * 2016-04-29 2017-11-07 腾讯科技(深圳)有限公司 模型参数训练方法、装置及系统
US20210083950A1 (en) * 2019-09-13 2021-03-18 Oracle International Corporation Determining optimum software update transmission parameters
CN113033800A (zh) * 2019-12-25 2021-06-25 香港理工大学深圳研究院 分布式深度学习方法、装置、参数服务器及主工作节点
CN111813869A (zh) * 2020-08-21 2020-10-23 支付宝(杭州)信息技术有限公司 一种基于分布式数据的多任务模型训练方法及系统
CN113283596A (zh) * 2021-05-18 2021-08-20 北京达佳互联信息技术有限公司 一种模型参数训练方法、服务器、系统及存储介质

Also Published As

Publication number Publication date
CN117436499A (zh) 2024-01-23

Similar Documents

Publication Publication Date Title
US20210256403A1 (en) Recommendation method and apparatus
WO2020135535A1 (zh) 一种推荐模型训练方法及相关装置
US9934260B2 (en) Streamlined analytic model training and scoring system
CN107423085B (zh) 用于部署应用的方法和装置
US10013500B1 (en) Behavior based optimization for content presentation
WO2020156389A1 (zh) 信息推送方法和装置
WO2017167095A1 (zh) 一种模型的训练方法和装置
WO2020093289A1 (zh) 资源推荐方法、装置、电子设备及存储介质
US20220245424A1 (en) Microgenre-based hyper-personalization with multi-modal machine learning
CN110474820B (zh) 流量回放方法、装置、电子设备
CN109992715B (zh) 信息展示方法、装置、介质和计算设备
WO2022088082A1 (zh) 基于缺陷检测的任务处理方法、装置及设备及存储介质
CN112653579B (zh) 一种基于OpenResty的灰度发布方法及相关设备
WO2022083093A1 (zh) 图谱中的概率计算方法、装置、计算机设备及存储介质
US20230153660A1 (en) Cross-domain action prediction
WO2021203918A1 (zh) 用于处理模型参数的方法和装置
WO2023185925A1 (zh) 一种数据处理方法及相关装置
JP7030095B2 (ja) ナレーションを生成するための方法、装置、サーバー、コンピュータ可読記憶媒体及びコンピュータプログラム
US11042583B2 (en) Systems and methods for real-time multi-party recommendation in a peer to peer communication
WO2024017283A1 (zh) 一种模型训练系统、方法及相关设备
CN116204709A (zh) 一种数据处理方法及相关装置
WO2023050143A1 (zh) 一种推荐模型训练方法及装置
US11042706B2 (en) Natural language skill generation for digital assistants
CN115687810A (zh) 网页搜索方法、装置及相关设备
CN113761004A (zh) 网络模型数据处理、数据展示方法、装置和存储介质

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 23842345

Country of ref document: EP

Kind code of ref document: A1