CN115373646A - 扩展信息方法、装置和相关产品 - Google Patents
扩展信息方法、装置和相关产品 Download PDFInfo
- Publication number
- CN115373646A CN115373646A CN202110532068.4A CN202110532068A CN115373646A CN 115373646 A CN115373646 A CN 115373646A CN 202110532068 A CN202110532068 A CN 202110532068A CN 115373646 A CN115373646 A CN 115373646A
- Authority
- CN
- China
- Prior art keywords
- target
- class
- processor
- operator
- data
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本披露实施例涉及一种扩展信息方法、装置和相关产品,从目标处理器的目标属性类中获取目标处理器的属性信息,该目标属性类继承于原始处理器的原始属性类,然后创建目标处理器的目标数据类,并从原始处理器的原始数据类中复制待计算数据至目标数据类中,最后根据目标处理器的属性信息和待计算数据对对应算子执行计算操作。该方法使得扩展属性信息的方式更加具有通用性,从而有效地实现了在TensorImpl中扩展通用处理器属性信息。
Description
技术领域
本披露实施例涉及神经网络技术领域,特别是涉及一种扩展信息方法、装置和相关产品。
背景技术
随着Pytorch 1.3的发布,原生Pytorch提供了Extension(扩展)机制,可在Pytorch框架所属神经网络所运行的设备中扩展新的设备支持,这意味着如果用户添加新的设备,不再需要修改原生的Pytorch源码,只需要将新设备对应的算子以第三方扩展包的形式动态注册到Pytorch中即可。
Pytorch中以Tensor(张量)作为其基本存储单元,算子与算子之间通过Tensor来传递数据。其中,Tensor的类包括Tensor类、TensorImpl类和Storage类,而Tensor类提供了用户侧接口的调用,TensorImpl类用于存储Tensor自身的属性,Storage类用于存储具体的数据。然而,目前部分用户在使用该方式添加新设备时,并没有使用Storage来存放具体的数据,而是使用自己的算法库完成的,这样就会导致Pytorch和用户自己的算法库之间的强耦合性,非常不符合Pytorch社区生态和使用习惯。
因此,如何基于Pytorch Extersion机制,扩展通用处理器信息成为亟待解决的问题。
发明内容
本披露实施例提供一种能够基于Pytorch Extersion机制,扩展通用处理器信息的扩展信息方法、装置和相关产品。
第一方面,本披露实施例提供一种扩展信息方法,该方法包括:
从目标处理器的目标属性类中获取目标处理器的属性信息;目标属性类继承于原始处理器的原始属性类;
创建目标处理器的目标数据类,并从原始处理器的原始数据类中复制待计算数据至目标数据类中;
根据目标处理器的属性信息和待计算数据对对应算子执行计算操作。
第二方面,本披露实施例提供一种扩展信息装置,该装置包括:
获取模块,用于从目标处理器的目标属性类中获取目标处理器的属性信息;目标属性类继承于原始处理器的原始属性类;
创建模块,用于创建目标处理器的目标数据类,并从原始处理器的原始数据类中复制待计算数据至目标数据类中;
计算模块,用于根据目标处理器的属性信息和待计算数据对对应算子执行计算操作。
第三方面,本披露实施例提供一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面实施例中提供的方法步骤。
第四方面,本披露实施例提供一种存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面实施例中提供的方法步骤。
第五方面,本披露实施例提供一种计算机程序产品,包括计算机程序/指令,所述计算机程序/指令被处理器执行时实现上述第一方面实施例中提供的方法步骤。
本披露实施例提供的扩展信息方法、装置和相关产品,从目标处理器的目标属性类中获取目标处理器的属性信息,该目标属性类继承于原始处理器的原始属性类,然后创建目标处理器的目标数据类,并从原始处理器的原始数据类中复制待计算数据至目标数据类中,最后根据目标处理器的属性信息和待计算数据对对应算子执行计算操作。该方法通过目标属性类来存储目标处理器的真实数据的属性信息,而目标处理器的真实数据会存放在原始数据类中,在计算过程中,实时地从原始数据类中复制过来,这样,就可以直接从目标属性类中获取目标处理器的特有属性,从原始数据类中获取目标处理器的真实数据,无需依赖第三方数据算法库,仅仅基于原生的Pytorch机制即可运行,使得扩展属性信息的方式更加具有通用性,从而有效地实现了在TensorImpl中扩展通用处理器属性信息。
附图说明
图1为本披露实施例中一种扩展信息方法的应用环境图;
图2为本披露实施例中一种扩展信息的方法流程图;
图3为本披露实施例中一种Pytorch Tensor类继承关系示意图;
图4为本披露实施例中提供的人工智能处理器的Tensor类继承关系示意图;
图5为本披露实施例中提供的XLA的Tensor类继承关系示意图;
图6为本披露实施例中提供的扩展信息方法的流程示意图;
图7为本披露实施例中提供的人工智能处理器的属性类和数据类构建示意图
图8为本披露实施例中提供的扩展信息方法的流程示意图;
图9为本披露实施例中提供的扩展信息方法的流程示意图;
图10为本披露实施例中提供的扩展信息装置的结构框图;
图11为本披露实施例中的组合处理装置的结构图;
图12为本披露实施例中的板卡的结构示意图。
具体实施方式
下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
应当理解,本披露的权利要求、说明书及附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
本披露提供的一种扩展信息方法可以应用于如图1所示的应用环境中,该应用环境包括计算机设备01,该计算机设备01可以是任何类型,例如,各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备等终端,或者,是独立的服务器或者是多个服务器组成的服务器集群等等。该计算机设备的内部结构包括处理器011、非易失性存储介质012、内存储器013、网络接口014;其中,处理器011用于执行提供扩展信息方法时的计算和控制能力,该处理器011可以是任何类型的处理器,包括但不限于是机器学习处理器、人工智能处理器IPU,中央处理器CPU、图形处理器GPU中的一种或多种组成异构处理器、该处理器可设置于任何类型的计算机设备中。其中,非易失性存储介质012存储有操作系统0121、计算机程序0122和数据库0123;该内存储器为非易失性存储介质012中的操作系统0121和计算机程序0122的运行提供环境,该数据库0123用于存储扩展信息方法过程的相关数据。该网络接口用于与外部的其他设备通过网络连接通信。
图2提供了一种扩展信息方法,本实施例涉及的是根据接收到的计算指令进行计算,并从已创建的目标处理器的目标属性类中获取目标处理器的属性信息,然后实时创建目标处理器的目标数据类,以从原始处理器的原始数据类中复制待计算数据至目标数据类中,最后以目标处理器的属性信息和待计算数据进行计算的具体过程。如图2所示,该方法包括:
S101,从目标处理器的目标属性类中获取目标处理器的属性信息;目标属性类继承于原始处理器的原始属性类。
原始处理器指的是原生神经网络框架所属神经网络所运行的设备,例如,原生神经网络框架为Pytorch框架,原始处理器为CPU。神经网络中各种各样的算子或多或少的存在参数,而Tensor就是存储并计算这些参数的基础,所以在Pytorch中,Tensor为Pytorch的基本数据对象,Pytorch是以Tensor(张量)作为基本存储单元,算子与算子之间通过Tensor来传递数据。如图3所示,为Pytorch中Tensor类继承关系图,其中,继承关系指的是指向关系,该继承关系中,Storage类继承于TensorImpl类,TensorImpl类继承于Tensor类;Tensor类提供了用户侧接口的调用,TensorImpl类用于存储Tensor自身的属性,该属性可以是数据类型、大小、形状等;Storage类用于存储具体的数据,这里的具体数据指的是要计算的数据,例如,做加法的数据,或者,神经网络所使用时的数据等。
例如,Tensor类、TensorImpl类和Storage类的分别为:
相应地,在Pytorch中,原始属性类指的就是TensorImpl类,在原生类的继承体系中,Tensor的属性值都存储在TensorImpl类中。
在原生Pytorch中提供了Extension机制,Extension机制用于扩展新的设备支持,即在Pytorch框架所属神经网络所运行的设备上添加新设备,例如,在原始处理器上添加目标处理器。其中,在通过该Extension机制添加新设备时,不需要修改原生的Pytorch源码,只需要将新设备对应的算子以第三方扩展包的形式动态注册到Pytorch中即可。
目标处理器泛指当前任一个通用处理器,包括但不限于是人工智能处理器IPU、中央处理器CPU、图形处理器GPU中的一种处理器,或者多种处理器组成的异构处理器。那么目标属性类指的就是在原始处理器上扩展的目标处理器对应的Tensor属性类。
以目标处理器是人工智能处理器MLU为例,在原生Pytorch所属的原始处理器上扩展了MLU之后,MLU的Tensor类继承关系示意图可参见图4所示,其中,图4是在图3的基础上增加了MLUTensorImpl类,而MLUTensorImpl类继承于TensorImpl类,该MLUTensorImpl类就是目标属性类,其为基于原生Pytorch Tensor类中的TensorImpl类(原始属性类)派生出的新的用于扩展MLU设备特有的属性的类。
示例地,MLUTensorImpl类为:
其中,处理器运行算子执行算子操作时,可以是基于计算指令执行的,例如,运行神经网络中的算子的计算指令,该计算指令是指示对目标处理器中对应算子执行计算操作的指令。本披露实施例对处理器的算子类型、模式等信息不作限定。目标属性类中存储有目标处理器的属性信息,因此,在接收到算子的计算指令后,从目标处理器对应的目标属性类中获取目标处理器的属性信息。
S102,创建目标处理器的目标数据类,并从原始处理器的原始数据类中复制待计算数据至目标数据类中。
在执行算子的计算操作时,除了需要获取到该算子所需的属性信息,还需要获取该算子进行计算时所需的具体数据。但待计算的具体数据是存储在原始处理器的数据类中,因此,需从原始处理器的原始数据类中复制待计算数据至目标数据类中,之后,就可以直接从目标数据类中获取到算子所需的具体数据,该具体数据即为待计算数据。
上述图3所示的Pytorch Tensor类继承关系图中,Storage类是用于存储具体的数据,而原始数据类也是指存储了具体数据的类,所以在图3中,原生Pytorch中的Storage类就相当于本披露实施例中的原始数据类,而本披露实施例中的目标数据类指的是扩展的目标处理器的数据类,即目标处理器的目标数据类,其中,目标处理器的目标数据类是实时创建的,且是在接收到上述计算指令之后,从原始数据类中复制待计算数据时创建的。可以理解为,目标数据类是在进行算子计算操作时,从原始数据类(Storage类)中复制具体数据时生成的类,在不进行算子计算时,是无需创建目标数据类的。
同样,以目标处理器是人工智能处理器MLU为例,创建的目标处理器的目标数据类即为MLU的Storage类,且该MLU的Storage类中的待计算数据为从原始的Storage类中复制的。
S103,根据目标处理器的属性信息和待计算数据对应算子执行计算操作。
从目标处理器的目标属性类中获取到了属性信息,从原始处理器的原始数据类中复制了待计算的数据,然后根据属性信息和待计算的数据就可以对目标处理器中对应算子执行计算操作了。
例如,MLUTensorImpl为目标属性类,Storage为原始数据类,那么当Tensor传递到MLU中对应的算子后,就可以从MLUTensorImpl中获取到MLU特有的属性,从Storage中复制获取到所存储的待计算的MLU数据,从而MLU中对应的算子进行相应的计算操作。
目标处理器是基于Pytorch的Extension机制扩展的,基于此机制,相关技术中,一些用户在使用该机制进行扩展新设备的时候,使用该机制添加了张量处理器(tensorprocessing unit,TPU)支持。例如,Google XLA将其对应的所有算子动态注册到Pytorch中,并创建了XLATensorImpl类用于存放XLA特有的属性,其类的继承关系如图5所示,从图5可看出,XLATensorImpl类继承自TensorImpl类,用于存放XLA特有的属性,TensorImpl属于原生框架的类,即XLATensorImpl类在原生框架TensorImpl中调用属性信息。由于XLA只是作为Pytorch和Tensorflow(tensorflow是一个深度学习的开源工具)之间的一个桥梁,其是将Pytorch的算子调用转换成一个静态的计算图,然后传递给Tensorflow XLA做具体的计算,在图运算的过程中没有使用Storage存储具体的数据,只是构建了静态的计算图,具体的运算都是在Tensorflow中完成的。可见,Google XLA添加的是特定的TPU设备的支持,这就导致了Google XLA这种方式在Pytorch和Tensorflow间存在强耦合性,这对于其他处理器(例如MLU设备)来说是完全不适用的,也不符合Pytorch社区生态和使用习惯。相比于传统技术,本披露提供的扩展信息方法中,设置继承于原始属性类的目标属性类来存储目标处理器的特有的属性信息,将目标处理器的真实数据继续存放在原始数据类Storage中,沿用了Tensor本身的继承关系,当Tensor传递到框架侧目标处理器对应的算子后,就可以从目标属性类中获取到目标处理器特有的属性,从原始数据类Storage中获取到Tensor中所存储的目标处理器数据,以便进行相应的计算。
因此,本披露实施例中提供的扩展信息方法,在接收用于指示对目标处理器中对应算子执行计算操作的计算指令后,从目标处理器的目标属性类中获取目标处理器的属性信息,该目标属性类继承于原始处理器的原始属性类,然后创建目标处理器的目标数据类,并从原始处理器的原始数据类中复制待计算数据至目标数据类中,最后根据目标处理器的属性信息和待计算数据对对应算子执行计算操作。该方法通过目标属性类来存储的目标处理器的真实数据的属性信息,而目标处理器的真实数据在计算过程中,会实时地从原始数据类中复制过来到目标处理器的目标数据类中,这样,就可以直接从目标属性类中获取目标处理器的特有属性,从原始数据类中获取目标处理器的真实数据,无需依赖第三方数据算法库,仅仅基于原生的Pytorch机制即可运行,使得扩展属性信息的方式更加具有通用性,从而有效地实现了在TensorImpl中扩展通用处理器属性信息。这样,无需依赖第三方数据算法库,从而减少了Pytorch和第三方库间存在强耦合性,符合生态社区的要求。
基于上述实施例,下面对目标属性类和目标数据类的创建方式的其中一种可实施方式进行说明。在一个实施例中,该方法还包括:神经网络框架初始化时,注册预设的第一算子和第二算子;第一算子用于创建目标属性类;第二算子用于创建目标数据类。
例如,可以是在目标处理器启动后,上述接收计算指令的步骤之前,神经网络框架初始化时在目标处理器上搭建的神经网络框架中注册预设的第一算子和第二算子,其中,第一算子用于创建目标属性类,第二算子用于创建目标数据类,即在第一算子中实现目标属性类构建,在第二算子中实现目标数据类构建。
其中,第一算子和第二算子本身是需要预先创建的,以便在使用时可在神经网络框架时直接运行。可选地,如图6所示,上述在神经网络框架中注册预设的第一算子和第二算子包括以下步骤:
S201,将第一算子和第二算子生成扩展安装包。
S202,通过扩展安装包,在神经网络框架中注册第一算子和第二算子。
预先创建好的第一算子和第二算子是代码格式文本,需将其分别生成扩展安装包,该扩展安装包中包括算子的所有文件,其中,该第一算子和第二算子创建时可采用C++编写,并生成C++扩展安装包。将扩展安装包存至神经网络源文件的对应路径后,运行该扩展安装包,即可完成对第一算子和第二算子的注册。
将第一算子和第二算子注册到神经网络框架中后,在第一算子中实现目标属性类构建,在第二算子中实现目标数据类构建。在目标属性类创建的时机,例如,该创建时机是在接收到计算指令之前预先创建的,则在接收到计算指令之前,可通过调用第一算子,这样该第一算子运行完成之后可得到创建的目标属性类;同样,在目标数据类的创建时机,例如,该创建时机是在接收到计算指令之后,需要获取目标处理器中对应算子所需的待计算数据时创建的时间,此时可通过调用第二算子,在第二算子运行完成之后可得到创建的目标数据类。例如,第一算子为at::empty()算子,第二算子是at::copy_()算子;将at::empty()算子和at::copy_()算子注册到Pytorch中后,在at::empty()算子中实现目标属性类的构建,在at::copy_()中完成目标数据类的构建;具体地,可以是通过to()函数在对应时机依次调用at::empty()和at::copy_(),对应创建出MLUTensorImpl(目标属性类)和MLUStorage(目标数据类),需要说明的是,这里的to()函数指的是实现设备异构数据拷贝的函数。
可参见图7所示,图7为MLU的属性类和数据类构建示意图。图7中可看出Pytorch框架的前端是用Python实现的,后端是用C++实现的,后端主要做计算。后端以扩展处理器是MLU,原处理器是CPU和GPU为例,则后端中第一算子用于创建一个空的MLUTensor类,用于从CPU和GPU(原始处理器)中获取属性信息到MLU的属性类中;第二算子创建一个数据类,将CPU和GPU(原始处理器)中的计算数据拷贝到MLU(目标处理器)的数据类中。
示例地,第一算子是at::empty(),第二算子是at::copy_(),MLU的属性类为MLUTensorImpl,则前端Python将数据信息发送至后端做计算的MLU设备中的实现方式为:Input_tensor=torch.ones(1,3,224,224).to(xm.mlu_device());而后端进行数据类和属性类的创建的实现方式为:Tensor=to(device)。
在后端中第一算子用于创建一个空的MLUTensor类为:at::empty(device)-->dispatch()-->MLU::empty();在后端中第二算子创建一个数据类为:at::copy_(tensor)-->dispatch()-->MLU::copy_()。
本披露实施例提供的扩展信息方法,在神经网络框架初始化时,注册预设的用于创建目标属性类的第一算子和用于创建目标数据类第二算子。预先将第一算子和第二算子注册到神经网络框架中,在实际应用时,直接调用第一算子和第二算子在对应的时机创建目标属性类和目标数据类,以快速方便地获取到目标处理器中对应算子所需的属性信息和待计算数据,从而提高了算子运行效率。
目标属性类的创建时机在接收到计算指令之前,预先创建好目标属性类,该创建的目标属性类是继承于原始属性类的,相当于在Pytorch Tensor的TensorImpl类(原始属性类)派生出一个新的MLUTensorImpl类(目标属性类),以扩展MLU设备(目标处理器)特有的属性。因此,在一个实施例中,如图8所示,在接收计算指令之前,该方法还包括:
S301,调用第一算子,创建空的目标属性类。
可继续参见上述图7所示,调用第一算子(at::empty()算子)后,创建的是一个空的目标属性类,即开始创建的目标处理器的目标属性类是空的。目标处理器还未正式运行时,目标处理器中各算子的所需的属性信息还未存储,需预先搭建好用于存储目标处理器属性信息的类。
S302,获取目标处理器的属性信息,将目标处理器的属性信息存储至空的目标属性类中。
将获取到的目标处理器的属性信息存储至空的目标属性类中,以便在对目标处理器中对应算子进行计算操作时,从目标属性类中获取计算操作所需的属性信息。
本披露实施例中,通过调用第一算子,创建空的目标属性类,然后获取目标处理器的属性信息,将目标处理器的属性信息存储至空的目标属性类中。预先创建好目标属性类,并将目标处理器的属性信息存储至目标属性类中,保证了应用时属性信息的快速获取。
目标数据类的创建时机是在接收到计算指令之后,需要获取目标处理器中对应算子所需的待计算数据时创建的。因此,在一个实施例中,上述S102中创建所述目标处理器的目标数据类包括:调用第二算子创建空的目标数据类,其中,目标数据类为空。
调用第二算子创建的目标数据类也是空的,而目标处理器中对应算子所需的待计算数据实际上是存储在原始处理器的原始数据类中。例如,上述图7中,调用at::copy_()算子之后,是从原始处理器(CPU/GPU)中拷贝数据到目标处理器(MLU)的空的目标数据类中。
本披露实施例中,在接收到计算指令后,调用第二算子创建空的目标数据类。在需要获取目标处理器中对应算子所需的待计算数据时创建预先创建目标数据类,并拷贝原始数据类中的待计算数据至目标数据类中,保证了应用时待计算数据的快速获取。
如图9所示,提供一种扩展信息方法,该方法包括:
S1,在神经网络框架初始化时,将第一算子和第二算子生成扩展安装包;第一算子用于创建目标属性类;第二算子用于创建目标数据类。
S2,通过扩展安装包,在神经网络框架中注册第一算子和第二算子。
S3,调用第一算子,创建空的目标属性类。
S4,获取目标处理器的属性信息,将目标处理器的属性信息存储至空的目标属性类中。
S5,从目标处理器的目标属性类中获取目标处理器的属性信息;目标属性类继承于原始处理器的原始属性类。
S6,创建目标处理器的目标数据类,并从原始处理器的原始数据类中复制待计算数据至目标数据类中。
S7,根据目标处理器的属性信息和待计算数据对对应算子执行计算操作。
本实施例提供的扩展信息方法中各步骤,其实现原理和技术效果与前面扩展信息方法过程相似,在此不再赘述。本实施例中各步骤的实现方式只是一种举例,对各实现方式不作限定,各步骤的顺序在实际应用中可进行调整,只要可以实现各步骤的目的即可。
应该理解的是,虽然上述流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,上述流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图10所示,提供了一种扩展信息装置,该装置包括:获取模块10、创建模块11和计算模块12,其中:
获取模块10,用于从目标处理器的目标属性类中获取目标处理器的属性信息;目标属性类继承于原始处理器的原始属性类;
创建模块11,用于创建目标处理器的目标数据类,并从原始处理器的原始数据类中复制待计算数据至目标数据类中;
计算模块12,用于根据目标处理器的属性信息和待计算数据对对应算子执行计算操作。
在一个实施例中,该装置还包括:
注册模块,用于神经网络框架初始化时,注册预设的第一算子和第二算子;第一算子用于创建目标属性类;第二算子用于创建目标数据类。
在一个实施例中,上述注册模块包括:
生成单元,用于将第一算子和第二算子生成扩展安装包;
注册单元,用于通过扩展安装包,在神经网络框架中注册第一算子和第二算子。
在一个实施例中,该装置包括:
调用模块,用于调用第一算子,创建空的目标属性类;
存储模块,用于获取目标处理器的属性信息,将目标处理器的属性信息存储至空的目标属性类中。
在一个实施例中,上述创建模块11,具体用于调用第二算子创建空的目标数据类,其中,目标数据类为空。
关于扩展信息装置的具体限定可以参见上文中对于扩展信息方法的限定,在此不再赘述。上述扩展信息装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以以硬件形式内嵌于或独立于电子设备中的处理器中,也可以以软件形式存储于电子设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,本披露实施例还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行所述计算机程序时实现以下步骤:
从目标处理器的目标属性类中获取目标处理器的属性信息;目标属性类继承于原始处理器的原始属性类;
创建目标处理器的目标数据类,并从原始处理器的原始数据类中复制待计算数据至目标数据类中;
根据目标处理器的属性信息和待计算数据对对应算子执行计算操作。
上述实施例提供的一种电子设备,其实现原理和技术效果与上述方法实施例类似,在此不再赘述。
在一个实施例中,本披露实施例还提供一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现以下步骤:
从目标处理器的目标属性类中获取目标处理器的属性信息;目标属性类继承于原始处理器的原始属性类;
创建目标处理器的目标数据类,并从原始处理器的原始数据类中复制待计算数据至目标数据类中;
根据目标处理器的属性信息和待计算数据对对应算子执行计算操作。
上述实施例提供的一种存储介质,其实现原理和技术效果与上述方法实施例类似,在此不再赘述。
在一个实施例中,本披露实施例还提供一种计算机程序产品,包括计算机程序/指令,所述计算机程序/指令被处理器执行时实现以下步骤:
从目标处理器的目标属性类中获取目标处理器的属性信息;目标属性类继承于原始处理器的原始属性类;
创建目标处理器的目标数据类,并从原始处理器的原始数据类中复制待计算数据至目标数据类中;
根据目标处理器的属性信息和待计算数据对对应算子执行计算操作。
上述实施例提供的一种计算机程序产品,其实现原理和技术效果与上述方法实施例类似,在此不再赘述。
图11是示出根据本披露实施例的一种组合处理装置1000的结构图。如图10中所示,该组合处理装置1000包括计算处理装置1002、接口装置1004、其他处理装置1006和存储装置1008。根据不同的应用场景,计算处理装置中可以包括一个或多个计算装置1010,该计算装置可以配置用于执行本文结合附图提供的扩展信息过程所描述的操作。
在不同的实施例中,本披露的计算处理装置可以配置成执行用户指定的操作。在示例性的应用中,该计算处理装置可以实现为单核人工智能处理器或者多核人工智能处理器。类似地,包括在计算处理装置内的一个或多个计算装置可以实现为人工智能处理器核或者人工智能处理器核的部分硬件结构。当多个计算装置实现为人工智能处理器核或人工智能处理器核的部分硬件结构时,就本披露的计算处理装置而言,其可以视为具有单核结构或者同构多核结构。
在示例性的操作中,本披露的计算处理装置可以通过接口装置与其他处理装置进行交互,以共同完成用户指定的操作。根据实现方式的不同,本披露的其他处理装置可以包括中央处理器(Central Processing Unit,CPU)、图形处理器(Graphics ProcessingUnit,GPU)、人工智能处理器等通用和/或专用处理器中的一种或多种类型的处理器。这些处理器可以包括但不限于数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本披露的计算处理装置而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算处理装置和其他处理装置共同考虑时,二者可以视为形成异构多核结构。
在一个或多个实施例中,该其他处理装置可以作为本披露的计算处理装置(其可以具体化为人工智能例如神经网络运算的相关运算装置)与外部数据和控制的接口,执行包括但不限于数据搬运、对计算装置的开启和/或停止等基本控制。在另外的实施例中,其他处理装置也可以和该计算处理装置协作以共同完成运算任务。
在一个或多个实施例中,该接口装置可以用于在计算处理装置与其他处理装置间传输数据和控制指令。例如,该计算处理装置可以经由所述接口装置从其他处理装置中获取输入数据,写入该计算处理装置片上的存储装置(或称存储器)。进一步,该计算处理装置可以经由所述接口装置从其他处理装置中获取控制指令,写入计算处理装置片上的控制缓存中。替代地或可选地,接口装置也可以读取计算处理装置的存储装置中的数据并传输给其他处理装置。
附加地或可选地,本披露的组合处理装置还可以包括存储装置。如图中所示,该存储装置分别与所述计算处理装置和所述其他处理装置连接。在一个或多个实施例中,存储装置可以用于保存所述计算处理装置和/或所述其他处理装置的数据。例如,该数据可以是在计算处理装置或其他处理装置的内部或片上存储装置中无法全部保存的数据。
在一些实施例里,本披露还公开了一种芯片(例如图12中示出的芯片1102)。在一种实现中,该芯片是一种系统级芯片(System on Chip,SoC),并且集成有一个或多个如图11中所示的组合处理装置。该芯片可以通过对外接口装置(如图12中示出的对外接口装置1106)与其他相关部件相连接。该相关部件可以例如是摄像头、显示器、鼠标、键盘、网卡或wifi接口。在一些应用场景中,该芯片上可以集成有其他处理单元(例如视频编解码器)和/或接口模块(例如DRAM接口)等。在一些实施例中,本披露还公开了一种芯片封装结构,其包括了上述芯片。在一些实施例里,本披露还公开了一种板卡,其包括上述的芯片封装结构。下面将结合图12对该板卡进行详细地描述。
图12是示出根据本披露实施例的一种板卡1100的结构示意图。如图12中所示,该板卡包括用于存储数据的存储器件1104,其包括一个或多个存储单元1110。该存储器件可以通过例如总线等方式与控制器件1108和上文所述的芯片1102进行连接和数据传输。进一步,该板卡还包括对外接口装置1106,其配置用于芯片(或芯片封装结构中的芯片)与外部设备1112(例如服务器或计算机等)之间的数据中继或转接功能。例如,待处理的数据可以由外部设备通过对外接口装置传递至芯片。又例如,所述芯片的计算结果可以经由所述对外接口装置传送回外部设备。根据不同的应用场景,所述对外接口装置可以具有不同的接口形式,例如其可以采用标准PCIE接口等。
在一个或多个实施例中,本披露板卡中的控制器件可以配置用于对所述芯片的状态进行调控。为此,在一个应用场景中,该控制器件可以包括单片机(Micro ControllerUnit,MCU),以用于对所述芯片的工作状态进行调控。
根据上述图11和图12的描述,本领域技术人员可以理解本披露也公开了一种电子设备或装置,其可以包括一个或多个上述板卡、一个或多个上述芯片和/或一个或多个上述组合处理装置。
根据不同的应用场景,本披露的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、PC设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。本披露的电子设备或装置还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。进一步,本披露的电子设备或装置还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本披露方案的算力高的电子设备或装置可以应用于云端设备(例如云端服务器),而功耗小的电子设备或装置可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。
需要说明的是,为了简明的目的,本披露将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本披露的方案并不受所描述的动作的顺序限制。因此,依据本披露的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本披露所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本披露某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本披露对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本披露某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。
在具体实现方面,基于本披露的公开和教导,本领域技术人员可以理解本披露所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的电子设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行划分,而实际实现时也可以有另外的划分方式。又例如,可以将多个单元或组件结合或者集成到另一个系统,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。
在本披露中,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的需要,可以选择其中的部分或者全部单元来实现本披露实施例所述方案的目的。另外,在一些场景中,本披露实施例中的多个单元可以集成于一个单元中或者各个单元物理上单独存在。
在一些实现场景中,上述集成的单元可以采用软件程序模块的形式来实现。如果以软件程序模块的形式实现并作为独立的产品销售或使用时,所述集成的单元可以存储在计算机可读取存储器中。基于此,当本披露的方案以软件产品(例如计算机可读存储介质)的形式体现时,该软件产品可以存储在存储器中,其可以包括若干指令用以使得计算机设备(例如个人计算机、服务器或者网络设备等)执行本披露实施例所述方法的部分或全部步骤。前述的存储器可以包括但不限于U盘、闪存盘、只读存储器(Read Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
在另外一些实现场景中,上述集成的单元也可以采用硬件的形式实现,即为具体的硬件电路,其可以包括数字电路和/或模拟电路等。电路的硬件结构的物理实现可以包括但不限于物理器件,而物理器件可以包括但不限于晶体管或忆阻器等器件。鉴于此,本文所述的各类装置(例如计算装置或其他处理装置)可以通过适当的硬件处理器来实现,例如CPU、GPU、FPGA、DSP和ASIC等。进一步,前述的所述存储单元或存储装置可以是任意适当的存储介质(包括磁存储介质或磁光存储介质等),其例如可以是可变电阻式存储器(Resistive Random Access Memory,RRAM)、动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)、静态随机存取存储器(Static Random Access Memory,SRAM)、增强动态随机存取存储器(Enhanced Dynamic Random Access Memory,EDRAM)、高带宽存储器(High Bandwidth Memory,HBM)、混合存储器立方体(Hybrid Memory Cube,HMC)、ROM和RAM等。
虽然本文已经示出和描述了本披露的多个实施例,但对于本领域技术人员显而易见的是,这样的实施例只是以示例的方式来提供。本领域技术人员可以在不偏离本披露思想和精神的情况下想到许多更改、改变和替代的方式。应当理解的是在实践本披露的过程中,可以采用对本文所描述的本披露实施例的各种替代方案。所附权利要求书旨在限定本披露的保护范围,并因此覆盖这些权利要求范围内的等同或替代方案。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
依据以下条款可更好地理解前述内容:
条款A1,一种扩展信息的方法,所述方法包括:
从目标处理器的目标属性类中获取所述目标处理器的属性信息;所述目标属性类继承于原始处理器的原始属性类;
创建所述目标处理器的目标数据类,并从所述原始处理器的原始数据类中复制待计算数据至所述目标数据类中;
根据所述目标处理器的属性信息和所述待计算数据对所述对应算子执行计算操作。
条款A2,根据条款A1所述的方法,所述方法还包括:
神经网络框架在初始化时,注册预设的第一算子和第二算子;所述第一算子用于创建所述目标属性类;所述第二算子用于创建所述目标数据类。
条款A3,根据条款A2所述的方法,所述注册预设的第一算子和第二算子,包括:
将所述第一算子和所述第二算子生成扩展安装包;
通过所述扩展安装包,在所述神经网络框架中注册所述第一算子和所述第二算子。
条款A4,根据权利要求A2或A3所述的方法,所述方法还包括:
调用所述第一算子,创建空的所述目标属性类;
获取所述目标处理器的属性信息,将所述目标处理器的属性信息存储至所述空的目标属性类中。
条款A5,根据权利要求A2或A3所述的方法,所述创建所述目标处理器的目标数据类,包括:调用所述第二算子创建空的所述目标数据类,其中,所述目标数据类为空。
条款A6、一种扩展信息的装置,所述装置包括:
获取模块,用于从目标处理器的目标属性类中获取所述目标处理器的属性信息;所述目标属性类继承于原始处理器的原始属性类;
创建模块,用于创建所述目标处理器的目标数据类,并从所述原始处理器的原始数据类中复制待计算数据至所述目标数据类中;
计算模块,用于根据所述目标处理器的属性信息和所述待计算数据对所述对应算子执行计算操作。
条款A7、根据权利要求A6所述的装置,所述装置包括:注册模块,用于神经网络框架在初始化时,注册预设的第一算子和第二算子;所述第一算子用于创建所述目标属性类;所述第二算子用于创建所述目标数据类。
条款A8、根据权利要求A7所述的装置,所述注册模块包括:
生成单元,用于将所述第一算子和所述第二算子生成扩展安装包;
注册单元,用于通过所述扩展安装包,在所述神经网络框架中注册所述第一算子和所述第二算子。
条款A9、根据权利要求A7或A8所述的装置,所述装置包括:
调用模块,用于调用所述第一算子,创建空的所述目标属性类;
存储模块,用于获取所述目标处理器的属性信息,将所述目标处理器的属性信息存储至所述空的目标属性类中。
条款A10、根据权利要求A7或A8所述的装置,所述创建模块,还用于,调用所述第二算子创建空的所述目标数据类,其中,所述目标数据类为空。
条款A11、一种数据处理装置,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时条款A1至条款A5中任一项所述方法的步骤。
条款A12、一种组合处理装置,所述组合处理装置包括如条款A11所述的数据处理装置、通用互联接口和除所述数据处理装置以外的其它处理装置;所述数据处理装置与所述其它处理装置进行交互。
条款A13、一种芯片,所述芯片包括如条款A12所述的组合处理装置。
条款A14、一种板卡,所述板卡包括如条款A13所述的芯片。
条款A15、一种电子设备,所述电子设备包括如条款A14所述的板卡。
条款A16、一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如条款A1至条款A5中任一项所述的方法的步骤。
条款A17、一种存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如条款A1至条款A5中任一项所述的方法的步骤。
条款A18、一种计算机程序产品,包括计算机程序/指令,所述计算机程序/指令被处理器执行时如条款A1至条款A5中任一项所述的方法的步骤。
以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明仅用于帮助理解本披露的方法及其核心思想。同时,本领域技术人员依据本披露的思想,基于本披露的具体实施方式及应用范围上做出的改变或变形之处,都属于本披露保护的范围。综上所述,本说明书内容不应理解为对本披露的限制。
Claims (10)
1.一种扩展信息的方法,其特征在于,所述方法包括:
从目标处理器的目标属性类中获取所述目标处理器的属性信息;所述目标属性类继承于原始处理器的原始属性类;
创建所述目标处理器的目标数据类,并从所述原始处理器的原始数据类中复制待计算数据至所述目标数据类中;
根据所述目标处理器的属性信息和所述待计算数据对所述对应算子执行计算操作。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
神经网络框架在初始化时,注册预设的第一算子和第二算子;所述第一算子用于创建所述目标属性类;所述第二算子用于创建所述目标数据类。
3.根据权利要求2所述的方法,其特征在于,所述注册预设的第一算子和第二算子,包括:
将所述第一算子和所述第二算子生成扩展安装包;
通过所述扩展安装包,在所述神经网络框架中注册所述第一算子和所述第二算子。
4.根据权利要求2或3所述的方法,其特征在于,所述方法还包括:
调用所述第一算子,创建空的所述目标属性类;
获取所述目标处理器的属性信息,将所述目标处理器的属性信息存储至所述空的目标属性类中。
5.根据权利要求2或3所述的方法,其特征在于,所述创建所述目标处理器的目标数据类,包括:
调用所述第二算子创建所述目标数据类,其中,所述目标数据类为空。
6.根据权利要求1所述的方法,其特征在于,所述目标处理器为机器学习处理器。
7.一种扩展信息的装置,其特征在于,所述装置包括:
获取模块,用于从目标处理器的目标属性类中获取所述目标处理器的属性信息;所述目标属性类继承于原始处理器的原始属性类;
创建模块,用于创建所述目标处理器的目标数据类,并从所述原始处理器的原始数据类中复制待计算数据至所述目标数据类中;
计算模块,用于根据所述目标处理器的属性信息和所述待计算数据对所述对应算子执行计算操作。
8.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述的方法的步骤。
9.一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
10.一种计算机程序产品,包括计算机程序/指令,其特征在于,所述计算机程序/指令被处理器执行时实现所述权利要求1至6中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110532068.4A CN115373646A (zh) | 2021-05-17 | 2021-05-17 | 扩展信息方法、装置和相关产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110532068.4A CN115373646A (zh) | 2021-05-17 | 2021-05-17 | 扩展信息方法、装置和相关产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115373646A true CN115373646A (zh) | 2022-11-22 |
Family
ID=84058718
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110532068.4A Pending CN115373646A (zh) | 2021-05-17 | 2021-05-17 | 扩展信息方法、装置和相关产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115373646A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117675742A (zh) * | 2023-12-06 | 2024-03-08 | 广州方舟信息科技有限公司 | 通信数据处理方法、装置、电子设备和存储介质 |
-
2021
- 2021-05-17 CN CN202110532068.4A patent/CN115373646A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117675742A (zh) * | 2023-12-06 | 2024-03-08 | 广州方舟信息科技有限公司 | 通信数据处理方法、装置、电子设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109284815B (zh) | 神经网络模型算法编译方法、装置及相关产品 | |
EP3660628A1 (en) | Dynamic voltage frequency scaling device and method | |
CN109543825B (zh) | 神经网络模型算法编译方法、装置及相关产品 | |
CN112070202B (zh) | 一种融合图的生成方法、生成装置和计算机可读存储介质 | |
CN114692823A (zh) | 一种算子融合的方法、装置、存储介质及电子设备 | |
CN112465133A (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN115129460A (zh) | 获取算子硬件时间的方法、装置、计算机设备和存储介质 | |
CN115373646A (zh) | 扩展信息方法、装置和相关产品 | |
CN110458285B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN112084023A (zh) | 数据并行处理的方法、电子设备及计算机可读存储介质 | |
CN111061507A (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN112801276B (zh) | 数据处理方法、处理器及电子设备 | |
CN109542837B (zh) | 运算方法、装置及相关产品 | |
CN114692824A (zh) | 一种神经网络模型的量化训练方法、装置和设备 | |
CN109558565B (zh) | 运算方法、装置及相关产品 | |
CN112766475A (zh) | 处理部件及人工智能处理器 | |
CN112667227A (zh) | 可视化设计流水线的方法及可读存储介质 | |
CN112463158B (zh) | 编译方法、装置、电子设备和存储介质 | |
CN109561146A (zh) | 文件下载方法、装置、终端设备 | |
CN111290788B (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN111353125B (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN110458286B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN115374915A (zh) | 算子运行方法、装置和相关产品 | |
CN111290789B (zh) | 运算方法、装置、计算机设备和存储介质 | |
CN111026440B (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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20221219 Address after: 215300 room 5, 232 Yuanfeng Road, Yushan Town, Kunshan City, Suzhou City, Jiangsu Province Applicant after: Cambrian (Kunshan) Information Technology Co.,Ltd. Address before: 6 / F, block B, 168 Tonghui Road, Pudong New Area, Shanghai 201306 Applicant before: SHANGHAI CAMBRICON INFORMATION TECHNOLOGY Co.,Ltd. |
|
TA01 | Transfer of patent application right |