CN108139887B - 跨硬件加速器并行化矩阵分解的方法和系统 - Google Patents
跨硬件加速器并行化矩阵分解的方法和系统 Download PDFInfo
- Publication number
- CN108139887B CN108139887B CN201680061227.4A CN201680061227A CN108139887B CN 108139887 B CN108139887 B CN 108139887B CN 201680061227 A CN201680061227 A CN 201680061227A CN 108139887 B CN108139887 B CN 108139887B
- Authority
- CN
- China
- Prior art keywords
- matrix
- partition
- accelerators
- value
- partitions
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
Abstract
用于跨硬件加速器并行化矩阵分解的计算机实现的方法包括接收评分矩阵R。在R的矩阵分解中计算矩阵X,其中X的计算基于矩阵ΘT,并且其中R≈X·ΘT。此外,计算矩阵X包括为变量p选择第一值并为变量q选择第二值;将ΘT按列划分为ΘT的p个分区;将X按行划分为X的q个分区;并将R按行和列划分为R的p*q个分区。计算矩阵X进一步包括向多个加速器中的每个加速器复制ΘT的对应分区以及对应于所述加速器并对应于X的当前分区的R的分区。计算所述矩阵X还包括由所述多个加速器计算针对X的当前分区的多个部分解,以及将所述多个部分解聚合成针对X的当前分区的解。
Description
技术领域
本发明的实施例涉及矩阵分解(matrix factorization),更具体地,涉及跨硬件加速器并行化矩阵分解。
背景技术
矩阵分解,也称为矩阵完成(matrix completion),是一种从观测值中导出潜在特征的强大算法。矩阵分解的一般形式如下:给定一个观测矩阵R,其中有一些观测项和一些缺失项,R可以通过两个稠密的低秩矩阵X和ΘT(即Θ的转置)的相乘来近似,其形式为R≈X·ΘT。
矩阵分解广泛用于推荐系统中,其中R是记录用户对项目的评分的评分矩阵(即,用户-项目矩阵)。随着推荐在互联网应用(包括电子商务、数字内容流和搜索引擎广告)中的普及,矩阵分解被认为是协作过滤的最佳方法之一。最近,矩阵分解也被应用于文本挖掘中以导出单词的隐藏特征。
考虑到矩阵分解的广泛应用和多功能性,有效的实现是重要的。
发明内容
根据本公开的实施例,一种计算机实现的方法包括接收评分矩阵R。在R的矩阵分解中计算矩阵X,其中X的计算基于矩阵ΘT,并且其中R≈X·ΘT。此外,计算矩阵X包括为变量p选择第一值并为变量q选择第二值;将ΘT按列划分为ΘT的p个分区;将X按行划分为X的q个分区;并将R按行和列划分为R的p*q个分区。计算矩阵X进一步包括向多个加速器中的每个加速器复制ΘT的对应分区以及对应于所述加速器并对应于X的当前分区的R的分区。计算所述矩阵X还包括由所述多个加速器计算针对X的当前分区的多个部分解,以及将所述多个部分解聚合成针对X的当前分区的解。
在另一个实施例中,一种系统包括存储器和通信地耦合到存储器的一个或多个计算机处理器。该一个或多个计算机处理器被配置得接收评分矩阵R。该一个或多个计算机处理器被配置得在R的矩阵分解中计算矩阵X,其中X的计算基于矩阵ΘT,并且其中R≈X·ΘT。为了计算矩阵X,该一个或多个计算机处理器进一步被配置得为变量p选择第一值并为变量q选择第二值;将ΘT按列划分为ΘT的p个分区;将X按行划分为X的q个分区;并将R按行和列划分为R的p*q个分区。为了计算矩阵X,该一个或多个计算机处理器进一步被配置得向多个加速器中的每个加速器复制ΘT的对应分区以及对应于所述加速器并对应于X的当前分区的R的分区。为了计算矩阵X,该一个或多个计算机处理器进一步被配置得在所述多个加速器计算针对X的当前分区的多个部分解,以及将所述多个部分解聚合成针对X的当前分区的解。
在又一个实施例中,用于矩阵分解的计算机程序产品包括具有用其体现的程序指令的计算机可读存储介质。程序指令可由处理器执行以使处理器执行一方法。该方法包括接收评分矩阵R。进一步根据该方法,在R的矩阵分解中计算矩阵X,其中X的计算基于矩阵ΘT,并且其中R≈X·ΘT。此外,计算矩阵X包括为变量p选择第一值并为变量q选择第二值;将ΘT按列划分为ΘT的p个分区;将X按行划分为X的q个分区;并将R按行和列划分为R的p*q个分区。计算矩阵X进一步包括向多个加速器中的每个加速器复制ΘT的对应分区以及对应于所述加速器并对应于X的当前分区的R的分区。计算所述矩阵X还包括由所述多个加速器计算针对X的当前分区的多个部分解,以及将所述多个部分解聚合成针对X的当前分区的解。
通过本发明的技术来实现额外的特点和优点。本文详细描述了本发明的其他实施例和方方面面,并且将其视为要求保护的本发明的一部分。参考说明书和附图可更好地理解具有这些优点和特点的本发明。
附图说明
被认为是本发明的主题,在说明书结尾处的权利要求中被特别指出并清楚地要求保护。从以下结合附图的详细描述中,本发明的上述和其它特征以及优点是显而易见的,其中:
图1是根据本公开的一些实施例的矩阵分解系统的图;
图2是根据本公开的一些实施例的用于执行矩阵分解的方法的流程图;
图3是根据本公开的一些实施例的矩阵分解系统的第二图;和
图4是根据本公开的一些实施例的用于实现矩阵分解系统的一些或所有方面的计算机系统的框图。
具体实施方式
矩阵分解处理的技术挑战在于两个主要方面:规模和速度。
尽管许多现有技术针对中型问题,诸如电影推荐,其涉及大约50万个用户、2万个项目(items)和1亿个评分,但行业规模推荐问题已演变得比这样的中型问题大两个数量级。例如,建议涉及10亿用户、数百万项目和超过1000亿个评分。传统系统无法有效处理这种规模的推荐问题。
关于速度,在很多在线应用中使用矩阵分解,其中推荐需要立即适应变化或趋势。为了达到足够的速度,一些常规技术需要具有高管理复杂性的大型(例如,50节点的)分布式集群(clusters),并且仍然可能导致次优性能。
在图形处理单元(GPU)上实现大规模矩阵分解存在许多挑战。例如,许多基于中央处理单元(CPU)的矩阵分解方法使用随机梯度下降(SGD),将输入评分矩阵分解为块,并使用复杂的块调度来避免更新冲突。尽管以前的工作能够在数十个CPU内核上并行分割矩阵,但这些技术需要大量努力才能扩展到GPU上的数千个内核。此外,矩阵分解本质上是稀疏的和内存限制的,这使得很难利用GPU的计算能力。此外,GPU上的大规模矩阵分解受GPU的内存和互连带宽的限制。
图1是根据本公开的一些实施例的矩阵分解系统100的图。在一些实施例中,矩阵R是评分矩阵(即,用户-项目矩阵),其中每个R(ij)是用户i对项目j的评分。矩阵R可以是代表m个用户和n个项目的m乘n矩阵。如图所示,矩阵分解系统100可以通过矩阵分解将R分解成矩阵X和ΘT,其中X是m乘f矩阵,ΘT是f乘n矩阵,使得R≈X·ΘT。此外,表示X的第u行,其中xu是它的转置,并且θv表示ΘT的第v列,其中是它的转置。本领域的技术人员将会理解如何基于评分矩阵R利用所得到的X和ΘT来向用户提供项目的推荐。
本文中矩阵分解系统100的一些实施例用交替最小二乘(ALS)算法代替广泛使用的随机梯度下降(SGD)。通常,ALS在计算上比SGD更昂贵,但本质上是平行的,因此使得矩阵分解系统100的一些实施例能够利用多个(例如,数千个)GPU内核。尽管本公开全文涉及到GPU的使用,但本领域技术人员将理解,可以使用其他硬件加速器来代替GPU。因此,在本公开中提及GPU的情况下,将理解的是可以替换为某种其他硬件加速器。
矩阵分解系统100可以使用ALS方法,并且因此可以在固定θ时首先确定X,然后在固定X的同时确定θ。考虑:
这导致以下等式:
在矩阵分解系统100的一些实施例中,可以用以下的解(solution)来更新xu和θv:
上面的方程对在这里将被称为解方程(solution equations)。
通过这些解方程,矩阵分解系统100可以使用ALS算法以交替方式更新X和Θ。从经验上讲,ALS通常收敛于5-20次完整迭代,其中每个完整迭代包括X的更新和Θ的更新。
随着变量m、n、Nz和f变大—其中Nz是矩阵R中非零元素的数量,ALS受限于单个GPU的存储器容量。现有的CPU方法只能部分解决这个存储器容量问题。被称为并行ALS(PALS)的一种这样的技术,按行划分X和R,并通过复制ΘT来并行地解析每个分区。但是,这种模型并行性只有在ΘT较小时才可行。Apache Spark(SparkALS)的ALS实现是另一种CPU方法,它按行划分X和R,然后并行地解析X的每个分区。该方法对PALS的改进是,SparkALS不是复制ΘT,而是将ΘT划分为重叠的分区,其中每个ΘT分区仅包含对X的适用分区中的所有xu来说必要的θv个列。
然而,SparkALS有几个缺陷。例如,从X的分区生成ΘT的分区是一个耗时的图分区任务。将ΘT的每个分区转移到X的分区涉及大量的网络流量,特别是当Nz远大于m时。此外,ΘT的分区可能仍然太大而不适合单个节点,尤其是当Nz远大于m时。
相比之下,本矩阵分解系统100的一些实施例改进存储器访问以便改善单个GPU的性能,并且进一步在多个GPU中并行ALS以处理大数据集。
在分布式机器学习中,模型并行性(例如,在矩阵分解中求解X的Θ并行性)在多个学习器(learner)之间划分参数,其中每个学习器学习参数的一个子集,而数据并行性(例如,矩阵分解中的R中的并行性)在多个学习器之间划分训练数据,其中每个学习器从其局部观察中学习所有参数。矩阵分解系统100的一些实施例可以组合这两个方案,当模型参数和训练数据都很大时,这实现了良好的结果。
按照一些实施例,左侧厄米特(Hermitian)矩阵Au和右侧厄米特矩阵Bu定义如下:
在矩阵分解系统100的一些实施例中,模型并行性提供了在同一GPU上计算1≤j≤q的一个分区X(j)中的所有Au(在段落21中定义)。因此,在一些实施例中,将ΘT的子集从CPU存储器传送到该特定GPU。此外,矩阵分解系统100的数据并行方法可以在多个GPU之间分配每个厄米特矩阵Au的计算。代替将全部θvs转移到一个GPU,矩阵分解系统100可以使用局部(local)θvs计算每个GPU上的局部Au,并且稍后可以减少或聚集局部Aus,如下面将更详细描述的那样。
可以以数据平行(data-parallelism)的形式如下地计算每个厄米特矩阵Au:
在由矩阵分解系统100的一些实施例执行的用于基于Θ来更新X的以下算法中说明了该方法。
上述算法基于Θ来求解X.然而,本领域技术人员将会理解如何改造该算法以基于X来求解Θ。在一些实施例中,矩阵分解系统100的每个完整迭代可以包括根据上述算法,先基于Θ求解X,再基于X求解Θ;或先基于X求解Θ,再基于Θ求解X。这些完整的迭代可以重复执行,直到满足终止条件。例如,当X和Θ的值收敛时,或者完成了阈值数量的完整迭代时,完整的迭代可以终止。
图2是根据本公开的一些实施例的用于基于上述算法执行矩阵分解的方法200的流程图。
在框205处,可以选择变量p和q的值以在该方法200中划分数据。这些变量的选择将在下面进一步描述。
在框210处,可以将矩阵ΘT按列划分(即,分割)为p个分区。在一些实施例中,可以在划分之前初始化ΘT。例如—但不作为限制,可以将ΘT的每个元素设置为小的随机数,例如-0.5至0.5之间的数。在框215处,可将矩阵X按行划分为q个分区。在框220处,接着X和ΘT的分区,可以将评分矩阵R按行和列划分成p*q个分区。框210至220对应于上面提供的算法的2至4行。
在框225处,可以将ΘT的每个分区复制到对应的GPU。更具体地说,对于1≤i≤p的每个i,可以将由ΘT(i)表示的ΘT的第i个分区复制到GPUi。框225对应于上述算法的第5至7行。
对于描述迭代循环的以下各框,使用迭代变量i和j,二者的初始值都是1。然而,应该理解,也可以使用其他实现迭代循环的手段。
在框230处,可以为外循环的一个迭代选择X的第j个分区,称为X(j)。可以针对X的每个分区执行该外循环。在一些实施例中,该外循环可以是顺序循环,而不是并行化的。然而,在一些其他实施例中,给定比ΘT的分区更多的GPU(即,如果GPU的数量大于p),可以并行化该外循环。为单个迭代对X的分区的这个选择,对应于上述算法的第8行。
在框235处,可以并行化在ΘT的p个分区上的内循环。可以使用多个线程,每个线程执行其被分配的迭代。在一些实施例中,可以用p个线程进行并行化,其中每个线程i被分配一个分区ΘT(i),并且使用相应的GPUi。然而,如果没有足够数量的GPU来使每个线程在相应的GPU上执行一个迭代(即,如果GPU的数量小于p),则可以至少部分地将该内循环实现为顺序循环。这个并行化对应于上述算法的第9行。
在框238处,可将对应于ΘT的每个分区的R的分区复制到对应于该ΘT分区的GPU。例如,可以把每个R(ij)复制到对应的GPUi。框238对应于上述算法的第10行。
在框240处,对应于ΘT的每个分区的GPU可以针对X的所选分区的每一行计算局部Au。具体而言,对于X的所选分区中的每个行xu,每个GPUi可以基于ΘT(i)和R(ij)计算局部左侧厄米特Au。该计算可以如下进行:
GPU可以进一步计算局部右侧厄米特矩阵,如下所示:
在对应于上述算法的第12行的框245处,可以使执行内循环的迭代的各种并行线程同步。换句话说,在进行到框250之前,矩阵分解系统100可以等待所有线程完成上述操作。
在框250处,在每个GPUi处,可以按X(j)的行(例如,均匀地)对A(ij)和B(ij)进行划分。例如,可以将GPUi上的A(ij)均匀地分成p个部分将B(ij)均匀地划分为框250对应于上述算法的第13至14行。
在框255处,可以在p个GPU上将p个A(ij)和p个B(ij)并行缩减为全局(global)A(j)和B(j)。每个GPUi可以执行每个A(kj)的分区i的缩减,1≤k≤p。框255对应于上述算法的第15至16行。
在框260处,可以在p个GPU上同时求解p个分区。具体而言,例如,每个GPUi可以求解(solve)其在方框255处缩减过的本地(local)分区换句话说,如上述解方程所描述的那样,可以在每个GPU上执行对X(j)的部分求解。
在框263,可以聚合这些部分解,以得到针对X(j)的解。
在判定框265,可以确定是否j<q,其指示仍然有剩余的X(j)要被选择。如果j<q,则在框270处,可以递增j,然后方法200可以返回到框230。
框210到270基于ΘT更新X。然而,如上所述,这仅仅是一个完整迭代的一部分,其可以进一步包括基于X来更新ΘT。因此,在框275处,可以基于X来更新ΘT。本领域的技术人员将会理解如何应用上述算法和方法200来基于X更新ΘT。然而,将这些操作总结如下:将XT按列划分成XT的p个分区;将Θ按行划分为Θ的q个分区;将RT按行和列划分为RT的p*q个分区;向每个加速器复制一个对应的XT分区;向每个加速器复制对应于该加速器并且对应于Θ的当前分区的一个RT分区;通过加速器计算Θ的当前分区的一组部分解;并将Θ的当前分区的这些部分解聚合为Θ的当前分区的解。
在判定框280处,可以确定是否满足终止条件。如果不是,则方法200可以返回到方框210以执行另一个完整的迭代。然而,如果满足终止条件,那么方法200可以因已经为X和ΘT求解而结束。
图3是根据本公开的一些实施例的矩阵分解系统100的第二个图,其图示了上述算法和方法200。如所示出的,在一些实施例中,ΘT可以被均匀地垂直划分,并可存储在诸如GPU之类的p个加速器310上。X可以被均匀地水平划分,并可分批求解,从而实现模型并行性。每个X批次可以跨p个加速器310并行求解,从而实现数据并行性。
如上所述,变量p和q的值可以确定X、ΘT和R如何被划分。因此,在划分之前,可以选择p和q的值,这可以发生在上述方法200的框205处。
根据以上描述,在一些实施例中,单个GPU具有X(j)、ΘT(i)、R(ij)、A(j)和B(j)。因此,在一些实施例中,p和q的选择受以下公式的限制,其中C是GPU的存储器容量,并且其中∈是为零个或更多杂项小变量分配的净空间(headroom)空间:
例如,容量C可以是12GB,并且∈可以是500MB。
在一些实施例中,p可以被指派为1的值,在这种情况下,X可以在单个GPU上按顺序批量被求解。如果q>1且p=1,则在一些实施例中,q不需要进一步增加,因为已经不需要进一步划分X.
在一些实施例中,一个或多个自动化的或人类的资源管理者可以跟踪资源可用性和成本限制,并且矩阵分解系统100可以与这些资源管理者通信以确定p和q的值。因此,p和q可能至少部分基于成本约束、资源可用性或两者而定。
图4示出了根据一些实施例的用于实现矩阵分解系统100或方法200的计算机系统400的框图。这里描述的矩阵分解系统100和方法200可以用硬件、软件(例如固件)或其组合来实现。在一些实施例中,所描述的方法可以至少部分地以硬件实现并且可以是专用或通用计算机系统400的微处理器的一部分,诸如个人计算机、工作站、小型计算机或大型计算机。
在一些实施例中,如图4所示,计算机系统400包括处理器405,耦合到存储器控制器415的存储器410,以及一个或多个输入设备445和/或输出设备440,例如外围设备,它们通过本地输入/输出(I/O)控制器435通信地耦合。这些设备440和445可以包括例如打印机、扫描仪、麦克风等。诸如常规键盘450和鼠标455的输入设备可以耦合到I/O控制器435。I/O控制器435可以是例如一个或多个总线,或本领域已知的其他有线或无线连接。为了简化,图中省略了I/O控制器435可以具有的、用以实现通信的其它元件,诸如控制器、缓冲器(高速缓存)、驱动器、中继器和接收器。
I/O设备440、445还可以包括传输输入和输出两者的设备,例如磁盘和磁带存储器、网络接口卡(NIC)或调制器/解调器(用于访问其他文件、设备、系统、或网络)、射频(RF)或其他收发器、电话接口、网桥、路由器等。
处理器405是用于执行硬件指令或软件的硬件设备,尤其是存储在存储器410中的那些硬件指令或软件。处理器405可以是定制的或商业可用的处理器、中央处理单元(CPU),与计算机系统400相关联的若干处理器中的辅助处理器、基于半导体的微处理器(以微芯片或芯片组的形式),宏处理器或用于执行指令的其他设备。处理器405包括高速缓存470,高速缓存470可以包括—但不限于—用于加速可执行指令提取的指令高速缓存、用于加速数据提取和存储的数据高速缓存以及用于为可执行指令和数据提供虚拟到物理地址转换而加速数据提取和存储的转换后备缓冲器(TLB)。高速缓存470可以被组织为更多高速缓存级别(L1,L2等)的分层结构。
存储器410可以包括易失性存储器元件(例如随机存取存储器(RAM),诸如DRAM、SRAM、SDRAM等)和非易失性存储器元件(例如ROM、可擦除可编程只读存储器(EPROM)、电子可擦除可编程只读存储器(EEPROM),可编程只读存储器(PROM)、磁带、光盘只读存储器(CD-ROM)、磁盘、软盘、盒式磁带或磁带等等)或它们的组合。此外,存储器410可以包含电子、磁性、光学或其他类型的存储介质。注意,存储器410可以具有分布式架构,其中各个部件彼此远离,但是可以由处理器405访问。
存储器410中的指令可以包括一个或多个单独的程序,其中的每一个包括用于实现逻辑功能的可执行指令的有序列表。在图4的示例中,存储器410中的指令包括合适的操作系统(OS)411。操作系统411本质上可以控制其他计算机程序的执行,并提供调度、输入输出控制、文件和数据管理、内存管理以及通信控制和相关服务。
例如包括用于处理器405的指令或其他可检索信息的附加数据可以存储在存储装置420中,存储装置420可以是诸如硬盘驱动器或固态驱动器之类的存储装置。存储在存储器410中或存储器420中的指令可以包括使得处理器能够执行本公开的矩阵分解系统100和方法200的一个或多个方面的指令。
计算机系统400还可以包括耦合到显示器430的显示器控制器425。在一些实施例中,计算机系统400还可以包括用于耦合到网络465的网络接口460。网络465可以是用于通过宽带连接在计算机系统400与外部服务器、客户端等之间进行通信的基于IP的网络。网络465在计算机系统400和外部系统之间传输和接收数据。在一些实施例中,网络465可以是由服务提供商管理的受管IP网络。网络465可以以无线方式实现,例如使用无线协议和技术,诸如WiFi,WiMax等。网络465还可以是分组交换网络,例如局域网、广域网、城域网、因特网或其他类似的网络环境。网络465可以是固定无线网络、无线局域网(LAN)、无线广域网(WAN)、个域网(PAN)、虚拟专用网络(VPN)、内联网或其他合适的网络系统,并可以包括用于接收和发送信号的设备。
根据本公开的矩阵分解系统100和方法200可全部或部分地体现在计算机程序产品中或计算机系统400中,诸如图4所示。
一些实施例的技术效果和益处包括使得矩阵分解能够利用多个GPU内核。此外,一些实施例改善了ALS中的存储器访问,包括减少不连续的存储器访问,在更快的存储器中保留热点变量以及积极使用寄存器,以便接近单个GPU的最高性能。另外,一些实施例将数据并行性与ALS中的模型并行性组合,并且应用创新的并行缩减方法来有效地同时利用多个GPU。
这里使用的术语仅用于描述特定实施例的目的,而不意图限制本发明。如本文所使用的,除非上下文另外清楚地指出,否则单数形式“一”,“一个”和“该”旨在也包括复数形式。将进一步理解的是,当在本说明书中使用时,术语“包括”和/或“包含”指定所陈述的特征、整体、步骤、操作、元件和/或组件的存在,但不排除存在或添加一个或多个其他特征、整体、步骤、操作、元件、部件和/或其组合。
下面的权利要求中的所有装置或步骤加功能元件的对应结构、材料、动作和等同物旨在包括用于结合具体要求保护的其他要求保护的元件执行功能的任何结构、材料或动作。已经出于说明和描述的目的给出了对本发明的描述,但是该描述并不是穷举性的,或者要以所公开的形式限制本发明。在不脱离本发明的范围和精神的情况下,许多修改和变化对于本领域的普通技术人员将是显而易见的。对实施例的选择和描述是为了最好地解释本发明的原理和实际应用,并且使本领域的其他普通技术人员能够理解本发明,以实现具有适合于预期的特定用途的各种修改的各种实施例。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括其上具有用于使处理器执行本发明的各方面的计算机可读程序指令的一个或多个计算机可读存储介质。
计算机可读存储介质可以是能够保留和存储供指令执行设备使用的指令的有形设备。计算机可读存储介质可以是—例如但不限于—电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述的任何适当组合。计算机可读存储介质的更具体示例的非穷尽列表包括以下:便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)、记忆棒、软盘、机械地编码的装置—例如在其上记录有指令的穿孔卡或凹槽中的凸起结构,以及前述的任何适当组合。这里使用的计算机可读存储介质不应被解释为瞬时信号本身,诸如无线电波或其他自由传播的电磁波,通过波导或其他传输介质传播的电磁波(例如,穿过光纤电缆)或通过导线传输的电信号。
这里描述的计算机可读程序指令可以从计算机可读存储介质下载到相应的计算/处理设备,或者经由网络(例如,因特网、局域网、广域网和/或无线网络)被下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或网络接口从网络接收计算机可读程序指令并且转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行本发明的操作的计算机可读程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微码、固件指令、状态设置数据或者一种或多种程序设计语言(包括面向对象的程序设计语言,诸如Java、Smalltalk、C++等)和常规过程程序设计语言(诸如“C”程序设计语言或类似程序设计语言)的任何组合编写的源代码或目标代码。计算机可读程序指令可以作为独立的软件包完全在用户的计算机上、部分在用户的计算机上执行;部分在用户的计算机上、部分在远程计算机上或完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络—包括局域网(LAN)或广域网(WAN)—连接到用户的计算机,或者可以(例如通过使用互联网服务提供商的互联网)连接到外部计算机。在一些实施例中,包括例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用个性化电子电路的计算机可读程序指令的状态信息来执行计算机可读程序指令,以执行本发明的各个方面。
本文参考根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图来描述本发明的各方面。应该理解,流程图和/或框图中的每个框以及流程图和/或框图中的框的组合可以通过计算机可读程序指令来实现。
这些计算机可读程序指令可以被提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机的处理器或其他可编程数据处理设备的处理器执行的指令创建用于实现在流程图和/或框图的一个或多个框中指定的功能/动作的装置。这些计算机可读程序指令还可以被存储在计算机可读存储介质中,该计算机可读存储介质能指令计算机、可编程数据处理设备和/或其他设备以特定方式运行,使得其中存储有指令的计算机可读存储介质包含包括实现在流程图和/或框图的一个或多个方框中指定的功能/动作的各方面的指令的制品。
计算机可读程序指令还可以被加载到计算机、其他可编程数据处理设备或其他设备上,以使得在计算机、其他可编程装置或其他设备上执行的一系列操作步骤生成计算机实现的过程,使得在计算机、其他可编程装置或其他设备上执行的指令实现在流程图和/或框图的一个或多个框中指定的功能/动作。
附图中的流程图和框图图示了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。就这一点而言,流程图或框图中的每个框可表示指令的、包括用于实现指定的逻辑功能的一个或多个可执行指令的模块、段或部分。在一些替代实施方式中,方框中提到的功能可以不按照附图中指出的顺序发生。例如,取决于所涉及的功能,连续示出的两个框实际上可以基本上同时执行,或者有时可以以相反的顺序执行。还将注意到,框图和/或流程图的每个框以及框图和/或流程图中的框的组合可以由执行指定功能或动作的基于专用硬件的系统来实现,或者执行专用硬件和计算机指令的组合。
已经出于说明的目的而呈现了本发明的各种实施例的描述,但是这些描述并非旨在穷举、也并非是对所公开的实施例的限制。在不脱离所描述的实施例的范围的情况下,许多修改和变化对于本领域的普通技术人员将是显而易见的。本文所使用的术语的选择,是为了最好地解释实施例的原理、实际应用或对市场上发现的技术的技术改进,或者使本领域的其他普通技术人员能够理解本文公开的实施例。
Claims (19)
1.一种用于跨硬件加速器并行化矩阵分解的计算机实现的方法,包括:
接收评分矩阵R;
选择变量p的第一值并选择变量q的第二值;
计算矩阵分解R中的矩阵X,其中矩阵X的计算基于矩阵ΘT,其中R≈X·ΘT,并且其中计算矩阵X包括:
将ΘT按列划分为ΘT的p个分区;
将X按行划分为X的q个分区;
将R按行和列划分为R的p*q个分区;
向多个加速器中的每个加速器复制ΘT的对应分区;
向所述多个加速器中的每个加速器复制对应于所述加速器并对应于X的当前分区的R的分区;
由所述多个加速器计算针对X的当前分区的多个部分解;和
将所述针对X的当前分区的多个部分解聚合成针对X的当前分区的解,
2.如权利要求1所述的计算机实现的方法,还包括计算矩阵R的矩阵分解的矩阵ΘT,其中计算矩阵ΘT基于X,并且其中计算矩阵ΘT包括:
将XT按列划分为XT的p个分区;
将Θ按行划分为Θ的q个分区;
将RT按行和列划分为RT的p*q个分区;
向所述多个加速器中的每个加速器复制XT的对应分区;
向所述多个加速器中的每个加速器复制对应于所述加速器并对应于Θ的当前分区的RT分区;
由所述多个加速器计算针对Θ的当前分区的多个部分解;和
将针对当前Θ分区的多个部分解聚合成针对当前Θ分区的解。
3.如权利要求2所述的计算机实现的方法,还包括重复计算矩阵X和计算矩阵ΘT,直到满足终止条件。
4.如权利要求1所述的计算机实现的方法,其中所述计算X的多个部分解是通过并行线程执行的。
5.如权利要求1所述的计算机实现的方法,其中所述多个加速器是图形处理单元。
7.如权利要求1所述的方法,还包括基于X和ΘT来确定对用户的项目的一个或多个推荐。
8.一种用于执行矩阵分解的系统,包括:
存储器;
多个加速器;和
一个或多个计算机处理器,其通信地耦合到所述存储器,所述一个或多个计算机处理器被配置为:
接收评分矩阵R;
选择变量p的第一值并选择变量q的第二值;
计算矩阵分解R中的矩阵X,其中矩阵X的计算基于矩阵ΘT,其中R≈X·ΘT,并且其中计算矩阵X包括:
将ΘT按列划分为ΘT的p个分区;
将X按行划分为X的q个分区;
将R按行和列划分为R的p*q个分区;
向多个加速器中的每个加速器复制ΘT的对应分区;
向所述多个加速器中的每个加速器复制对应于所述加速器并对应于X的当前分区的R的分区;
由所述多个加速器计算针对X的当前分区的多个部分解;和
将所述针对X的当前分区的多个部分解聚合成针对X的当前分区的解,
9.如权利要求8所述的系统,所述一个或多个计算机处理器进一步被配置得计算矩阵R的矩阵分解的矩阵ΘT,其中计算矩阵ΘT基于X,并且其中计算矩阵ΘT包括:
将XT按列划分为XT的p个分区;
将Θ按行划分为Θ的q个分区;
将RT按行和列划分为RT的p*q个分区;
向所述多个加速器中的每个加速器复制XT的对应分区;
向所述多个加速器中的每个加速器复制对应于所述加速器并对应于Θ的当前分区的RT分区;
由所述多个加速器计算针对Θ的当前分区的多个部分解;和
将针对当前Θ分区的多个部分解聚合成针对当前Θ分区的解。
10.如权利要求9所述的系统,所述一个或多个计算机处理器进一步被配置得重复计算矩阵X和计算矩阵ΘT,直到满足终止条件。
11.如权利要求9所述的系统,所述一个或多个计算机处理器进一步被配置得用并行线程来计算X的多个部分解。
12.如权利要求9所述的系统,其中所述多个加速器是图形处理单元。
14.一种计算机可读存储介质,具有其中体现的程序指令,所述程序指令可由处理器执行以使所述处理器执行包括以下步骤的方法:
接收评分矩阵R;
选择变量p的第一值并选择变量q的第二值;
计算矩阵分解R中的矩阵X,其中矩阵X的计算基于矩阵ΘT,其中R≈X·ΘT,并且其中计算矩阵X包括:
将ΘT按列划分为ΘT的p个分区;
将X按行划分为X的q个分区;
将R按行和列划分为R的p*q个分区;
向多个加速器中的每个加速器复制ΘT的对应分区;
向所述多个加速器中的每个加速器复制对应于所述加速器并对应于X的当前分区的R的分区;
由所述多个加速器计算针对X的当前分区的多个部分解;和
将所述针对X的当前分区的多个部分解聚合成针对X的当前分区的解,
15.如权利要求14所述的计算机可读存储介质,所述方法还包括计算矩阵R的矩阵分解的矩阵ΘT,其中计算矩阵ΘT基于X,并且其中计算矩阵ΘT包括:
将XT按列划分为XT的p个分区;
将Θ按行划分为Θ的q个分区;
将RT按行和列划分为RT的p*q个分区;
向所述多个加速器中的每个加速器复制XT的对应分区;
向所述多个加速器中的每个加速器复制对应于所述加速器并对应于Θ的当前分区的RT分区;
由所述多个加速器计算针对Θ的当前分区的多个部分解;和
将针对当前Θ分区的多个部分解聚合成针对当前Θ分区的解。
16.如权利要求15所述的计算机可读存储介质,所述方法还包括重复计算矩阵X和计算矩阵ΘT,直到满足终止条件。
17.如权利要求14所述的计算机可读存储介质,其中所述计算X的多个部分解是通过并行线程执行的。
18.如权利要求14所述的计算机可读存储介质,其中所述多个加速器是图形处理单元。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/920,111 US20170116156A1 (en) | 2015-10-22 | 2015-10-22 | Parallelizing matrix factorization across hardware accelerators |
US14/920,111 | 2015-10-22 | ||
PCT/IB2016/056101 WO2017068463A1 (en) | 2015-10-22 | 2016-10-12 | Parallelizing matrix factorization across hardware accelerators |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108139887A CN108139887A (zh) | 2018-06-08 |
CN108139887B true CN108139887B (zh) | 2022-09-13 |
Family
ID=58556770
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680061227.4A Active CN108139887B (zh) | 2015-10-22 | 2016-10-12 | 跨硬件加速器并行化矩阵分解的方法和系统 |
Country Status (4)
Country | Link |
---|---|
US (2) | US20170116156A1 (zh) |
JP (1) | JP2018535478A (zh) |
CN (1) | CN108139887B (zh) |
WO (1) | WO2017068463A1 (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10169275B2 (en) | 2015-11-27 | 2019-01-01 | International Business Machines Corporation | System, method, and recording medium for topology-aware parallel reduction in an accelerator |
US11544539B2 (en) * | 2016-09-29 | 2023-01-03 | Tsinghua University | Hardware neural network conversion method, computing device, compiling method and neural network software and hardware collaboration system |
US10637733B2 (en) | 2018-09-25 | 2020-04-28 | International Business Machines Corporation | Dynamic grouping and repurposing of general purpose links in disaggregated datacenters |
US11650849B2 (en) | 2018-09-25 | 2023-05-16 | International Business Machines Corporation | Efficient component communication through accelerator switching in disaggregated datacenters |
US10831698B2 (en) | 2018-09-25 | 2020-11-10 | International Business Machines Corporation | Maximizing high link bandwidth utilization through efficient component communication in disaggregated datacenters |
US10802988B2 (en) | 2018-09-25 | 2020-10-13 | International Business Machines Corporation | Dynamic memory-based communication in disaggregated datacenters |
US11163713B2 (en) | 2018-09-25 | 2021-11-02 | International Business Machines Corporation | Efficient component communication through protocol switching in disaggregated datacenters |
US11182322B2 (en) | 2018-09-25 | 2021-11-23 | International Business Machines Corporation | Efficient component communication through resource rewiring in disaggregated datacenters |
US10671557B2 (en) | 2018-09-25 | 2020-06-02 | International Business Machines Corporation | Dynamic component communication using general purpose links between respectively pooled together of like typed devices in disaggregated datacenters |
US10915493B2 (en) | 2018-09-25 | 2021-02-09 | International Business Machines Corporation | Component building blocks and optimized compositions thereof in disaggregated datacenters |
US11012423B2 (en) | 2018-09-25 | 2021-05-18 | International Business Machines Corporation | Maximizing resource utilization through efficient component communication in disaggregated datacenters |
CN109445752B (zh) * | 2018-10-10 | 2019-10-15 | 西安交通大学 | 一种并行计算的系统 |
US20200364047A1 (en) * | 2019-05-16 | 2020-11-19 | Facebook, Inc. | High throughput neural network operations using inter-layer memory layout transformation |
CN110415160B (zh) * | 2019-06-29 | 2022-06-07 | 苏州浪潮智能科技有限公司 | 一种gpu拓扑分区方法与装置 |
CN111125620B (zh) * | 2019-11-01 | 2023-04-07 | 复旦大学 | 推荐系统中基于矩阵分解的并行随机梯度下降方法 |
US20220027434A1 (en) * | 2020-07-23 | 2022-01-27 | International Business Machines Corporation | Providing recommendations via matrix factorization |
WO2022057600A1 (zh) * | 2020-09-15 | 2022-03-24 | 安徽寒武纪信息科技有限公司 | 一种加速单元、加速组件、加速装置以及电子设备 |
CN115221101B (zh) * | 2021-04-16 | 2023-12-19 | 中科寒武纪科技股份有限公司 | 用于优化片上系统的矩阵乘操作的方法和相关产品 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101661457A (zh) * | 2008-08-29 | 2010-03-03 | 国际商业机器公司 | 多处理器系统的三角线性方程组求解的方法和装置 |
CN103810227A (zh) * | 2012-11-08 | 2014-05-21 | 索尼公司 | 信息处理设备和信息处理方法 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0428191D0 (en) * | 2004-12-23 | 2005-01-26 | Cambridge Display Tech Ltd | Digital signal processing methods and apparatus |
CN101533386A (zh) * | 2008-03-14 | 2009-09-16 | 国际商业机器公司 | 在多处理器系统上对矩阵进行qr分解的方法和装置 |
CN101561797A (zh) * | 2008-04-14 | 2009-10-21 | 国际商业机器公司 | 在处理系统上对矩阵进行奇异值、特征值分解的方法和装置 |
CN101571795B (zh) * | 2009-06-05 | 2011-02-09 | 华为终端有限公司 | 集成电路和集成电路解方程的方法 |
US8903748B2 (en) * | 2011-06-27 | 2014-12-02 | International Business Machines Corporation | Systems and methods for large-scale randomized optimization for problems with decomposable loss functions |
CN102426686A (zh) * | 2011-09-29 | 2012-04-25 | 南京大学 | 一种基于矩阵分解的互联网信息产品推荐方法 |
US9384168B2 (en) * | 2013-06-11 | 2016-07-05 | Analog Devices Global | Vector matrix product accelerator for microprocessor integration |
US9471377B2 (en) * | 2013-11-13 | 2016-10-18 | Reservoir Labs, Inc. | Systems and methods for parallelizing and optimizing sparse tensor computations |
US10235403B2 (en) * | 2014-07-08 | 2019-03-19 | Palo Alto Research Center Incorporated | Parallel collective matrix factorization framework for big data |
CN104537278A (zh) * | 2014-12-01 | 2015-04-22 | 中国人民解放军海军工程大学 | 对带假结的rna二级结构预测进行硬件加速的方法 |
-
2015
- 2015-10-22 US US14/920,111 patent/US20170116156A1/en not_active Abandoned
- 2015-11-30 US US14/953,645 patent/US20170116157A1/en not_active Abandoned
-
2016
- 2016-10-12 CN CN201680061227.4A patent/CN108139887B/zh active Active
- 2016-10-12 JP JP2018517154A patent/JP2018535478A/ja active Pending
- 2016-10-12 WO PCT/IB2016/056101 patent/WO2017068463A1/en active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101661457A (zh) * | 2008-08-29 | 2010-03-03 | 国际商业机器公司 | 多处理器系统的三角线性方程组求解的方法和装置 |
CN103810227A (zh) * | 2012-11-08 | 2014-05-21 | 索尼公司 | 信息处理设备和信息处理方法 |
Also Published As
Publication number | Publication date |
---|---|
US20170116156A1 (en) | 2017-04-27 |
WO2017068463A1 (en) | 2017-04-27 |
US20170116157A1 (en) | 2017-04-27 |
JP2018535478A (ja) | 2018-11-29 |
CN108139887A (zh) | 2018-06-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108139887B (zh) | 跨硬件加速器并行化矩阵分解的方法和系统 | |
US10614356B2 (en) | Local multicast in single-host multi-GPU machine for distributed deep learning systems | |
US10949746B2 (en) | Efficient parallel training of a network model on multiple graphics processing units | |
US10078594B2 (en) | Cache management for map-reduce applications | |
US10783437B2 (en) | Hybrid aggregation for deep learning neural networks | |
US10127275B2 (en) | Mapping query operations in database systems to hardware based query accelerators | |
US20190378016A1 (en) | Distributed computing architecture for large model deep learning | |
JP6234477B2 (ja) | 回帰モデルを計算するための方法、コンピュータ・プログラム、およびシステム | |
US20210295168A1 (en) | Gradient compression for distributed training | |
US20160283158A1 (en) | Accessing global data from accelerator devices | |
US10628740B2 (en) | Asynchronous stochastic gradient descent | |
US11120050B2 (en) | Parallel bootstrap aggregating in a data warehouse appliance | |
US9712610B2 (en) | System and method for increasing physical memory page sharing by workloads | |
US10922606B2 (en) | Multi-directional reduction in large scale deep-learning | |
JP7372011B2 (ja) | 深層学習の大規模なモデル・サポート | |
US10839791B2 (en) | Neural network-based acoustic model with softening target-layer | |
WO2021244261A1 (en) | Streamlining data processing optimizations for machine learning workloads | |
Polisetty et al. | Gsplit: Scaling graph neural network training on large graphs via split-parallelism | |
US20170154405A1 (en) | Memory-aware matrix factorization | |
JP7220007B2 (ja) | 並列性及びオンチップ・メモリを介した時間、空間及びエネルギー効率のよいニューラル推論 | |
WO2020262587A1 (ja) | 機械学習装置、機械学習プログラム、及び機械学習方法 | |
Schmidt et al. | Out-of-core GPU-accelerated causal structure learning | |
WO2023109134A1 (en) | Quantum circuit buffering | |
US20230186168A1 (en) | Performing automated tuning of hyperparameters in a federated learning environment | |
US11948056B2 (en) | Communication-efficient data parallel ensemble boosting |
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 |