技术领域
[0001] 本公开涉及计算机系统,更具体地,涉及异构的神经网络系统。
相关背景技术
[0002] 在神经网络加速卡异构平台中,解码器输出的解码数据可能存在于 GPU端或CPU端,而神经网络通常需要在GPU端运行。对于图像数据而言,神经网络的输入尺寸与图像格式通常与解码器直接输出的尺寸不同,因此需要首先对输入图像进行修改或一级处理,同时也需要对神经网络的输出数据进行二级处理。现有做法通常是,异构平台的解码数据储存在GPU上,由CPU完成前处理,在GPU进行推理后,再由CPU对模型的推理结果进行后处理解析。或者是将前处理作为神经网络的一层,由神经网络进行前处理。
[0003] 现有技术的缺陷在于:1)只提供单一的CPU或GPU前后处理,没有充分利用异构平台的优势,应用时存在局限性;2)异构平台之间多次拷贝操作会占用额外数据带宽,造成数据传输瓶颈,降低神经网络加速卡的使用效率;3)上述缺陷在更多级检测场景中更加明显,会极大程度影响程序的整体性能。实用新型内容
[0004] 本公开的至少一个目的在于克服现有技术中的异构平台没有充分利用平台优势,应用时存在局限性的缺陷。
[0005] 根据本公开的第一方面,提供一种用于神经网络推理的异构系统,包括:第一调度器,第一处理器,第一异构处理器以及第一推理装置,其中,所述第一处理器配置为:接收待处理信号,对所述待处理信号进行第一前处理以得到第一前处理结果;所述第一异构处理器配置为:接收待处理信号,对所述待处理信号进行第二前处理以得到第二前处理结果;和/或从所述第一处理器接收所述第一前处理结果以得到第二前处理结果;所述第一调度器配置为调度所述第一处理器和/或所述第一异构处理器来对所述待处理信号进行处理;
所述第一推理装置配置为接收所述第二前处理结果以进行一级推理,从而得到一级推理结果。
[0006] 根据本公开第二方面,提供一种在异构系统中进行神经网络推理的方法,其中,所述异构系统包括第一调度器,第一处理器,第一异构处理器以及第一推理装置,所述方法包括:通过第一调度器调度所述第一处理器和/或第一异构处理器来对所述待处理信号进行处理;通过第一处理器接收所述待处理信号,对所述待处理信号进行第一前处理以得到第一前处理结果;通过所述第一异构处理器:接收所述待处理信号,对所述待处理信号进行第二前处理以得到第二前处理结果;和/或从所述第一处理器接收所述第一前处理结果以得到第二前处理结果;以及通过所述第一推理装置接收所述第二前处理结果以进行一级推理,从而得到一级推理结果。
[0007] 根据本公开第三方面,提供一种电子设备,包括:一个或多个处理器;以及存储器,所述存储器中存储有计算机可执行指令,当所述计算机可执行指令由所述一个或多个处理器运行时,使得所述电子设备执行如上所述的方法。
[0008] 根据本公开的第四方面,提供一种计算机可读存储介质,包括计算机可执行指令,当所述计算机可执行指令由一个或多个处理器运行时,执行如上所述的方法。
[0009] 本公开的技术效果至少包括如下之一:本公开的技术方案以自动地根据运行负载选择前后处理平台,也可以根据需要灵活地切换前后处理运行平台,具有广泛的应用价值。此外,本公开的技术方案减少了CPU资源消耗,同时减少了数据在CPU和异构处理器内存之间的拷贝次数,降低了数据带宽压力,取得了整体性能的提升。
具体实施方式
[0017] 下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
[0018] 应当理解,本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
[0019] 还应当理解,在此本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
[0020] 以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明仅用于帮助理解本披露的方法及其核心思想。同时,本领域技术人员依据本披露的思想,基于本披露的具体实施方式及应用范围上做出的改变或变形之处,都属于本披露保护的范围。综上所述,本说明书内容不应理解为对本披露的限制。
[0021] 图1示出了根据本公开一个实施方式的用于神经网络推理的异构系统,包括:第一调度器110,第一处理器130,第一异构处理器150以及第一推理装置170。
[0022] 需要指出的是,在上面的术语中,第一处理器130和第一异构处理器 150是异构的,二者采用不用的处理器架构,在对不同数据进行处理时具有不同的性能表现。还需要理解的是,尽管上文中采用了第一处理器130 和第一异构处理器150这样的表述,但二者的角色可以互换,例如第一处理器130可以是一个或多个通用处理器,例如CPU,而第一异构处理器 150可以是一个或多个专用处理器,例如图形处理单元GPU或者机器学习处理单元MLU等;可替换地,第一异构处理器150可以是一个或多个通用处理器,例如CPU,而第一处理器130可以是一个或多个专用处理器,例如图形处理单元GPU或者机器学习处理单元MLU等。上述的名称并不对本申请的保护构成任何限定。
[0023] 如图1所示,所述第一处理器130可以配置为:接收待处理信号,对所述待处理信号进行第一前处理以得到第一前处理结果;所述第一异构处理器150可以配置为:接收待处理信号,对所述待处理信号进行第二前处理以得到第二前处理结果;和/或从所述第一处理器130接收所述第一前处理结果以得到第二前处理结果;所述第一调度器110可以配置为调度所述第一处理器130和/或所述第一处理器150来对所述待处理信号进行处理;所述第一推理装置170配置为接收所述第二前处理结果以进行一级推理,从而得到一级推理结果。
[0024] 上文所述的“待处理信号”可以是指经过解码的视频、音频、图像等数据,本公开的技术内容不对待处理信号的类型进行任何的限制。
[0025] 上文中的“待处理信号”可以有多种来源,例如第一处理器130可以从外部的其他处理器、编码器等接收待处理信号,也可以从第一异构处理器150接收信号;第一异构处理器150可以从外部的其他处理器、编码器等接收待处理信号,也可以从第一处理器130处接收待处理信号。本公开的技术内容不对待处理信号的来源进行任何的限制。
[0026] 在图1中,尽管示出了第一处理器130和第一异构处理器150均接收待处理信号,但这两个待处理信号可以是同一个信号,也可以来自于不同的外部组件。
[0027] 通常而言,是由第一异构处理器150(例如MLU)接收待处理信号,然后再根据实际的需求来由第一处理器130或由第一异构处理器150对这些待处理信号进行处理。
[0028] 需要理解的是,这里所述的第一异构处理器150“接收”待处理信号可以存在多种情况,一种情况是该“待处理信号”是由第一异构处理器 150之外的其他处理器来进行编码的,另外一种情况是该“待处理信号”就是由第一异构处理器150本身来进行编码而生成的。这里所述的“接收”仅在于表示该待处理信号进入到了下一个处理阶段,而并不表示由不同的物理实体来进行处理。
[0029] 由此,在本公开中,可以采用调度器110来根据实际需求调度所述第一处理器130或所述第一异构处理器150来对所述待处理信号进行处理,或者可以调度第一处理器130和所述第一处理器150共同来对待处理信号进行处理。
[0030] 在图1中,实线框表示的第一异构处理器150和虚线框表示的第一异构处理器150可以是同一个异构处理器,也可以功能相同但实体不同的异构处理器。具体而言,在本公开中,第一异构处理器150可以接收待处理信号,处理之后得到第二前处理结果,并发送到第一推理装置170进行推理处理;另一方面,第一处理器130可以接收待处理信号,处理之后得到第一前处理结果,并将第一前处理结果传递或复制到第一异构处理器 150,然后,第一异构处理器150的第二前处理结果被发送到第一推理装置170进行推理处理。
[0031] 在图1中,虽然第一前处理结果和第二前处理结果以不同的名称来表示,但二者实质上是等效、等同或相同的,即,第一处理器130进行处理后得到的第一前处理结果与第一异构处理器150进行处理得到的第二前处理结果是等效、等同或相同的。在本文中采用不同的名称来对第一处理器 130的输出以及第一异构处理器150的输出来描述的目的仅在于区分其处理实体的不同,而不对前处理结果构成任何限定。
[0032] 根据本公开的一个实施方式,本公开中的所述第一调度器110可以配置为优先地调度所述第一异构处理器150来对所述待处理信号进行处理。
[0033] 在本实施方式中,可以由第一异构处理器150来直接对待处理信号进行处理,而无需发给第一处理器130。这样的有益效果在于,第一处理器 130,例如CPU等通用处理器,通常并未被专门设计为处理特定的任务类型,其对这些任务类型的处理效果并不足够高;此外,当由第一异构处理器150接收待处理信号时,需要先将这些信号传递或复制到第一处理器 130进行处理,处理后得到的第一前处理结果再传递或者复制到第一异构处理器150,这一方面降低了信号处理的速度,另一方面由于需要进行信号的传递和复制,需要占用额外的带宽,容易造成数据通信的瓶颈。
[0034] 尽管可以优先地采用专用处理器来对待处理信号进行前处理,但在某些特定情况下,可以首先调度通用处理器,即第一处理器130来对待处理信号进行处理。
[0035] 根据本公开的一个实施方式,所述第一调度器110可以配置为:检测所述第一处理器150的负载;以及,根据所述第一处理器150的负载来动态地调整所述第一处理器150对所述待处理信号进行处理的比例。
[0036] 在本实施方式中,第一调度器110可以先检查第一异构处理器150的负载,如果第一异构处理器150的负载过高,或者处理能力不足,则可以将一部分或者全部的任务调度到第一处理器130处进行处理;如果第一异构处理器150的处理能力增加或者所需要处理的数据量减少,则可以将全部或一部分任务调度到第一异构处理器150处进行处理。换言之,第一调度器110可以根据第一异构处理器150的负载来动态地调整第一处理器 130处理的任务量与第一异构处理器150处理的任务量的比例,第一异构处理器150的处理能力越强,则该比例越低;反之则越高。
[0037] 图2a示出了本公开的方法可以应用的一个异构处理器的内部结构示意图。该异构处理器例如可以是人工智能(AI)芯片或AI处理器。
[0038] 人工智能(AI)芯片加速了数据计算能力,降低了访存延时。AI芯片采用多核处理器架构,支持多达16核并行计算,并加入存储单元核(也可称为片上或片内存储单元)来加速数据读取,解决了AI芯片的处理器核与DDR(也可以称为片外存储单元)的访存瓶颈问题。为用户在处理深度学习、网络计算等场景中,提供更强的运算能力。
[0039] AI芯片共有16个处理器核,用于执行计算任务。每4个处理器核组成一个处理器组,即共4个处理器组。每个处理器组内有个存储单元核。存储单元核主要用于处理器组内部的共享存储单元与处理器核的数据交换和处理器组之间的数据交换。当存储器核和处理器核同时访问DDR时,通过多路复用器仲裁后,保证仅一组总线访问DDR。
[0040] 图2b示出了本公开的方法可以应用的异构处理器的结构示意图。该异构处理器例如可以是AI芯片。
[0041] AI芯片的DDR采用非统一内存存取(Non‑Uniform Memory Access, NUMA)架构,每个处理器组可以通过NOC0访问不同的DDR通道,但访问不同的DDR通道的延时不同。每个处理器组都对应一个访问延时最低的DDR通道,访问其他通道时延时相对较长。如图2b中处理器组与 DDR结构图所示,处理器组0,处理器组1,处理器组2和处理器组3分别访问对应的DDR0,DDR1,DDR2和DDR3时延时最低。也就是每个处理器核访问了各自处理器组访存延时最低的DDR通道。
[0042] 由于处理器组内部的访存带宽高于处理器核和DDR之间的访问带宽,所以AI芯片可以通过采用处理器组来内部存取共享存储单元,以减少处理器核直接访问DDR,从而提高了数据吞吐量。
[0043] 当需要4核并行计算时,存储单元核可以通过数据广播方式(通过 NOC1),将数据由共享存储单元同时广播到处理器组内的4个处理器核以进行数据计算。相对于所有处理器核通过DDR来读取数据的方式,这种情况下能够降低访存延时,优化计算性能。
[0044] 当计算需求增大时,16个处理器核可以需要同时处理多个计算任务。处理器核直接访问DDR必然会引起数据访问延时,导致计算速度慢等问题。AI芯片通过处理器组相互之间的数据交换,避免了16个处理器核直接与DDR通信,从而降低了数据访问的延时。
[0045] 如图2a和图2b所示,对于作为多核处理器的异构处理器,其处理器组、处理器核、存储单元核等各个部分均有可能被占用,导致异构处理器本身的整体处理能力下降;而这些运算资源被释放时候,则会导致异构处理器的整体处理能力上升。
[0046] 由此,可以根据多个参数或者标准来判断第一异构处理器150的处理能力,根据本公开的一个实施方式,可以根据第一异构处理器150的内核占用率、内存占用率和板卡温度等参数来判断该第一异构处理器150的处理能力。如果所述第一异构处理器150的内核占用率、内存占用率和板卡温度中的至少一者超过相应阈值,则可以降低第一异构处理器150对待处理信号进行处理的比例,增加所述第一处理器130对所述待处理信号进行处理的比例。
[0047] 上述的内核,可以是指图2a和图2b中所示的处理器核以及处理器组等,而存储占用率,可以是指图2b中的所述的存储单元核。此外,由于第一异构处理器150中处理任务的上升,也会导致板卡温度等物理参数的上升,因此通过监测板卡温度也可以判断判断第一异构处理器150的处理能力是否足够。
[0048] 可以为这些参数分别设置相应的阈值,一旦这些参数超过所设定的相应的阈值,则可以将第一异构处理器150中的任务部分地或者全部转移到第一处理器130例如CPU中进行处理,以减轻第一异构处理器150的负担;而这些参数低于或者回落到这些相应的阈值之下,则可以将更多的任务由第一异构处理器150来进行处理,以减少例如CPU的负担和开销。这种任务的传递和转换是双向和可调节的。
[0049] 在上文的技术方案中,可以根据上述参数中的一个或多个是否超过相应的阈值来调整第一异构处理器150对待处理信号进行处理的比例,根据本公开的一个实施方式,还可以根据第一异构处理器150的内核占用率、内存占用率和板卡温度的加权平均值是否超过预定阈值,来调整所述第一处理器150的负担。具体而言,可以响应于所述第一异构处理器150的内核占用率、内存占用率和板卡温度的加权平均值超过预定阈值,降低所述第一异构处理器150对所述待处理信号进行处理的比例,增加所述第一处理器130对所述待处理信号进行处理的比例。
[0050] 可以为每个参数设置相应的权重,从而根据这些参数的综合评估来调整异构处理器的负担。这种权重的设定可以由本领域技术人员根据实际的应用场景来设定。
[0051] 上文中介绍了根据第一异构处理器150的一些参数来调整第一处理器 130以及第一异构处理器150的负担的情形,根据本公开的一个实施方式,还可以响应于所述待处理信号的类型与所述第一异构处理器150失配,调度所述第一处理器130来对所述待处理信号进行处理。
[0052] 上文所述的失配,是指待处理信号或者任务对于第一异构处理器150 而言并不匹配或者第一异构处理器150并不适合对该待处理信号或任务进行处理。例如,对于某些复杂的图形学计算,第一异构处理器150可能并不适合进行处理,在此情况下,则可以将这样的待处理信号调度给第一处理器130进行处理。需要理解的是,这里仅以复杂的图形学计算为例进行了说明,另一方面,如果某些任务更适合由第一异构处理器150来进行处理,则可以更多地或更优选地调度第一异构处理器150来处理这些任务或待处理信号。
[0053] 更进一步地,第一推理装置170可以是与第一异构处理器150功能相同但物理实体不同的异构处理器,也可以与第一异构处理器150是同一个物理处理器。在本文中,采用不同的名称仅在于表明其在不同阶段时的功能。根据本公开的优选实施方式,第一推理装置170与第一异构处理器 150为同一个物理处理器,在该优选实施方式的情况下,无需额外地添加异构处理器,第一推理装置170本身即可以完成前处理,减少了数据拷贝次数,降低了数据带宽压力。
[0054] 图3示出了根据本公开一个实施方式的异构系统的另一个实施方式。
[0055] 如图3所示,本公开的异构系统可以进一步包括第二调度器210,第二处理器230,第二异构处理器250以及第二推理装置270。
[0056] 需要指出的是,在上面的术语中,第二处理器230和第二异构处理器250是异构的,即二者采用不用的处理器架构,在对不同数据进行处理时具有不同的性能表现。还需要理解的是,尽管上文中采用了第二处理器 230和第二异构处理器250这样的表述,但二者的角色可以互换,例如第二处理器230可以是一个或多个通用处理器,例如CPU,而第二异构处理器250可以是一个或多个专用处理器,例如图形处理单元GPU或者机器学习处理单元MLU等;可替换地,第二异构处理器250可以是一个或多个通用处理器,例如CPU,而第二处理器230可以是一个或多个专用处理器,例如图形处理单元GPU或者机器学习处理单元MLU等。上述的名称并不对本申请的保护构成任何限定。
[0057] 如图3所示,所述第二处理器230可以配置为接收所述一级推理结果,对所述一级推理结果进行第一后处理以得到第一后处理结果;所述第二异构处理器250配置为接收所述一级推理结果,对所述一级推理结果进行第二后处理以得到第二后处理结果;和/或从所述第二处理器230接收所述第一后处理结果以得到第二后处理结果;所述第二调度器210配置为调度所述第二处理器230和/或第二异构处理器250来对所述一级推理结果进行处理;所述第二推理装置270配置为接收所述第二后处理结果以进行二级推理,从而得到二级推理结果。
[0058] 上文中的“一级推理结果”可以是来自于如图1所示的第一推理装置 170的输出,可以对该一级推理结果进行进一步的处理和推理。
[0059] 通常而言,可以由第二异构处理器250(例如MLU)接收一级推理结果,然后再根据实际的需求来由第二处理器230或由第二异构处理器250 对这些一级推理结果进行处理。
[0060] 需要理解的是,这里所述的第二异构处理器250和上文所述的第一异构处理器150可以是不同的,也可以是同一个异构处理器。这里所述的“接收”一级推理结果可以存在多种情况,一种情况是该“一级推理结果”是由与第二异构处理器250不同的第一异构处理器150生成的,另外一种情况是该“一级推理结果”就是由第二异构处理器250本身来生成的。
这里所述的“接收”仅在于表示该一级推理结果进入到了下一个处理阶段,而并不表示由不同的物理实体来进行处理。
[0061] 由此,在本公开中,可以采用第二调度器210来根据实际需求调度所述第二处理器230或所述第二异构处理器250来对所述一级推理结果进行处理,或者可以调度第二处理器
230和所述第二异构处理器250共同来对一级推理结果进行处理。
[0062] 在图3中,实线框表示的第二异构处理器250和虚线框表示的第二异构处理器250可以是同一个异构处理器,也可以功能相同但实体不同的异构处理器。具体而言,在本公开中,第二异构处理器250可以接收一级推理结果,处理之后得到第二后处理结果,并发送到第二推理装置270进行推理处理;另一方面,第二处理器230可以接收一级推理结果,处理之后得到第一后处理结果,并将第一后处理结果传递或复制到第二异构处理器 250,然后,第二异构处理器250的第二后处理结果被发送到第二推理装置270进行推理处理。
[0063] 在图3中,虽然第一后处理结果和第二后处理结果以不同的名称来表示,但二者实质上是等效、等同或相同的,即,第二处理器230进行处理后得到的第一后处理结果与第二异构处理器250进行处理得到的第二后处理结果是等效、等同或相同的。在本文中采用不同的名称来对第二处理器 230的输出以及第二异构处理器250的输出来描述的目的仅在于区分其处理实体的不同,而不对后处理结果构成任何限定。
[0064] 根据本公开的一个实施方式,本公开中的所述第二调度器210可以配置为优先地调度所述第二异构处理器250来对所述一级推理结果进行处理。
[0065] 在本实施方式中,可以由第二异构处理器250来直接对第一推理结果进行处理,而无需发给第二处理器230。这样的有益效果在于,第二处理器230,例如CPU等通用处理器,通常并未被专门设计为处理特定的任务类型,其对这些任务类型的处理效果并不足够高;此外,当由第二异构处理器250接收第一推理结果时,需要先将这些信号传递或复制到第二处理器230进行处理,处理后得到的第一后处理结果再传递或者复制到第二异构处理器250,这一方面降低了信号处理的速度,另一方面由于需要进行信号的传递和复制,需要占用额外的带宽,容易造成数据通信的瓶颈。
[0066] 尽管可以优先地采用专用处理器来对第一推理结果进行后处理,但在某些特定情况下,可以首先调度通用处理器,即第二处理器230来对第一推理结果进行处理。
[0067] 根据本公开的一个实施方式,所述第二调度器210可以配置为:检测所述第二异构处理器250的负载;以及,根据所述第二异构处理器250的负载来动态地调整所述第二异构处理器250对所述第一推理结果进行处理的比例。
[0068] 在本实施方式中,第二调度器210可以先检查第二异构处理器250的负载,如果第二异构处理器250的负载过高,或者处理能力不足,则可以将一部分或者全部的任务调度到第二处理器230处进行处理;如果第二异构处理器250的处理能力增加或者所需要处理的数据量减少,则可以将全部或一部分任务调度到第二异构处理器250处进行处理。换言之,第二调度器210可以根据第二异构处理器250的负载来动态地调整第二处理器 230处理的任务量与第二异构处理器250处理的任务量的比例,第二调度器250的处理能力越强,则该比例越低;反之则越高。
[0069] 第二异构处理器250可以如图2a和图2b所示。对于作为多核处理器的异构处理器,其处理器组、处理器核、存储单元核等各个部分均有可能被占用,导致异构处理器本身的整体处理能力下降;而这些运算资源被释放时候,则会导致异构处理器的整体处理能力上升。
[0070] 由此,可以根据多个参数或者标准来判断第二异构处理器250的处理能力,根据本公开的一个实施方式,可以根据第二异构处理器250的内核占用率、内存占用率和板卡温度等参数来判断该第二异构处理器250的处理能力。如果所述第二异构处理器250的内核占用率、内存占用率和板卡温度中的至少一者超过相应阈值,则可以降低第二异构处理器250对第一推理结果进行处理的比例,增加所述第二处理器230对第一推理结果进行处理的比例。
[0071] 此外,由于第二异构处理器250中处理任务的上升,也会导致板卡温度等物理参数的上升,因此通过监测板卡温度也可以判断判断第二异构处理器250的处理能力是否足够。
[0072] 可以为这些参数分别设置相应的阈值,一旦这些参数超过所设定的相应的阈值,则可以将第二异构处理器250中的任务部分地或者全部转移到第二处理器230例如CPU中进行处理,以减轻第二异构处理器250的负担;而这些参数低于或者回落到这些相应的阈值之下,则可以将更多的任务由第二异构处理器250来进行处理,以减少例如CPU的负担和开销。这种任务的传递和转换是双向和可调节的。
[0073] 在上文的技术方案中,可以根据上述参数中的一个或多个是否超过相应的阈值来调整第二异构处理器250对第一推理结果进行处理的比例,根据本公开的一个实施方式,还可以根据第二异构处理器250的内核占用率、内存占用率和板卡温度的加权平均值是否超过预定阈值,来调整所述第二异构处理器250的负担。具体而言,可以响应于所述第二异构处理器 250的内核占用率、内存占用率和板卡温度的加权平均值超过预定阈值,降低所述第二异构处理器250对第一推理结果进行处理的比例,增加所述第二处理器230对所述第一推理结果进行处理的比例。
[0074] 可以为每个参数设置相应的权重,从而根据这些参数的综合评估来调整异构处理器的负担。这种权重的设定可以由本领域技术人员根据实际的应用场景来设定。
[0075] 上文中介绍了根据第二异构处理器250的一些参数来调整第二处理器 230以及第二异构处理器250的负担的情形,根据本公开的一个实施方式,还可以响应于所述第一推理结果的类型与所述第二异构处理器250失配,调度所述第二处理器250来对所述待处理信号进行处理。
[0076] 上文所述的失配,是指第一推理结果或者任务对于第二异构处理器250而言并不匹配或者第二异构处理器250并不适合对该第一推理结果或任务进行处理。例如,对于某些复杂的图形学计算,第二异构处理器250 可能并不适合进行处理,在此情况下,则可以将这样的第一推理结果调度给第二处理器230进行处理。需要理解的是,这里仅以复杂的图形学计算为例进行了说明,另一方面,如果某些任务更适合由第二异构处理器250 来进行处理,则可以更多地或更优选地调度第二异构处理器250来处理这些任务或待处理信号。
[0077] 更进一步地,第二推理装置270可以是与第二异构处理器250功能相同但物理实体不同的异构处理器,也可以与第二异构处理器250是同一个物理处理器。在本文中,采用不同的名称仅在于表明其在不同阶段时的功能。
[0078] 需要理解的是,在上文中采用了第一处理器130和第二处理器230可以是同一个或者是物理上相同的处理器(例如CPU),第一异构处理器 150,第二异构处理器250,第一推理装置170和第二推理装置270均可以是在物理上相同的处理器(例如GPU),采用不同的名称仅在于表明其不同的功能。当不同的功能处于同一个物理实体上时,能够减少额外的数据拷贝等开销,提升系统的整体运行效率。
[0079] 图4示出了根据本公开的一个实施方式的在异构系统中进行神经网络推理的方法,其中,所述异构系统包括第一调度器,第一处理器,第一异构处理器以及第一推理装置,所述方法包括:在操作S410,通过第一调度器调度所述第一处理器和/或第一异构处理器来对所述待处理信号进行处理;在操作S420,通过第一处理器接收所述待处理信号,对所述待处理信号进行第一前处理以得到第一前处理结果;在操作S430,通过所述第一异构处理器接收所述待处理信号,对所述待处理信号进行第二前处理以得到第二前处理结果;和/或,在操作S440,通过所述第一异构处理器从所述第一处理器接收所述第一前处理结果以得到第二前处理结果;在操作 S450,通过所述第一推理装置接收所述第二前处理结果以进行一级推理,从而得到一级推理结果。
[0080] 需要理解的是,图4所示的操作仅仅是给出了在不同部件处的操作,这些操作并不必然存在先后关系,也并不必然均是必要的操作,而是可以根据信号的行进方向发生相应的操作。
[0081] 本公开还提供一种电子设备,包括:一个或多个处理器;以及存储器,所述存储器中存储有计算机可执行指令,当所述计算机可执行指令由所述一个或多个处理器运行时,使得所述电子设备执行如上所述的方法。
[0082] 本公开还提供一种计算机可读存储介质,包括计算机可执行指令,当所述计算机可执行指令由一个或多个处理器运行时,执行如上所述的方法。
[0083] 本公开的异构系统在执行前后处理时,支持多种图像处理算法,比如颜色空间转换算法、图像尺寸缩放算法、图像水平垂直翻转算法、图像仿射变换算法等。
[0084] 本公开的技术方案以自动地根据运行负载选择前后处理平台,也可以根据需要灵活地切换前后处理运行平台,具有广泛的应用价值。此外,本公开的技术方案减少了CPU资源消耗,同时减少了数据在CPU和异构处理器内存之间的拷贝次数,降低了数据带宽压力,取得了整体性能的提升。
[0085] 本公开中的第一调度器110和第二调度器210可以通过硬件和软件的方式来实现。本公开的技术方案可应用于人工智能领域,实现为或者实现在人工智能芯片中。该芯片可以单独存在,也可以包含在计算装置中。
[0086] 图5示出了一种组合处理装置500,其包括上述的计算装置502,通用互联接口504,和其他处理装置506。根据本公开的计算装置与其他处理装置进行交互,共同完成用户指定的操作。图5为组合处理装置的示意图。
[0087] 其他处理装置,包括中央处理器CPU、图形处理器GPU、神经网络处理器等通用/专用处理器中的一种或以上的处理器类型。其他处理装置所包括的处理器数量不做限制。其他处理装置作为机器学习运算装置与外部数据和控制的接口,包括数据搬运,完成对本机器学习运算装置的开启、停止等基本控制;其他处理装置也可以和机器学习运算装置协作共同完成运算任务。
[0088] 通用互联接口,用于在计算装置(包括例如机器学习运算装置)与其他处理装置间传输数据和控制指令。该计算装置从其他处理装置中获取所需的输入数据,写入该计算装置片上的存储装置;可以从其他处理装置中获取控制指令,写入计算装置片上的控制缓存;也可以读取计算装置的存储模块中的数据并传输给其他处理装置。
[0089] 可选的,该结构还可以包括存储装置508,存储装置分别与所述计算装置和所述其他处理装置连接。存储装置用于保存在所述计算装置和所述其他处理装置的数据,尤其适用于所需要运算的数据在本计算装置或其他处理装置的内部存储中无法全部保存的数据。
[0090] 该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时,该组合处理装置的通用互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器,鼠标,键盘,网卡,wifi接口。
[0091] 在一些实施例里,本披露还公开了一种芯片封装结构,其包括了上述芯片。
[0092] 在一些实施例里,本披露还公开了一种板卡,其包括了上述芯片封装结构。参阅图6,其提供了一种示例性的板卡,上述板卡除了包括上述芯片602以外,还可以包括其他的配套部件,该配套部件包括但不限于:存储器件604、接口装置606和控制器件608。
[0093] 所述存储器件与所述芯片封装结构内的芯片通过总线连接,用于存储数据。所述存储器件可以包括多组存储单元610。每一组所述存储单元与所述芯片通过总线连接。可以理解,每一组所述存储单元可以是DDR SDRAM(英文:Double Data Rate SDRAM,双倍速率同步动态随机存储器)。
[0094] DDR不需要提高时钟频率就能加倍提高SDRAM的速度。DDR允许在时钟脉冲的上升沿和下降沿读出数据。DDR的速度是标准SDRAM的两倍。在一个实施例中,所述存储装置可以包括4组所述存储单元。每一组所述存储单元可以包括多个DDR4颗粒(芯片)。在一个实施例中,所述芯片内部可以包括4个72位DDR4控制器,上述72位DDR4控制器中 64bit用于传输数据,8bit用于ECC校验。在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。DDR在一个时钟周期内可以传输两次数据。在所述芯片中设置控制DDR的控制器,用于对每个所述存储单元的数据传输与数据存储的控制。
[0095] 所述接口装置与所述芯片封装结构内的芯片电连接。所述接口装置用于实现所述芯片与外部设备612(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接口装置可以为标准PCIE接口。比如,待处理的数据由服务器通过标准PCIE接口传递至所述芯片,实现数据转移。在另一个实施例中,所述接口装置还可以是其他的接口,本披露并不限制上述其他的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述芯片的计算结果仍由所述接口装置传送回外部设备(例如服务器)。
[0096] 所述控制器件与所述芯片电连接。所述控制器件用于对所述芯片的状态进行监控。具体的,所述芯片与所述控制器件可以通过SPI接口电连接。所述控制器件可以包括单片机(Micro Controller Unit,MCU)。如所述芯片可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述芯片可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述芯片中多个处理芯片、多个处理和/或多个处理电路的工作状态的调控。
[0097] 在一些实施例里,本披露还公开了一种电子设备或装置,其包括了上述板卡。
[0098] 电子设备或装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。
[0099] 所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
[0100] 需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本披露并不受所描述的动作顺序的限制,因为依据本披露,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本披露所必须的。
[0101] 在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0102] 在本披露所提供的几个实施例中,应该理解到,所披露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性、光学、声学、磁性或其它的形式。
[0103] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0104] 另外,在本披露各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
[0105] 所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,当本披露的技术方案可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本披露各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read‑ Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0106] 以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本披露的方法及其核心思想;同时,对于本领域的一般技术人员,依据本披露的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本披露的限制。