CN112783807B - 一种模型计算方法及系统 - Google Patents
一种模型计算方法及系统 Download PDFInfo
- Publication number
- CN112783807B CN112783807B CN202011640489.0A CN202011640489A CN112783807B CN 112783807 B CN112783807 B CN 112783807B CN 202011640489 A CN202011640489 A CN 202011640489A CN 112783807 B CN112783807 B CN 112783807B
- Authority
- CN
- China
- Prior art keywords
- model
- sub
- queue
- host
- storage
- 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
- 238000000034 method Methods 0.000 title claims abstract description 69
- 238000012821 model calculation Methods 0.000 title claims abstract description 21
- 230000008569 process Effects 0.000 claims abstract description 44
- 238000004364 calculation method Methods 0.000 claims abstract description 29
- 230000005540 biological transmission Effects 0.000 claims abstract description 17
- 230000001360 synchronised effect Effects 0.000 claims abstract description 5
- 230000002441 reversible effect Effects 0.000 claims description 40
- 238000012545 processing Methods 0.000 claims description 19
- 238000010801 machine learning Methods 0.000 claims description 7
- 230000000903 blocking effect Effects 0.000 abstract description 5
- 230000000694 effects Effects 0.000 abstract description 3
- 230000000875 corresponding effect Effects 0.000 description 22
- 238000010586 diagram Methods 0.000 description 15
- 238000012549 training Methods 0.000 description 14
- 238000010606 normalization Methods 0.000 description 9
- 238000013527 convolutional neural network Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 238000011144 upstream manufacturing Methods 0.000 description 4
- 238000013473 artificial intelligence Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000002596 correlated effect Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 238000013468 resource allocation Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000008094 contradictory effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1642—Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Biomedical Technology (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种模型计算方法及系统。本申请将一个模型切分为第一子模型和第二子模型两个子模型,并在存储端计算第一子模型,在主机端计算第二子模型,并在计算过程中,使存储端和主机端同步第一子模型和第二子模型所需的数据。如此一来,存储端要向主机端传输的数据量就会少一些,而主机端要向存储端传输的数据量就会多一些,故上行通道和下行通道所传输的数据量不会有较大差异,并且上下行通道所传输的总数据量将会大大减少,能够缓解数据读取到主机端的堵塞情况,降低数据传输的功耗与时延,有效提升了系统总线的使用率和整体性能。相应地,本申请提供的一种模型计算系统,也同样具有上述技术效果。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种模型计算方法及系统。
背景技术
当前针对人工智能计算吞吐效率的提升,主要通过增加并行算力或提升带宽来解决。比如,通过在GPU中增加更多的计算内核增加并行算力,又如在乘法器输入时保持卷积核对应的缓存的存储值不变,以释放冗余的带宽占用。但是,目前的提升与优化主要是关注主机端范围,很少有技术关注从存储器端优化并提升带宽的使用,从而提升系统智能计算的效率。
随着主机端算力的提高,数据带宽的时延问题越来越凸显。当前,人工智能应用比较广泛的图像领域,多使用卷积神经网路做训练和推理,数据的传输时间占去了整个任务不小的比例,有的情况下还成为了计算效率提升的瓶颈。比如,一个AI台式工作站的例子,现在百万级的摄像头拍摄的一张照片大概4~5MB以上,一个高性能的计算显卡一次可以批处理16张图片,大概需要0.5~1秒的时间;但是,传输一次批处理的16张照片,如果使用SATA协议的固态硬盘,可能需要传输0.2秒,使用机械盘需要传输0.5秒以上。在高性能的AI服务器上,这个问题同样存在,比如一个拥有8个AI处理器的服务器,每0.1秒可以同时处理8个批次的照片,每个批次16张图片,如果使用双通道SATA固态硬盘向计算单元传输这些图像数据,需要1秒的时间,即使使用当前最快的NVMe协议的固态硬盘,一个接口的情况下时间也会超过0.1秒。
由此可见,数据传输的时延或是数据带宽的瓶颈问题对人工智能计算效率的影响不可忽视。例如:数据存在存储端,模型在主机端运行,模型运行过程中,主机需要频繁从存储端读取数据,同时有相对较少的数据需要写入存储。可见,从存储端至主机端的上行通道所传输的数据量,远大于从主机端至存储端的下行通道所传输的数据量,导致上行通道和下行通道所传输的数据量不均,且上行通道由于需要传输的数据量大而容易堵塞。目前单纯的增强总线、扩展存储接口不仅增加成本与功耗,而且会加大系统负担,实质上述方式对于系统整体性能的提升有限,无法有效解决当前面临的问题。
因此,如何解决AI计算过程中的数据传输时延和数据带宽瓶颈问题,是本领域技术人员需要解决的问题。
发明内容
有鉴于此,本申请的目的在于提供一种模型计算方法及系统,以解决AI计算过程中的数据传输时延和数据带宽瓶颈问题。其具体方案如下:
第一方面,本申请提供了一种模型计算方法,包括:
获取目标模型,所述目标模型至少有两个组成部分;
按照每个组成部分运行时所需的资源量,对所述目标模型进行切分,以将所述目标模型切分为与设有AI计算模块的存储端对应的第一子模型,以及与主机端对应的第二子模型;所述第一子模型和所述第二子模型分别包括至少一个组成部分;
在所述存储端计算所述第一子模型,在所述主机端计算所述第二子模型,并在计算过程中,使所述存储端和所述主机端同步所述第一子模型和所述第二子模型所需的数据。
优选地,计算所述存储端的第一子模型所需的资源量小于计算主机端的第二子模型所需的资源量。
优选地,若正向传播时所述存储端的第一子模型输出的第一结果是所述主机端的第二子模型的输入数据,则所述使所述存储端和所述主机端同步所述第一子模型和所述第二子模型所需的数据,包括:
使所述存储端将所述第一子模型输出的第一结果写入正向队列,以便所述主机端从所述正向队列中读取所述第一结果,并基于所述第一结果计算所述第二子模型。
优选地,若正向传播时所述存储端的第一子模型输出的第一结果是所述主机端的第二子模型的输入数据,则所述使所述存储端和所述主机端同步所述第一子模型和所述第二子模型所需的数据,包括:
若所述第一子模型的第一参数需要更新,则使所述主机端将用于更新所述第一参数的目标数据写入反向队列,以便所述存储端从所述反向队列中读取所述目标数据,并利用所述目标数据计算所述第一参数的更新值,以基于所述更新值更新所述第一参数。
优选地,所述存储端基于所述更新值更新所述第一参数,包括:
所述存储端将所述更新值记录至临时队列,并判断是否达到参数更新条件;
若达到参数更新条件,则计算所述临时队列中的所有更新值的平均值,基于所述平均值更新所述第一参数后,清空所述临时队列。
优选地,所述存储端基于所述更新值更新所述第一参数之后,还包括:
使所述存储端将更新后的第一子模型发送至主机端,以便所述主机端记录所述更新后的第一子模型和自身更新得到的第二子模型。
优选地,若所述主机端检测到模型收敛,则发送模型收敛的通知消息至所述存储端,以使所述存储端释放相应资源。
优选地,还包括:
若任一队列的使用长度超过预设第一阈值,或任一队列的使用长度低于预设第二阈值,或所述正向队列和所述反向队列的使用长度差异超过预设第三阈值,则输出调整消息,以便基于所述调整消息调整所述主机端和所述存储端的资源使用情况;所述任一队列为所述正向队列或所述反向队列。
第二方面,本申请提供了一种模型计算系统,包括:主机端和设有AI计算模块的存储端,其中:
所述主机端,用于获取目标模型,所述目标模型至少有两个组成部分;按照每个组成部分运行时所需的资源量,对所述目标模型进行切分,以将所述目标模型切分为与设有AI计算模块的存储端对应的第一子模型,以及与主机端对应的第二子模型;所述第一子模型和所述第二子模型分别包括至少一个组成部分;
所述主机端,还用于计算所述第二子模型,并同步所述第一子模型所需的数据至所述存储端;
所述存储端,用于计算所述第一子模型,并同步所述第二子模型所需的数据至所述主机端。
优选地,所述AI计算模块包括:
模型管理子模块,用于解析所述第一子模型;
文件格式子模块,用于解析所述第一子模型对应的待处理数据;
传播队列子模块,用于管理正向队列,或所述正向队列和反向队列;
若正向传播时所述第一子模型输出的第一结果是所述第二子模型的输入数据,则所述正向队列用于记录所述第一子模型输出的第一结果;所述反向队列用于记录目标数据,所述目标数据用于更新所述第一子模型的第一参数。
通过以上方案可知,本申请提供了一种模型计算方法,包括:获取目标模型,所述目标模型至少有两个组成部分;按照每个组成部分运行时所需的资源量,对所述目标模型进行切分,以将所述目标模型切分为与设有AI计算模块的存储端对应的第一子模型,以及与主机端对应的第二子模型;所述第一子模型和所述第二子模型分别包括至少一个组成部分;在所述存储端计算所述第一子模型,在所述主机端计算所述第二子模型,并在计算过程中,使所述存储端和所述主机端同步所述第一子模型和所述第二子模型所需的数据。
可见,本申请将一个模型切分为第一子模型和第二子模型两个子模型,并在存储端计算第一子模型,在主机端计算第二子模型,并在计算过程中,使存储端和主机端同步第一子模型和第二子模型所需的数据。如此一来,存储端要向主机端传输的数据量就会少一些,而主机端要向存储端传输的数据量就会多一些,故上行通道和下行通道所传输的数据量不会有较大差异,并且上下行通道所传输的总数据量将会大大减少,能够缓解数据读取到主机端的堵塞情况,降低数据传输的功耗与时延,有效提升系统总线的使用率,能够为系统的其它业务释放总线资源,从而提高了系统整体性能,还能够提高模型计算效率。模型计算包括:模型训练和推理过程。
相应地,本申请提供的一种模型计算系统,也同样具有上述技术效果。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请公开的一种上下行通道使用带宽的示意图;
图2为本申请公开的一种模型计算方法流程图;
图3为本申请公开的一种目标模型的结构示意图;
图4为本申请公开的正向队列或反向队列的示意图;
图5为本申请公开的一种正向传播环形队列和反向传播环形队列的使用长度对比示意图;
图6为本申请公开的另一种正向传播环形队列和反向传播环形队列的使用长度对比示意图;
图7为本申请公开的一种存储端使用存储端子模型的过程示意图;
图8为本申请公开的一种存储端训练存储端子模型的过程示意图;
图9为本申请公开的一种VGG模型的结构示意图;
图10为本申请公开的一种模型计算系统示意图;
图11为本申请公开的一种存储端的硬件结构示意图;
图12为本申请公开的一种存储端的逻辑结构示意图;
图13为本申请公开的一种模型管理子模块的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参见图1,下行通道实际所使用的带宽明显小于上行通道实际所使用的带宽。但在实际应用过程中,分配给下行通道和上行通道的带宽一般是相同的,可见下行通道的带宽利用率较低。在AI计算过程中,上行通道的压力是由于数据在主机端滞留造成的。为此,本申请将模型的一部分下沉至存储端,从而降低主机端的压力,以疏通数据上行通道,解决AI计算过程中的数据传输时延和数据带宽瓶颈问题,提升系统整体处理性能。
参见图2所示,本申请实施例公开了一种模型计算方法,包括:
S201、获取目标模型,目标模型至少有两个组成部分。
在本实施例中,目标模型可以为任意机器学习模型,如:VGG(Visual GeometryGroup Network)、CNN(Convolutional Neural Networks)等。机器学习模型一般由多个组成部分组成,如:CNN中的卷积层、池化层等,这些都可以看作是目标模型的组成部分。
S202、按照每个组成部分运行时所需的资源量,对目标模型进行切分,以将目标模型切分为与设有AI计算模块的存储端对应的第一子模型,以及与主机端对应的第二子模型。
其中,第一子模型和第二子模型分别包括至少一个组成部分。存储端设置的AI计算模块可以是GPU(Graphics Processing Unit,视觉处理器)、NPU(Neural-networkProcessing Unit,嵌入式神经网络处理器)等常用于计算机器学习模型的模块。
由于存储端并非提供算力的主要器件,因此可以将目标模型中所需资源量较少的一部分计算交由存储端执行。因此在一种具体实施方式中,计算存储端的第一子模型所需的资源量小于计算主机端的第二子模型所需的资源量。评估资源量大小时,可以综合考虑算力、带宽、存储、时间开销等诸多指标因素。
请参见图3,图3为一种目标模型的结构示意图。可以将其中的尺寸调整层、归一化层和通道下采样层交由存储端进行计算,将剩余的其他层交由主机端进行计算。尺寸调整层、归一化层和通道下采样层即可组成第一子模型,其他各层即可组成第二子模型。这里描述的是一般机器学习模型结构中常见的层和其位置关系,具体到每个不同模型会有差异。比如,一般在一种模型中,批归一化(Batch Normalization)层与辍放(Dropout)层一般不会同时出现,批归一化层与激活函数层的前后顺序往往也有调整,或是批归一化层有时也会用其它层(如:组归一化,Group Normalization)替代等。
图3中的“×N”、“×M”表示:N和M次循环。其中的“→”表示正向传播(即模型处理数据的过程),表示反向传播(即更新模型参数的过程)。若是图3中的前三层没有反向传播,即:表明前三层的相关参数在模型训练过程中无需更新,或是前三层参数暂时固定,那么可以不用设置反向队列。
当然,若是存储端设置的AI计算模块具有较强算力,那么存储端和主机端可以平分目标模型中的各个组成部分(以各个组成部分运行时所占用的资源量来平分)。
S203、在存储端计算第一子模型,在主机端计算第二子模型,并在计算过程中,使存储端和主机端同步第一子模型和第二子模型所需的数据。
在一种具体实施方式中,若正向传播时存储端的第一子模型输出的第一结果是主机端的第二子模型的输入数据,则使存储端和主机端同步第一子模型和第二子模型所需的数据,包括:使存储端将第一子模型输出的第一结果写入正向队列,以便主机端从正向队列中读取第一结果,并基于第一结果计算第二子模型。请参见图3,第一结果可以是:正向传播时通道下采样层输出的、需要输入至卷积层的结果。
在一种具体实施方式中,若正向传播时存储端的第一子模型输出的第一结果是主机端的第二子模型的输入数据,则使存储端和主机端同步第一子模型和第二子模型所需的数据,包括:若第一子模型的第一参数需要更新(即在目标模型训练过程中,第一子模型的第一参数需要更新),则使主机端将用于更新第一参数的目标数据写入反向队列,以便存储端从反向队列中读取目标数据,并利用目标数据计算第一参数的更新值,以基于更新值更新第一参数。请参见图3,目标数据可以是:反向传播时卷积层输出的、需要输入至通道下采样层的结果。
其中,正向队列和反向队列均为长度固定(如固定为L)的环形队列,采用FIFO(先进先出)设计,即首逻辑地址对应的数据将最先被取出,新来的数据放入尾逻辑地址对应空间中,可参见图4。具体地,每次数据放入后,尾逻辑地址按照环形方向相应向后移动,当首尾逻辑地址重合表示队列已写满;每次数据取出后,首逻辑地址同样按照环形方向相应向后移动,当首尾逻辑重合表示队列已空。图4中的每个小格可代表一个逻辑地址,有阴影的小格代表存有数据。正向队列管理正向传播方向上要传递的对象数据,反向队列管理反向传播方向上要传递的对象数据。
正向队列的实际使用长度(即队列中实际记录的数据量多少)与存储端的处理效率呈正相关,而反向队列的实际使用长度与主机端的处理效率呈正相关。因此若正向队列的使用长度较长,则表明存储端的处理效率较快(与主机端对比),而主机端来不及消耗第一结果。若反向队列的使用长度较长,则表明主机端的处理效率较快(与存储端对比),而存储端来不及消耗目标数据。
若是正向队列和反向队列的使用长度差异较大,则表明存储端和主机端的处理效率差异较大,那么可能是由于目标模型切分不合理,或是存储端/主机端的资源配置差异大造成的,因此输出调整消息,以便基于调整消息调整主机端和存储端的资源使用情况。若只有正向队列工作,那么可以基于正向队列的使用长度来判断存储端和主机端的处理效率的差异。如:正向队列的实际使用长度过长或过短时,表明存储端和主机端的处理效率差异较大。当然,反向队列的实际使用长度过长或过短时,也可以表明存储端和主机端的处理效率差异较大。反向队列一般与正向队列同时工作,也即:反向队列一般不能单独工作。在存储端和主机端的处理效率差异较大时,基于调整消息调整主机端和存储端的资源使用情况包括:给存储端或主机端增加或减少硬件资源(如增加或减少GPU)来使二者针对目标模型的处理效率尽可能均等,或是调整目标模型的切分方式。
在一种具体实施方式中,若任一队列的使用长度超过预设第一阈值,或任一队列的使用长度低于预设第二阈值,或所述正向队列和所述反向队列的使用长度差异超过预设第三阈值,则输出调整消息,以便基于所述调整消息调整所述主机端和所述存储端的资源使用情况;所述任一队列为所述正向队列或所述反向队列。若正向队列和反向队列的长度固定为L,则预设第一阈值、预设第二阈值、预设第三阈值均小于L,且可以灵活取值。预设第一阈值大于预设第二阈值。预设第三阈值可以基于实际情况确定。
本实施例中,模型计算包括模型训练过程和模型测试、使用过程,也就是在训练模型的过程中,可以将模型划分后,按照本实施例进行训练。在使用模型的过程中,也可以将模型划分后,按照本实施例使用模型。
通常模型训练一次,其模型参数就更新一次。本实施例为了实现主机端和存储端的并行处理,避免存储端等待主机端所提供的目标数据,为存储端设置了参数更新条件。也就是:在一个更新步长内,存储端只计算第一参数的更新值,而不立即执行更新动作,待达到参数更新条件时,综合一个更新步长内所有更新值进行第一参数的更新。因此在一种具体实施方式中,存储端基于更新值更新第一参数,包括:存储端将更新值记录至临时队列,并判断是否达到参数更新条件;若达到参数更新条件,则计算临时队列中的所有更新值的平均值,基于平均值更新第一参数后,清空临时队列。若未达到参数更新条件,则去反向队列中找新的目标数据。
在一种具体实施方式中,存储端基于更新值更新第一参数之后,存储端将更新后的第一子模型发送至主机端,以便主机端记录更新后的第一子模型和自身更新得到的第二子模型,以便可以追溯目标模型训练过程中产生的中间模型。主机端更新第二子模型的过程与现有技术无异,只是主机端需要将目标数据写入反向队列,以供存储端读取。
在一种具体实施方式中,若主机端检测到模型收敛,则发送模型收敛的通知消息至存储端,以使存储端释放相应资源。即:存储端可以删除第一子模型及其相应数据。
可见,本申请实施例将一个模型切分为第一子模型和第二子模型两个子模型,并在存储端计算第一子模型,在主机端计算第二子模型,并在计算过程中,使存储端和主机端同步第一子模型和第二子模型所需的数据。如此一来,存储端要向主机端传输的数据量就会少一些,而主机端要向存储端传输的数据量就会多一些,故上行通道和下行通道所传输的数据量不会有较大差异,并且上下行通道所传输的总数据量将会大大减少,能够缓解数据读取到主机端的堵塞情况,降低数据传输的功耗与时延,有效提升系统总线的使用率,能够为系统的其它业务释放总线资源,从而提高了系统整体性能,还能够提高模型计算效率。模型计算包括:模型训练和推理过程。
为了更清楚地介绍本申请提供的模型计算过程,现对模型训练过程和模型推理过程分别进行介绍。
在模型训练过程中,模型的输出(分类或回归结果等)通过正向传播方向的计算得到,而模型参数(如权值或其他参数)的调整通过反向传播方向的计算得到。当存储端计算的子模型至少包括一层需要做反向传播计算以调整其中对应参数时,正向传播环形队列(即正向队列)和反向传播环形队列(即反向队列)同时工作。
当执行推理计算(即使用模型)时,仅通过正向传播方向的计算得到分类或回归结果,所以此时只有正向传播环形队列工作。当然,若存储端计算的子模型没有需要调整的参数,此时也只有正向传播环形队列工作,这种情况等价于模型推理计算。
若只有正向传播环形队列工作,那么基于正向传播环形队列中的排队长度(即实际使用长度)可判断是否需要调整模型的切分,以使主机端和存储端中计算的速率尽可能匹配和平衡。
若正向传播环形队列和反向传播环形队列均工作,那么通过对比两个队列中的排队长度,可以有效管理模型在主机端和存储端的计算速率,使之尽可能匹配和平衡。如:请参见图5,当正向传播环形队列中的排队长度长时间地远大于反向传播环形队列中的排队长度时,表示主机端需要加大算力支持,或调整模型中的更多层到存储端。请参见图6,当正向传播环形队列中的排队长度远小于反向传播环形队列中的排队长度时,表示存储端需要加大算力支持,或调整模型中的更多层到主机端。
请参见图7,本实施例将划分至存储端的子模型称为存储端子模型。图7为存储端使用存储端子模型的过程示意图,若存储端子模型在训练时无需进行参数更新,也可参照图7进行。图8为存储端训练存储端子模型的过程示意图。需要说明的是,一般只能对模型切分一次,也就是只将模型划分为两个子模型,如此可以避免过多的上下行通信消耗。
在图8中,指定了一个更新步长K,可以实现主机端和存储端的并行处理。参照图8,存储端只需每间隔K次更新一次存储端子模型的相关参数。
本实施例将一个模型切分为两个子模型,并在存储端计算第一子模型,在主机端计算第二子模型,并在计算过程中,使存储端和主机端同步第一子模型和第二子模型所需的数据。如此一来,存储端要向主机端传输的数据量就会少一些,而主机端要向存储端传输的数据量就会多一些,故上行通道和下行通道所传输的数据量不会有较大差异,并且上下行通道所传输的总数据量将会大大减少,能够缓解数据读取到主机端的堵塞情况,降低数据传输的功耗与时延。
按照本实施例提供的模型计算方法,对VGG模型进行计算。请参见图9,图9为本实施例提供的一种VGG模型的结构示意图。图9中的“×2”表示2次循环,“×3”表示3次循环。其中的“→”表示正向传播(即模型处理数据的过程),表示反向传播(即更新模型参数的过程)。
假设摄像头拍摄了2048*1536的300万像素、48位RGB色彩的图像存储在SSD,且VGG模型的第一个卷积层的输入是224*224的图像,且像素值范围是0~255。如果将图9中的尺寸调整层交由SSD计算,那么上行总线传输的数据量可以减少98.4%;如果将图9中的归一化层(用于将48位RGB转换为24位RGB)也交由SSD计算,那么上行总线传输的数据量可以进一步减少50%。比现有技术中总线传输数据量减少99.2%。
若模型用于车辆识别、行人识别等,这些过程往往不关注目标物体的颜色属性。这种情况下可以将输入图像的RGB三通道,先通过1*1的卷积运算,以映射为单通道,并将此层计算放在存储器SSD中。这种情况下,数据上行传输量仅为现有技术的0.27%,上下行总数据传输量可减少99.46%。
可见,本实施例能够实现AI计算时数据的上下行平衡,加速模型训练、推理效率,降低数据传输的功耗与时延。平衡总线上下行负载,有效使用总线带宽,释放冗余占用,不仅可以提升智能计算的效率,还能有效缓解整个系统的总线压力,为其它业务释放资源,进而提高系统整体性能,通过正向传播队列和反向传播队列的设置,实现AI模型(即机器学习模型)计算的同步通讯,从而完成AI模型的分布式计算,并可通过两个队列的深度,协调AI模型上下分布计算的吞吐效率,满足数据上下行传输的要求,实现整个系统资源分配更优化,还能够释放较多总线资源和带宽,在系统其它硬件条件不变的情况下,能够支持更多的智能计算或其它业务的并发,提升了系统整体处理性能。
下面对本申请实施例提供的一种模型计算系统进行介绍,下文描述的一种模型计算系统与上文描述的一种模型计算方法可以相互参照。模型计算系统可以为一台或多台计算机或一台或多台服务器等。
参见图10所示,本申请实施例公开了一种模型计算系统,包括:主机端和设有AI计算模块的存储端,其中:
主机端,用于获取目标模型,目标模型至少有两个组成部分;按照每个组成部分运行时所需的资源量,对目标模型进行切分,以将目标模型切分为与设有AI计算模块的存储端对应的第一子模型,以及与主机端对应的第二子模型;第一子模型和第二子模型分别包括至少一个组成部分;
主机端,还用于计算第二子模型,并同步第一子模型所需的数据至存储端;
存储端,用于计算第一子模型,并同步第二子模型所需的数据至主机端。
存储端的硬件结构可参见图11,图11中的SSD设置了GPU/NPU,当然也可以将GPU/NPU替换为其他类型的处理器。图11中的GPU/NPU即为AI计算模块。存储端的逻辑结构可参见图12,可见SSD除了负责原有的前端、后端、FTL等模块的工作外,还新加入了AI计算模块。
在一种具体实施方式中,AI计算模块包括:模型管理子模块,用于解析第一子模型;文件格式子模块,用于解析第一子模型对应的待处理数据;传播队列子模块,用于管理正向队列,或正向队列和反向队列;若正向传播时第一子模型输出的第一结果是第二子模型的输入数据,则正向队列用于记录第一子模型输出的第一结果;反向队列用于记录目标数据,目标数据用于更新第一子模型的第一参数。模型管理子模块请参见图13,图13中的尺寸调整计算接口、归一化计算接口、通道下采样计算接口对应图3中的相应计算层。可见,当第一子模型的结构变动时,模型管理子模块中的相关计算也随之变动。
在一种具体实施方式中,计算存储端的第一子模型所需的资源量小于计算主机端的第二子模型所需的资源量。
在一种具体实施方式中,若正向传播时存储端的第一子模型输出的第一结果是主机端的第二子模型的输入数据,则存储端将第一子模型输出的第一结果写入正向队列,以便主机端从正向队列中读取第一结果,并基于第一结果计算第二子模型。
在一种具体实施方式中,若正向传播时存储端的第一子模型输出的第一结果是主机端的第二子模型的输入数据,则在第一子模型的第一参数需要更新时,主机端将用于更新第一参数的目标数据写入反向队列,以便存储端从反向队列中读取目标数据,并利用目标数据计算第一参数的更新值,以基于更新值更新第一参数。
在一种具体实施方式中,存储端具体用于:将更新值记录至临时队列,并判断是否达到参数更新条件;若达到参数更新条件,则计算临时队列中的所有更新值的平均值,基于平均值更新第一参数后,清空临时队列。
在一种具体实施方式中,存储端还用于:将更新后的第一子模型发送至主机端,以便主机端记录更新后的第一子模型和自身更新得到的第二子模型。
在一种具体实施方式中,若主机端检测到模型收敛,则发送模型收敛的通知消息至存储端,以使存储端释放相应资源。
在一种具体实施方式中,主机端还用于:
若任一队列的使用长度超过预设第一阈值,或任一队列的使用长度低于预设第二阈值,或所述正向队列和所述反向队列的使用长度差异超过预设第三阈值,则输出调整消息,以便基于所述调整消息调整所述主机端和所述存储端的资源使用情况;所述任一队列为所述正向队列或所述反向队列。
其中,关于本实施例中各个模块、单元更加具体的工作过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
可见,本实施例提供了一种模型计算系统,该系统能够缓解数据读取到主机端的堵塞情况,降低数据传输的功耗与时延,有效提升了系统总线的使用率和整体性能。
本申请涉及的“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法或设备固有的其它步骤或单元。
需要说明的是,在本申请中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的可读存储介质中。
本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (8)
1.一种模型计算方法,其特征在于,包括:
获取目标模型,所述目标模型为机器学习模型、至少有两个组成部分;
按照每个组成部分运行时所需的资源量,对所述目标模型进行切分,以将所述目标模型切分为与设有AI计算模块的存储端对应的第一子模型,以及与主机端对应的第二子模型;所述第一子模型和所述第二子模型分别包括至少一个组成部分;
在所述存储端计算所述第一子模型,在所述主机端计算所述第二子模型,并在计算过程中,使所述存储端和所述主机端同步所述第一子模型和所述第二子模型所需的数据;
其中,若正向传播时所述存储端的第一子模型输出的第一结果是所述主机端的第二子模型的输入数据,则所述使所述存储端和所述主机端同步所述第一子模型和所述第二子模型所需的数据,包括:
使所述存储端将所述第一子模型输出的第一结果写入正向队列,以便所述主机端从所述正向队列中读取所述第一结果,并基于所述第一结果计算所述第二子模型;
若所述第一子模型的第一参数需要更新,则使所述主机端将用于更新所述第一参数的目标数据写入反向队列,以便所述存储端从所述反向队列中读取所述目标数据,并利用所述目标数据计算所述第一参数的更新值,以基于所述更新值更新所述第一参数;
其中,若所述正向队列和所述反向队列的使用长度差异超过预设第三阈值,则输出调整消息,以便基于所述调整消息调整所述主机端和所述存储端的资源使用情况,使所述主机端和所述存储端对所述目标模型的处理效率尽可能均等。
2.根据权利要求1所述的模型计算方法,其特征在于,计算所述存储端的第一子模型所需的资源量小于计算主机端的第二子模型所需的资源量。
3.根据权利要求1所述的模型计算方法,其特征在于,所述存储端基于所述更新值更新所述第一参数,包括:
所述存储端将所述更新值记录至临时队列,并判断是否达到参数更新条件;
若达到参数更新条件,则计算所述临时队列中的所有更新值的平均值,基于所述平均值更新所述第一参数后,清空所述临时队列。
4.根据权利要求1所述的模型计算方法,其特征在于,所述存储端基于所述更新值更新所述第一参数之后,还包括:
使所述存储端将更新后的第一子模型发送至主机端,以便所述主机端记录所述更新后的第一子模型和自身更新得到的第二子模型。
5.根据权利要求1所述的模型计算方法,其特征在于,
若所述主机端检测到模型收敛,则发送模型收敛的通知消息至所述存储端,以使所述存储端释放相应资源。
6.根据权利要求1至5任一项所述的模型计算方法,其特征在于,还包括:
若任一队列的使用长度超过预设第一阈值,或任一队列的使用长度低于预设第二阈值,则输出调整消息,以便基于所述调整消息调整所述主机端和所述存储端的资源使用情况;所述任一队列为所述正向队列或所述反向队列。
7.一种模型计算系统,其特征在于,包括:主机端和设有AI计算模块的存储端,其中:
所述主机端,用于获取目标模型,所述目标模型为机器学习模型、至少有两个组成部分;按照每个组成部分运行时所需的资源量,对所述目标模型进行切分,以将所述目标模型切分为与设有AI计算模块的存储端对应的第一子模型,以及与主机端对应的第二子模型;所述第一子模型和所述第二子模型分别包括至少一个组成部分;
所述主机端,还用于计算所述第二子模型,并同步所述第一子模型所需的数据至所述存储端;
所述存储端,用于计算所述第一子模型,并同步所述第二子模型所需的数据至所述主机端;
其中,若正向传播时所述存储端的第一子模型输出的第一结果是所述主机端的第二子模型的输入数据,则使所述存储端和所述主机端同步所述第一子模型和所述第二子模型所需的数据,包括:
使所述存储端将所述第一子模型输出的第一结果写入正向队列,以便所述主机端从所述正向队列中读取所述第一结果,并基于所述第一结果计算所述第二子模型;
若所述第一子模型的第一参数需要更新,则使所述主机端将用于更新所述第一参数的目标数据写入反向队列,以便所述存储端从所述反向队列中读取所述目标数据,并利用所述目标数据计算所述第一参数的更新值,以基于所述更新值更新所述第一参数;
其中,若所述正向队列和所述反向队列的使用长度差异超过预设第三阈值,则输出调整消息,以便基于所述调整消息调整所述主机端和所述存储端的资源使用情况,使所述主机端和所述存储端对所述目标模型的处理效率尽可能均等。
8.根据权利要求7所述的模型计算系统,其特征在于,所述AI计算模块包括:
模型管理子模块,用于解析所述第一子模型;
文件格式子模块,用于解析所述第一子模型对应的待处理数据;
传播队列子模块,用于管理正向队列,或所述正向队列和反向队列。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011640489.0A CN112783807B (zh) | 2020-12-31 | 2020-12-31 | 一种模型计算方法及系统 |
PCT/CN2021/118467 WO2022142478A1 (zh) | 2020-12-31 | 2021-09-15 | 一种模型计算方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011640489.0A CN112783807B (zh) | 2020-12-31 | 2020-12-31 | 一种模型计算方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112783807A CN112783807A (zh) | 2021-05-11 |
CN112783807B true CN112783807B (zh) | 2023-12-29 |
Family
ID=75755141
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011640489.0A Active CN112783807B (zh) | 2020-12-31 | 2020-12-31 | 一种模型计算方法及系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN112783807B (zh) |
WO (1) | WO2022142478A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112783807B (zh) * | 2020-12-31 | 2023-12-29 | 深圳大普微电子科技有限公司 | 一种模型计算方法及系统 |
CN115842835A (zh) * | 2021-09-10 | 2023-03-24 | 华为技术有限公司 | 一种通信方法及装置 |
CN115114033B (zh) * | 2022-08-30 | 2022-12-06 | 上海芯算极科技有限公司 | 一种基于层数分割的异构计算方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110889439A (zh) * | 2019-11-08 | 2020-03-17 | 浪潮电子信息产业股份有限公司 | 一种图像特征提取方法、装置及电子设备和存储介质 |
CN111210004A (zh) * | 2019-12-31 | 2020-05-29 | 深圳云天励飞技术有限公司 | 卷积计算方法、卷积计算装置及终端设备 |
CN111274034A (zh) * | 2020-01-19 | 2020-06-12 | 北京奇艺世纪科技有限公司 | 模型推理的资源分配方法、装置、计算机设备和存储介质 |
CN111340237A (zh) * | 2020-03-05 | 2020-06-26 | 腾讯科技(深圳)有限公司 | 数据处理和模型运行方法、装置和计算机设备 |
CN111857949A (zh) * | 2020-06-30 | 2020-10-30 | 苏州浪潮智能科技有限公司 | 模型发布方法、装置、设备及存储介质 |
CN111984414A (zh) * | 2020-08-21 | 2020-11-24 | 苏州浪潮智能科技有限公司 | 一种数据处理的方法、系统、设备及可读存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109685202B (zh) * | 2018-12-17 | 2023-03-21 | 腾讯科技(深圳)有限公司 | 数据处理方法及装置、存储介质和电子装置 |
CN115269717B (zh) * | 2019-08-22 | 2023-06-02 | 华为技术有限公司 | 存储设备、分布式存储系统以及数据处理方法 |
CN112783807B (zh) * | 2020-12-31 | 2023-12-29 | 深圳大普微电子科技有限公司 | 一种模型计算方法及系统 |
-
2020
- 2020-12-31 CN CN202011640489.0A patent/CN112783807B/zh active Active
-
2021
- 2021-09-15 WO PCT/CN2021/118467 patent/WO2022142478A1/zh active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110889439A (zh) * | 2019-11-08 | 2020-03-17 | 浪潮电子信息产业股份有限公司 | 一种图像特征提取方法、装置及电子设备和存储介质 |
CN111210004A (zh) * | 2019-12-31 | 2020-05-29 | 深圳云天励飞技术有限公司 | 卷积计算方法、卷积计算装置及终端设备 |
CN111274034A (zh) * | 2020-01-19 | 2020-06-12 | 北京奇艺世纪科技有限公司 | 模型推理的资源分配方法、装置、计算机设备和存储介质 |
CN111340237A (zh) * | 2020-03-05 | 2020-06-26 | 腾讯科技(深圳)有限公司 | 数据处理和模型运行方法、装置和计算机设备 |
CN111857949A (zh) * | 2020-06-30 | 2020-10-30 | 苏州浪潮智能科技有限公司 | 模型发布方法、装置、设备及存储介质 |
CN111984414A (zh) * | 2020-08-21 | 2020-11-24 | 苏州浪潮智能科技有限公司 | 一种数据处理的方法、系统、设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112783807A (zh) | 2021-05-11 |
WO2022142478A1 (zh) | 2022-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112783807B (zh) | 一种模型计算方法及系统 | |
WO2022095815A1 (zh) | 显存管理方法、装置、设备及系统 | |
CN114548426B (zh) | 异步联邦学习的方法、业务服务的预测方法、装置及系统 | |
CN114861911A (zh) | 深度学习模型的训练方法、装置、系统、设备和介质 | |
CN112114960A (zh) | 一种适应互联网场景的遥感影像并行集群处理的调度策略 | |
CN111245732A (zh) | 一种流量控制方法、装置及设备 | |
CN109451317A (zh) | 一种基于fpga的图像压缩系统及方法 | |
CN111752879B (zh) | 一种基于卷积神经网络的加速系统、方法及存储介质 | |
CN105068875A (zh) | 一种智能数据处理方法及装置 | |
CN112540933A (zh) | 缓存读写方法、装置及电子设备 | |
CN115567599B (zh) | 一种云边协同计算的任务迁移方法、装置及设备 | |
CN113378194B (zh) | 一种加解密运算加速方法、系统及存储介质 | |
CN115391053A (zh) | 基于cpu和gpu混合计算的在线服务方法及装置 | |
CN110610450A (zh) | 数据处理方法、电子设备和计算机可读存储介质 | |
CN103631726B (zh) | 一种串接流式计算节点的文件处理方法及装置 | |
CN107168804A (zh) | 一种内存资源管理方法与系统 | |
CN114035744A (zh) | 一种信息存储方法及终端、设备、存储介质 | |
CN113157415A (zh) | 农场渲染方法、装置、电子设备和存储介质 | |
CN112991172A (zh) | 图像处理方法、装置、电子设备及存储介质 | |
CN117493048B (zh) | 消息动态处理方法、装置、设备和介质 | |
US12067694B2 (en) | Method for generating metadata, image processing method, electronic device, and program product | |
Ding et al. | Multi-scale FAST feature extraction heterogeneous design based on FPGA | |
CN112163985B (zh) | 图像处理方法、装置、存储介质及电子设备 | |
CN118535306A (zh) | 数据缩减方法、装置、计算机设备、存储介质和程序产品 | |
CN111506518B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |