CN111967590B - 面向推荐系统矩阵分解方法的异构多xpu机器学习系统 - Google Patents

面向推荐系统矩阵分解方法的异构多xpu机器学习系统 Download PDF

Info

Publication number
CN111967590B
CN111967590B CN202011142652.0A CN202011142652A CN111967590B CN 111967590 B CN111967590 B CN 111967590B CN 202011142652 A CN202011142652 A CN 202011142652A CN 111967590 B CN111967590 B CN 111967590B
Authority
CN
China
Prior art keywords
xpu
parameter
data
worker
parameter server
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.)
Active
Application number
CN202011142652.0A
Other languages
English (en)
Other versions
CN111967590A (zh
Inventor
何水兵
黄一智
刘彦
银燕龙
杨弢
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang Lab
Original Assignee
Zhejiang Lab
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 Zhejiang Lab filed Critical Zhejiang Lab
Priority to CN202011142652.0A priority Critical patent/CN111967590B/zh
Publication of CN111967590A publication Critical patent/CN111967590A/zh
Application granted granted Critical
Publication of CN111967590B publication Critical patent/CN111967590B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/06Buying, selling or leasing transactions
    • G06Q30/0601Electronic shopping [e-shopping]
    • G06Q30/0631Item recommendations

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Data Mining & Analysis (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Finance (AREA)
  • Mathematical Analysis (AREA)
  • Accounting & Taxation (AREA)
  • Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Algebra (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Neurology (AREA)
  • Databases & Information Systems (AREA)
  • Computational Linguistics (AREA)
  • Development Economics (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)

Abstract

本发明公开了面向推荐系统矩阵分解方法的异构多XPU机器学习系统,包括参数服务器和与其连接的一组XPU工作器,所述的参数服务器用于数据加载、数据分配,以及矩阵分解算法中参数分发、参数接收和参数更新,XPU工作器用于参数计算和局部更新,参数服务器包括DataManager模块,用于根据XPU工作器的性能计算并提供数据划分信息,XPU工作器包括异步SGD优化器。异构系统的数据采用一级分配,内部共享同一数据锁,当XPU规模变大时,锁开销加剧影响系统性能,利用XPU工作器的异步SGD优化器,使得XPU工作器之间相互无锁,XPU工作器内部独立进行数据分块和调度。

Description

面向推荐系统矩阵分解方法的异构多XPU机器学习系统
技术领域
本发明涉及多异构处理器的协同计算技术领域,是一个面向推荐系统矩阵分解方法的异构多XPU机器学习系统。
背景技术
在推荐系统中,协同过滤(Collaborative Filtering)技术是一种应用非常广泛的技术,其核心思想是,用户在过去一个时间邻域内对某个商品感兴趣,那么在将来的一个时间邻域内同样也会感兴趣。矩阵分解(Matrix Factorization,MF)就是一种基于模型的协同过滤技术。
但当前的MF算法通常针对同构处理器或者小规模异构处理器优化。如多核CPU上的并行MF算法:HogWild!、DSGD、FPSGD、MLGF-MF等,GPU上的并行MF算法:cuMF_SGD,CPU-GPU上的并行MF算法:HSGD。当前的优化方法中,同构处理器优化忽略了系统中其他计算资源的存在,硬件资源利用率较低。而小规模异构处理器优化则仅仅只考虑了1个CPU和1个GPU的情况。在小规模情况下,通过数学证明和反复实验发现,通信开销远远低于计算开销,不影响系统性能。然而,整体系统存在总线抢占和总线上串行传输的问题,使得系统的通信开销与异构系统中XPU的个数正相关。为了应对更大的数据集,例如HugeWiki数据集超过30GB,或者更多的任务,一个计算节点可能拥有多个CPU/GPU/FPGA等。当系统内部增加更多XPU时,各异构处理器间的通信直接制约扩展性。因此,从系统的角度来看,在大规模XPU系统中,并行MF算法不仅仅要考虑任务划分和并行计算,还需要考虑系统中XPU的通信结构和通信效率。
发明内容
为解决现有技术的不足,实现任务划分、并行计算的同时,保证通信效率的目的,本发明采用如下的技术方案:
面向推荐系统矩阵分解方法的异构多XPU机器学习系统,包括参数服务器和与其连接的一组XPU工作器,所述的参数服务器用于数据加载、数据分配,以及矩阵分解算法中参数分发、参数接收和参数更新,XPU工作器用于参数计算和局部更新,参数服务器包括DataManager模块,用于根据XPU工作器的性能计算并提供数据划分信息,XPU工作器包括异步SGD优化器。异构系统的数据分配方法通常采用一级分配,即由一端负责全局数据分块,这使得系统内部共享同一数据锁,当XPU规模变大时,锁开销加剧,系统性能下降,因此利用XPU工作器的异步SGD优化器,使得参数服务器按XPU工作器的能力进行一次数据的全局静态分配,XPU工作器之间是相互无锁的,XPU工作器内部独立进行数据分块和调度。
所述的XPU工作器包括多核CPU工作器和GPU/FPGA工作器,CPU工作器分别与参数服务器和GPU/FPGA工作器连接。系统采用二级异构并行结构:XPU工作器级和XPU工作器内部多线程级,对于多核CPU,可以直接在相关进程中按照CPU核数启动多线程,即CPU中的XPUTask;对于GPU,由所在管理CPU提供进程,并在进程中启动CUDA/OpenCL核函数,即GPU中的XPU Task;对于FPGA,由所在管理CPU提供进程,并在进程中启动OpenCL核函数,即FPGA中的XPU Task。
不同的XPU工作器,分别与参数服务器和CPU工作器连接。由于受限于主板整体架构和PCIE通道数,例如,当一个主板有两个CPU,每个CPU能控制4个PCIE板卡,则选择一个CPU作为参数服务器,并通过4个PCIE板卡直连4个GPU/FPGA工作器,另一个CPU作为CPU工作器,也通过它的4个PCIE板卡直连4个GPU/FPGA工作器,参数服务器与CPU工作器之间通过Socket直连,这样可以最大限度的合理分配XPU工作器。
所述的参数服务器包括同步SGD优化器,在同一轮训练中,XPU工作器之间采用异步SGD优化器计算和局部更新私有参数,在同一轮训练完成前,参数服务器采用同步SGD优化器计算所有XPU工作器的私有参数,并更新生成全局参数。由于XPU工作器之间是是互相无锁的,如图2所示,各XPU可能会同时计算影响参数矩阵更新的数据,导致XPU工作器之间可能出现干扰,为了消除干扰,在参数服务器上设置同步SGD优化器,通过异步SGD优化器和同步SGD优化器的混合使用,使训练参数的过程既保证XPU工作器之间的并行性,又包含了所有分配到XPU工作器中的信息,保证目标函数最终能收敛。
所述的参数服务器和XPU工作器上均设有COMM模块,提供量化参数功能,将10分制以内的参数压缩为FP8,将100分以内的参数压缩为FP16,以降低数据的传输量。由于评分系统大多采用5分、10分、100分制的评分方式,而分值通常使用float类型,每一个数据占4byte,如果压缩为FP8或者FP16格式,仅占1byte或者2byte,但是FP8和FP16会使浮点数的精度下降,但是对于评分分值来说,小数点后3位的精度足够用于训练,因此5分制和10分制都可以压缩为FP8,而100分制就要压缩为FP16。
所述的XPU工作器在计算参数时,标记特征为非零且变化超过设定阈值的参数,通信时只传输标记的参数。通过标记,使得在通信时不传输变化未超阈值,即梯度为0的,以及特征为0的参数,从而降低数据的传输量,提高数据传输效率。
执行过程包括如下步骤:
S1,XPU工作器将自身XPU信息传给参数服务器,参数服务器调用自身DataManager模块计算数据分配的信息;
S2,XPU工作器向参数服务器发送数据请求,参数服务器根据数据分配信息发送对应数据给XPU工作器;
S3,XPU工作器向参数服务器请求初始化参数,参数服务器随机初始化参数;
S4,如果XPU工作器具备并行能力,则依据并行能力网格化数据,建立内部多线程,如果不具备,则进入步骤S5;
S5,XPU工作器从参数服务器Pull参数,参数服务器发送参数给XPU工作器;
S6,XPU工作器并行计算分到的数据,异步更新参数矩阵;
S7,XPU工作器向参数服务器Push计算好的参数,参数服务器同步更新所有XPU工作器的参数,并计算loss;
S8,重复5-7,直到loss合适。
所述的步骤S1,包括如下步骤:
S11,XPU工作器探查并发送自身XPU信息给参数服务器;
S12,XPU工作器向参数服务器发送初始化数据请求,参数服务器调用自身DataManager模块计算数据分配的信息,并发送给XPU工作器;
S13,XPU工作器根据返回的信息,建立相应的接收数据结构;
请求的数据为评分矩阵,参数包括根据评分矩阵分解的P、Q特征参数,P、Q特征参数随每一轮计算过程而发生更新,当评分矩阵行/列数较多时,为XPU工作器按行/列进行数据分配,XPU工作器上用于更新P/Q矩阵的行/列数据不依赖其他XPU工作器上的行/列数据,因此,XPU工作器只在第一轮计算前向参数服务器Pull参数矩阵P和Q,并在最后一轮计算后向参数服务器Push参数矩阵P和Q,中间计算过程仅Pull、Push参数矩阵Q/P,以降低通信数据量。
所述步骤S4的网格化数据,采用正交网格计算特征参数。
本发明的优势和有益效果在于:
统一管理节点内部XPU(CPU/GPU/FPGA)等对矩阵分解进行数据并行和模型并行的协同加速计算,提高系统中资源利用率和MF的训练效率,结合了同步SGD和异步SGD方法,提高并行性的同时,保证了收敛速率,在通信组件中,通过基于数据特征的压缩编码,大幅提高了系统通信效率,保证系统的可扩展性。
附图说明
图1是本发明的系统物理结构示意图。
图2是本发明中评分矩阵数据划分及特征数据冲突部分示意图。
图3a是本发明中矩阵分解方法的初始化原理图。
图3b是本发明中矩阵分解方法的迭代训练原理图。
图4是本发明中系统软件体系示意图。
图5是本发明中系统执行流程框架图。
具体实施方式
以下结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。
在推荐系统中,协同过滤(Collaborative Filtering)技术是一种应用非常广泛 的技术,其核心思想是,用户在过去一个时间邻域内对某个商品感兴趣,那么在将来的一个 时间邻域内同样也会感兴趣。矩阵分解(Matrix Factorization,MF)就是一种基于模型的 协同过滤技术。可以将用户对商品的兴趣建模为一个评分矩阵,其中第
Figure 321758DEST_PATH_IMAGE001
行第n列的元素, 表示用户m对商品n的评分,在矩阵中*部分表示没有记录该用户对该商品的评分,推荐系统 需要对*的数值进行预测。矩阵分解技术的核心思想,如图3a所示,先将评分矩阵R分解为两 个矩阵P和Q,然后如图3b所示,通过矩阵P和矩阵Q的乘积R’预测R中*部分。为了保证预测性 能,需要使用优化器不断迭代优化矩阵P、Q,使它们的积逼近矩阵R。这是典型的机器学习方 法,模型为R=PQ,损失函数使用L2正则化的均方根误差(root mean square error,RMSE), 优化器使用随机梯度下降算法(SGD)。具体步骤如下:
1、随机初始化矩阵P和Q;
2、随机从评分矩阵中选取元素
Figure 238899DEST_PATH_IMAGE002
3、由矩阵
Figure 80953DEST_PATH_IMAGE003
中的第u行和矩阵Q中的第v列相乘获得
Figure 476162DEST_PATH_IMAGE004
相对应,并求出
Figure 290534DEST_PATH_IMAGE002
Figure 972052DEST_PATH_IMAGE004
的误 差:
Figure 239085DEST_PATH_IMAGE005
4、利用随机梯度下降更新
Figure 437985DEST_PATH_IMAGE006
Figure 372443DEST_PATH_IMAGE007
,其中
Figure 365807DEST_PATH_IMAGE008
为学习率,
Figure 120136DEST_PATH_IMAGE009
为正则化参数,公式如下:
Figure 919465DEST_PATH_IMAGE010
Figure 442850DEST_PATH_IMAGE011
5、重复2、3、4步骤,直到损失收敛。
如图1所示,面向推荐系统矩阵分解方法的异构多XPU(CPU/GPU/FPGA)机器学习系统,包括:参数服务器(Server)、CPU工作器(Worker)、GPU/FPGA工作器(Worker),参数服务器选择标准为内存空间大,且与系统内任意其他XPU的距离和最短的CPU,例如一些计算性能较弱但内存较大的CPU作为参数服务器,参数服务器负责数据加载、数据分配,矩阵分解算法中参数分发、参数接收和参数同步更新;CPU工作器和参数服务器上的GPU/FPGA工作器与参数服务器直连,CPU工作器为与参数服务器直连的CPU,采用NUMA架构;非参数服务器上GPU/FPGA工作器与通过相连CPU工作器与参数服务器间接连接,GPU/FPGA工作器是与参数服务器直连或者与CPU工作器连接的GPU/FPGA;XPU工作器均负责参数计算和局部更新。系统采用二级异构并行结构:Worker级和Worker内部多线程级(CPU内部还有向量寄存器和向量指令,如x86 AVX、ARM NEON)。
如图4所示,系统采用C/S架构,Server和Worker的物理主体均为XPU,Server即为参数服务器。对于多核CPU,可以直接在相关进程中按照CPU核数启动多线程,即CPU中的XPUTask;对于GPU,由所在管理CPU提供进程,并在进程中启动CUDA/OpenCL核函数,即GPU中的XPU Task;对于FPGA,由所在管理CPU提供进程,并在进程中启动OpenCL核函数,即FPGA中的XPU Task。例如,1个10核心Worker CPU和2个FPGA/GPU相连,Worker CPU会起3个控制进程,用于抽象和管理这3个Worker节点,其中控制进程用于控制本CPU的工作线程(Worker CPU即有8个线程,由控制进程作为主线程的控制线程和7个工作线程),另两个控制进程用于发起和管理2个FPGA/GPU工作的核函数。
Server包括DataManager模块、COMM模块、SSGD模块,DataManager模块负责根据XPU性能,计算并提供数据划分信息,由Server根据信息划分数据并发送给各XPU;COMM模块负责数据通信和编、解码,当前数据通信采用UDS(Unix domain socket);SSGD/ASGD属于优化器模块,在Worker内部采用ASGD进行异步更新参数,在Server端采用SSGD进行全局参数同步。
异构系统的数据分配方法通常采用一级分配,即由一端负责全局数据分块,这使得系统内部共享同一数据锁,当XPU规模变大时,锁开销加剧,系统性能下降,因此这种数据分配方法并不合适,本系统基于推荐系统矩阵分解算法中所用异步SGD优化器(ASGD)的收敛特性和应用数据的稀疏特性提出一种二级数据分配方法用以克服上述问题,参数服务器按Worker的能力进行一次数据的全局静态分配,具体分配方法为直接按峰值性能比进行分配,因此,Worker间是相互无锁的,Worker内部独立进行数据分块和调度,分块方式:按照线程数的平方分块。
Worker内部采用ASGD,即Worker只计算自己的,因此,对于Worker来说是并行的,但Worker间的计算还是有可能出现干扰,干扰是由于Worker间无锁训练,在训练过程中可能多个Worker在同时训练同一批特征参数,会造成参数数据的相互覆盖或者落后的问题,数据稀疏性会降低同时训练的概率,Server端的SSGD会同步训练步调并消除覆盖影响,包括如下步骤:
1、每一轮迭代中,Worker内部和Worker之间采用异步SGD(ASGD)计算梯度并产生私有特征,即Worker内部的参数更新不需要理会其他Worker,即便是对同一位置的特征矩阵参数进行计算。
2、每一轮迭代完成前,在Server端使用同步SGD(SSGD),计算所有Worker的私有特征参数的平均值,用以更新生成全局特征参数。
通过异步SGD和同步SGD的混合使用,使训练特征参数过程既保证Worker间的并行性,又包含了所有分配到Worker中的信息,保证目标函数最终能收敛。
例如:发生一个数据重叠的问题,如图2所示,每个XPU在计算第二列黑色的评分元素时,都会对特征矩阵Q的第二列产生影响(按公式更新第二列数据),如果直接传给Server,而Server什么都不做,则后传的XPU的计算的Q矩阵第二列会把前面传的覆盖掉,这样第二列的Q就不包含前面XPU中分到的用户对商品的评分信息,如此训练出来的内容就会不准确。通过参数服务器端采用SSGD,需要等所有Worker的SGD都算出后,再进行同步,解决了上述问题,保证每一个XPU中计算出来的数据都能影响到Q,使训练出来的内容更为准确。
如图5所示,执行流程包括如下步骤:
1、Worker类探查自身XPU信息,然后发送给Server类;
2、Worker向Server发送初始化数据请求,Server首先加载数据,然后调用数据分配器根据上述步骤1中收到的XPU信息建立为Worker分配数据的信息,最后将分配数据的信息返回给Worker;
3、Worker根据上述步骤2中返回信息,建立相关接收数据结构;
4、Worker向Server发送数据请求,Server根据分配数据信息发送对应数据给Worker;
5、Worker向Server请求初始化特征数据,Server随机初始化特征数据;
6、如果Worker的XPU具备并行能力,则依据自身的并行能力(物理线程数)网格化数据,如果不具备,进行步骤8;
7、Worker建立内部多线程;
8、Worker从Server端Pull特征数据P和Q,Server发送特征数据给Worker;
9、Worker并行计算分到的数据,异步更新参数矩阵;
10、Worker把计算好的Push特征数据P和Q给Server,Server同步更新所有Worker的特征数据,并计算loss;
重复8-10,直到loss合适。
例如,假定有一个
Figure 935011DEST_PATH_IMAGE012
的评分矩阵,分解为
Figure 176637DEST_PATH_IMAGE013
Figure 451760DEST_PATH_IMAGE014
两个矩阵。系统中有2个CPU、1个GPU、1个FPGA,其中,CPU为10核20线程,CPU1下 连接GPU,CPU2下连接FPGA,CPU/GPU/FPGA理论性能比为1:4:4。
1、Worker将自身XPU信息传给Server,Server将信息交付给DataManager,DataManager会计算出一个大致比例为1:1:4:4的分配比。
2、Worker向Server请求数据,Server从磁盘中加载评分矩阵(例如Netflix、豆瓣 读书的评分等),并按矩阵行分配给CPU1
Figure 157548DEST_PATH_IMAGE015
,CPU2
Figure 492715DEST_PATH_IMAGE015
,GPU1
Figure 80691DEST_PATH_IMAGE016
,FPGA1
Figure 159505DEST_PATH_IMAGE016
,Worker将获得数据网格化。
3、Worker向Server请求初始化特征数据,Server会随机初始化
Figure 657483DEST_PATH_IMAGE013
Figure 715217DEST_PATH_IMAGE014
两个矩阵。
4、Worker创建XPU Task Set,CPU1和CPU2会创建一个CPU Worker抽象进程,每个CPU会起两个控制进程(Linux下进程就是线程),一个控制进程下又会起18个工作线程,用于控制CPU,另一个用于控制GPU或者FPGA的核函数,即CPU1会创建一个GPU Worker抽象进程,其中包含CUDA任务核函数,CPU2会创建一个FPGA Worker抽象进程,其中包含FPGAOpenCL任务核函数。
5、Worker从Server端Pull特征参数P和Q,每一轮计算过程(循环)中,特征参数P、Q,即特征矩阵都会随每一轮计算而发生更新,当评分矩阵行数比列数多时,实际计算过程中,发现P是按行计算更新的,然后我们给XPU分配数据也是按行分配的,此时,每个XPU计算的P不会和其他XPU计算的P发生数据依赖,因此,P的传输只用在第一次分发给每个WorkerXPU用于计算,多轮计算(循环)后,最后一次由Worker XPU传回参数服务器对P进行整合即可,最后一次为loss小于一个可接受的值,即训练收敛。
Server端的COMM根据评分信息量化特征参数,如果评分为10分以下(如豆瓣电影是5分制),则参数会被压缩为FP8,如果评分为100分以下(如Netflix是100分制),则参数会被压缩为FP16。Worker端仅在第一Epoch Pull P矩阵。压缩是为了降低数据的传输量,表示评分通常使用float类型,每一个数据占4 byte,如果压缩为FP8或者FP16格式,仅占1byte或者2byte,传输数据量会降低很多,但是FP8和FP16会使浮点数的精度下降,但是我们发现小数点后3位的精度足够用于训练,10以下的数据用FP8格式足够表示,10以上就需要用FP16来表示。因此5分制和10分制都可以压缩为FP8,而100分制就要压缩为FP16。我们按照FP8和FP16定义的格式,设计了函数进行压缩和解压。FP8采用的自定义格式,FP16采用的标准的IEEE FP16格式。
Worker计算特征参数时,标记特征为非零,且变化超过一定阈值的特征参数(梯度非0),通信时仅传输该部分参数,而梯度为0和特征为0的将不进行通信传输。
6、CPU线程根据网格划分,选择正交网格计算特征参数,GPU/FPGA采用Hogwild!算法计算特征参数。
7、Worker端Push特征参数P和Q给Server,在实际执行过程中,Worker端的COMM会根据评分信息量化特征参数,如果评分为10分以下,则参数会被压缩为FP8,如果评分为100分以下,则参数会被压缩为FP16。Worker端仅在最后一次Epoch Push P矩阵。Server端采用SSGD同步参数。
8、重复5-7直到loss合适。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的范围。

Claims (4)

1.面向推荐系统矩阵分解方法的异构多XPU机器学习方法,其特征在于执行过程包括如下步骤:
S1,XPU工作器将自身XPU信息传给参数服务器,参数服务器调用自身DataManager模块计算数据分配的信息;
S2,XPU工作器向参数服务器发送数据请求,参数服务器根据数据分配信息发送对应数据给XPU工作器;
S3,XPU工作器向参数服务器请求初始化参数,参数服务器随机初始化参数;
S4,如果XPU工作器具备并行能力,则依据并行能力网格化数据,建立内部多线程,如果不具备,则进入步骤S5;
S5,XPU工作器从参数服务器Pull参数,参数服务器发送参数给XPU工作器;
S6,XPU工作器并行计算分到的数据,异步更新参数矩阵;
S7,XPU工作器向参数服务器Push计算好的参数,参数服务器同步更新所有XPU工作器的参数,并计算loss;
S8,重复5-7,直到loss合适。
2.如权利要求1所述的面向推荐系统矩阵分解方法的异构多XPU机器学习方法,其特征在于所述的步骤S1,包括如下步骤:
S11,XPU工作器探查并发送自身XPU信息给参数服务器;
S12,XPU工作器向参数服务器发送初始化数据请求,参数服务器调用自身DataManager模块计算数据分配的信息,并发送给XPU工作器;
S13,XPU工作器根据返回的信息,建立相应的接收数据结构。
3.如权利要求1所述的面向推荐系统矩阵分解方法的异构多XPU机器学习方法,其特征在于请求的数据为评分矩阵,参数包括根据评分矩阵分解的P、Q特征参数,P、Q特征参数随每一轮计算过程而发生更新,当评分矩阵行/列数较多时,为XPU工作器按行/列进行数据分配,XPU工作器上用于更新P/Q矩阵的行/列数据不依赖其他XPU工作器上的行/列数据,因此,XPU工作器只在第一轮计算前向参数服务器Pull参数矩阵P和Q,并在最后一轮计算后向参数服务器Push参数矩阵P和Q,中间计算过程仅Pull、Push参数矩阵Q/P。
4.如权利要求1所述的面向推荐系统矩阵分解方法的异构多XPU机器学习方法,其特征在于所述步骤S4的网格化数据,采用正交网格计算特征参数。
CN202011142652.0A 2020-10-23 2020-10-23 面向推荐系统矩阵分解方法的异构多xpu机器学习系统 Active CN111967590B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011142652.0A CN111967590B (zh) 2020-10-23 2020-10-23 面向推荐系统矩阵分解方法的异构多xpu机器学习系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011142652.0A CN111967590B (zh) 2020-10-23 2020-10-23 面向推荐系统矩阵分解方法的异构多xpu机器学习系统

Publications (2)

Publication Number Publication Date
CN111967590A CN111967590A (zh) 2020-11-20
CN111967590B true CN111967590B (zh) 2021-02-02

Family

ID=73387605

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011142652.0A Active CN111967590B (zh) 2020-10-23 2020-10-23 面向推荐系统矩阵分解方法的异构多xpu机器学习系统

Country Status (1)

Country Link
CN (1) CN111967590B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140310281A1 (en) * 2013-03-15 2014-10-16 Yahoo! Efficient and fault-tolerant distributed algorithm for learning latent factor models through matrix factorization
CN106156810A (zh) * 2015-04-26 2016-11-23 阿里巴巴集团控股有限公司 通用机器学习算法模型训练方法、系统和计算节点
CN108280217A (zh) * 2018-02-06 2018-07-13 南京理工大学 一种基于差分隐私保护的矩阵分解推荐方法
US10157351B1 (en) * 2015-10-20 2018-12-18 Amazon Technologies, Inc. Persona based data mining system
CN110175286A (zh) * 2019-05-17 2019-08-27 山东师范大学 结合成对优化和矩阵分解的产品推荐方法及系统
CN110489223A (zh) * 2019-08-26 2019-11-22 北京邮电大学 一种异构集群中任务调度方法、装置及电子设备

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110162766B (zh) * 2018-02-12 2023-03-24 深圳市腾讯计算机系统有限公司 词向量更新方法和装置
CN110717098B (zh) * 2019-09-20 2022-06-24 中国科学院自动化研究所 基于元路径的上下文感知用户建模方法、序列推荐方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140310281A1 (en) * 2013-03-15 2014-10-16 Yahoo! Efficient and fault-tolerant distributed algorithm for learning latent factor models through matrix factorization
CN106156810A (zh) * 2015-04-26 2016-11-23 阿里巴巴集团控股有限公司 通用机器学习算法模型训练方法、系统和计算节点
US10157351B1 (en) * 2015-10-20 2018-12-18 Amazon Technologies, Inc. Persona based data mining system
CN108280217A (zh) * 2018-02-06 2018-07-13 南京理工大学 一种基于差分隐私保护的矩阵分解推荐方法
CN110175286A (zh) * 2019-05-17 2019-08-27 山东师范大学 结合成对优化和矩阵分解的产品推荐方法及系统
CN110489223A (zh) * 2019-08-26 2019-11-22 北京邮电大学 一种异构集群中任务调度方法、装置及电子设备

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
Matrix Factorization on GPUs with Memory Optimization and Approximate Computing;Wei Tan 等;《arXiv:1808.03843 [cs.DC]》;20180811;全文 *
TensorFlow:异构分布式系统的大规模机器学习;fcwyq;《arXiv:1603.04467v2 [cs.DC]》;20190115;第6页第2段-第24页倒数第2段 *
面向众核平台交替最小二乘法的实现与性能优化;陈静;《中国优秀硕士学位论文全文数据库基础科学辑》;20200215;全文 *
高性能并行分布式嵌入式集群构建与应用研究;黄一智;《中国优秀硕士学位论文全文数据库信息科技辑》;20190315;全文 *

Also Published As

Publication number Publication date
CN111967590A (zh) 2020-11-20

Similar Documents

Publication Publication Date Title
WO2022037337A1 (zh) 机器学习模型的分布式训练方法、装置以及计算机设备
CN115186821B (zh) 面向芯粒的神经网络推理开销估计方法及装置、电子设备
CN114329327B (zh) 基于上下三角分解的稀疏矩阵并行求解方法及装置
WO2002003258A1 (en) Method and apparatus for heterogeneous distributed computation
CN112948123B (zh) 一种基于Spark的网格水文模型分布式计算方法
CN115952385B (zh) 用于大规模稀疏方程组求解的并行超节点排序方法及系统
CN116185937B (zh) 基于众核处理器多层互联架构的二元运算访存优化方法及装置
CN113986816A (zh) 可重构计算芯片
CN115238899A (zh) 面向超导量子计算机的量子程序并行处理方法及操作系统
CN117785490B (zh) 一种图神经网络模型的训练架构、方法、系统及服务器
Li et al. Data analytics for fog computing by distributed online learning with asynchronous update
CN116893904A (zh) 神经网络模型的内存管理方法、装置、设备、介质及产品
US20090064120A1 (en) Method and apparatus to achieve maximum outer level parallelism of a loop
Bhuiyan et al. Fast parallel algorithms for edge-switching to achieve a target visit rate in heterogeneous graphs
Raman et al. Scaling multinomial logistic regression via hybrid parallelism
CN111967590B (zh) 面向推荐系统矩阵分解方法的异构多xpu机器学习系统
CN117093538A (zh) 稀疏Cholesky分解硬件加速系统及其求解方法
CN111400026B (zh) 一种基于主从备份技术的分布式负载均衡方法
Raman et al. DS-MLR: exploiting double separability for scaling up distributed multinomial logistic regression
CN116303219A (zh) 一种网格文件的获取方法、装置及电子设备
Shen et al. Distributed sparse bundle adjustment algorithm based on three-dimensional point partition and asynchronous communication
CN113157806B (zh) 网格数据分布式存储服务系统、方法、装置、设备及介质
CN110415162B (zh) 大数据中面向异构融合处理器的自适应图划分方法
Zhang et al. Optimizing data intensive flows for networks on chips
CN113535410B (zh) 用于gis空间矢量分布式计算的负载均衡方法及系统

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
GR01 Patent grant
GR01 Patent grant