一种张量处理装置及方法
技术领域
本发明实施例涉及数据处理技术,尤其涉及一种张量处理装置及方法。
背景技术
随着技术的进步,每天都有越来越多的数据被创建和分析。机器学习技术(例如深度学习和卷积神经网络),作为分析这些大量数据的重要方法,正变得日益重要。
张量是一个数学概念,包括标量、向量和线性算子,可通过坐标系统来表达,标记为张量的数字。张量被广泛应用于深度神经网络领域,用于表示神经元的前置信息。神经网络的训练过程和推理过程中均需要对张量进行大量处理,张量的处理效率对神经网络的计算速度存在重要影响。
目前张量处理过程中,是将张量数据传输至运算单元,基于运算单元对张量数据进行运算,张量运算种类多(例如张量数据的运算包括多种类型的变换以及变换后张量的计算),数据量大,导致张量数据的处理效率低。
发明内容
本发明提供一种张量处理装置及方法,以实现提高张量处理效率。
第一方面,本发明实施例提供了一种张量处理装置,包括:第一数据模块、第二数据模块和张量变换模块,所述张量变换模块设置在所述第一数据模块向所述第二数据模块进行数据传输的线路上,基于所述数据总线分别与所述第一数据模块和所述第二数据模块连接;其中,
所述张量变换单元用于接收所述第一数据模块传输的张量数据,对所述张量数据进行张量变换处理,将变换后的张量数据传输至所述第二数据模块。
进一步的,所述张量变换模块包括数据接收单元、张量变换单元和数据发送单元;
所述数据接收单元,基于所述数据总线与所述第一数据模块连接,用于接收所述第一数据模块通过所述数据总线传输的张量数据;
所述张量变换单元,与所述数据接收单元和所述数据发送单元连接,用于对所述张量数据进行张量变换处理,将所述变换后的张量数据发送至所述数据发送单元;
所述数据发送单元,基于所述数据总线与所述第二数据模块连接,用于基于所述数据总线将所述变换后的张量数据传输至所述第二数据模块。
进一步的,所述张量变换模块还包括指令解析单元,所述指令解析单元基于控制总线与控制模块连接,接收所述控制模块基于所述控制总线发送的张量变换指令,并解析所述张量变换指令,得到解析结果;
所述指令解析单元与所述张量变换单元连接,用于将所述解析结果发送至所述张量变换单元;
所述张量变换单元还用于基于所述解析结果中的张量变换类型对张量数据进行张量变换处理。
进一步的,所述张量变换单元包括至少两个数据变换子单元,所述张量变换单元根据所述解析指令中的张量变换类型确定进行张量变换处理的数据变换子单元。
进一步的,所述张量变换单元还包括数据缓存子单元,所述数据缓存子单元的输入端与至少一个数据变换子单元的输出端连接,所述数据缓存子单元的输出端与至少一个数据变换子单元的输入端连接,用于对变换前/后的张量数据进行缓存,其中,所述数据缓存子单元的输入端和输出端连接的数据变换子单元不相同。
进一步的,所述张量变换模块还包括接收控制单元;
所述接收控制单元分别与所述指令解析单元和所述数据接收单元连接,用于接收所述指令解析单元发送的解析结果,基于所述解析结果中的张量变换所需参数确定数据源地址,将所述数据源地址发送至所述数据接收单元;
所述数据接收单元根据所述数据源地址读取所述张量数据。
进一步的,所述张量变换模块还包括发送控制单元;
所述发送控制单元分别与所述指令解析单元、所述张量变换单元和所述数据发送单元连接,用于接收所述指令解析单元发送的解析结果和所述张量变换单元发送的张量数据的源地址以及所述张量数据的维度信息,并根据所述解析结果中的张量变换类型、所述张量数据的源地址以及所述张量数据的维度信息确定变换后张量数据的目的地址,将所述目的地址发送至所述数据发送单元;
所述数据发送单元根据所述目的地址将所述变换后的张量数据传输至所述第二数据模块。
进一步的,所述张量变换处理包括对齐、转置、变形、压缩、采样和广播。
进一步的,所述第一数据模块为数据存储模块或数据处理模块,所述第二数据模块为数据存储模块或数据处理模块。
进一步的,设置于所述第一数据模块和所述第二数据模块的数据传输线路上的张量变换模块为至少一个;
当张量变换模块为至少两个时,所述至少两个张量变换模块并行、串行或者串并行混合设置在所述第一数据模块和所述第二数据模块之间。
第二方面,本发明实施例还提供了一种张量处理方法,该方法包括:
张量变换模块基于控制总线接收张量变换指令;
所述张量变换模块基于数据总线接收第一数据模块传输的张量数据,其中,所述张量变换模块设置在所述第一数据模块向所述第二数据模块进行数据传输的线路上;
所述张量变换模块根据所述张量变换指令对所述张量数据进行张量变换处理,将变换后的张量数据基于所述数据总线发送至所述第二数据模块。
进一步的,所述张量变换模块根据所述张量变换指令对所述张量数据进行张量变换处理,包括:
所述张量变换模块解析所述张量变换指令,根据解析结果确定张量变换类型和张量变换所需参数;
所述张量变换模块根据所述张量变换所需参数确定数据源地址,基于所述数据源地址读取所述张量数据;
所述张量变换模块根据所述张量变换类型对读取的张量数据进行对应的张量变换处理。
进一步的,所述张量变换模块将变换后的张量数据基于所述数据总线发送至第二数据模块,包括:
所述张量变换模块根据读取张量数据的数据源地址、所述张量数据的维度信息和张量变换类型确定变换后张量数据的目的地址;
所述张量变换模块根据所述目的地址,基于数据总线将所述变换后张量数据发送至所述第二数据模块。
进一步的,所述张量变换处理包括对齐、转置、变形、压缩、采样和广播。
本实施例提供的张量处理装置,在数据传输过程中,基于支持张量变换的张量变换模块对张量数据进行张量变换,且该张量变换模块由芯片的原始硬件组成,在不影响数据传输的同时,实现张量变换,降低了后续计算单元的运算压力,提高了数据处理效率。
附图说明
图1是本发明实施例一提供的一种张量处理装置的结构示意图;
图2是本发明实施例一提供的另一种张量处理装置的结构示意图;
图3是本发明实施例一提供的另一种张量处理装置的结构示意图;
图4是本发明实施例一提供的另一种张量处理装置的结构示意图;
图5是本发明实施例一提供的另一种张量处理装置的结构示意图;
图6是本发明实施例二提供的一种张量处理方法的流程示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1是本发明实施例一提供的一种张量处理装置的结构示意图,该张量处理装置可以是集成于实体芯片,包括:第一数据模块110、第二数据模块120和张量变换模块130,张量变换模块130设置在第一数据模块110向第二数据模块120进行数据传输的线路上,基于数据总线140分别与第一数据模块110和第二数据模块120连接;其中,张量变换模块130用于接收第一数据模块传输的张量数据,对张量数据进行张量变换处理,将变换后的张量数据传输至第二数据模块。
对张量数据的运算包括两种类型,一种运算方式为张量数值计算,会改变张量数值,另一类运算方式为张量变换,仅改变张量的形态和元素顺序。可选的,张量变换处理包括但不限于对齐、转置、变形、压缩、采样和广播。张量对齐处理可以是将张量在给定维度上填充到给定尺寸,例如可以是利用给定值进行元素填充,示例性的,给定值可以是但不限于0;张量转置可以是将张量沿着给定的维度重新排列;张量变形可以是将张量的维度变换为给定的另一种维度,对张量元素进行设置;张量压缩可以是将稀疏张量转换为压缩格式表示的张量;张量采样可以是包括向上采样和向下采样,其中,向上采样可以是根据给定的间隔向张量中添加特性元素,向下采样可以是根据给定间隔进行数据抽取,以形成新的张量;张量广播可以是对张量进行复制,以得到至少一个张量副本。需要说明的是,上述张量变换处理仅是可执行的示例,还可以是包括其他用于改变张量的形态和/或元素顺序的变换方式。
在本实施例中,第一数据模块110基于数据总线140向第二数据模块120进行数据传输,张量变换模块130基于数据总线140分别与第一数据模块110和第二数据模块120连接,可将第一数据模块110传输的张量数据进行张量变换后,将变换后的张量数据传输至第二数据模块120,实现了在数据传输过程中进行张量变换。需要说明的是,第一数据模块110、第二数据模块120和张量变换模块130均集成于实体芯片中,例如实体芯片可以是人工智能加速芯片中,张量变换模块130为实体芯片中设置在数据传输线路上具有张量变换功能的原生硬件,处理速度快,加快了张量变换处理效率,同时避免了张量变换处理对数据传输速率的影响。
在本实施例中,不对第一数据模块110和第二数据模块120进行限定,只要第一数据模块110和第二数据模块120存在数据传输即可。在一些实施例中,第一数据模块110可以是数据存储模块或数据处理模块,第二数据模块120可以是数据存储模块或数据处理模块,其中,数据存储模块可以是用于对数据进行长时间存储的存储模块,还可以是用于对数据进行短时间存储的缓存模块;数据处理模块可以是用于数据进行变换处理或计算处理。示例性的,在一些实施例中,第一数据模块110和第二数据模块120可以是均为数据存储模块,或者均为数据处理模块,还可以是分别为数据存储模块和数据处理模块。可选的,人工智能加速芯片中包括两个以上的数据模块,任意两个具有数据传输的数据模块之间可以是设置有张量变换模块,便于在数据传输过程中进行张量变换处理。可选的,设置于第一数据模块110和第二数据模块120的数据传输线路上的张量变换模块130为至少一个,当张量变换模块为至少两个时,至少两个张量变换模块并行、串行或者串并行混合设置在第一数据模块和第二数据模块之间。其中,张量变换模块130可对张量数据进行一次张量变换,当第一数据模块110和第二数据模块120并行设置多个张量变换模块130时,可对张量数据进行同步处理,或者对不同的张量数据分别进行不同类型的张量变换处理,提高张量处理效率;当第一数据模块110和第二数据模块120串行设置多个张量变换模块130时,可分别对张量数据连续进行不同类型的张量变换处理,便于对张量数据进行多次变换处理。
需要说明的是,当第一数据模块向第二数据模块进行传输的数据无需进行张量变换时,张量变换模块仅用于进行数据传输。在一些实施例中,参见图2,图2是本发明实施例一提供的一种数据处理装置的结构示意图,在图2中在第一数据模块和第二数据模块之间设置两个数据传输线路,设置有张量变换模块的数据传输线路和单一的数据总线,当由第一数据模块向第二数据模块传输的数据需要进行张量变换时,基于设置有张量变换模块的数据传输线路进行张量变换和数据传输,当由第一数据模块向第二数据模块传输的数据不需要进行张量变换时,基于单一的数据总线进行传输。
图3是本发明实施例一提供的一种数据处理装置的结构示意图,需要说明的是,图3仅是一种可实现方式,而非对数据处理装置的限定。图3中包括数据存储模块、L3缓存模块、L2缓存模块、L1缓存模块和计算单元,且数据存储模块与L3缓存模块之间、L3缓存模块和L2缓存模块之间、L2缓存模块和L1缓存模块之间、L1缓存模块和计算单元之间存在数据传输,分别在数据存储模块与L3缓存模块之间、L3缓存模块和L2缓存模块之间、L2缓存模块和L1缓存模块之间设置张量变换模块,每一个张量变换模块可以是进行如下任一种张量变换处理:对齐、转置、变形、压缩、采样和广播。在数据从数据存储模块向L1缓存的传输过程中,对张量数据进行上述张量变换处理,当数据传输至计算单元时,直接进行张量数据的数值计算,无需在进行张量变换,降低了计算单元的运算压力,提高了数据处理效率。
本实施例提供的张量处理装置,在数据传输过程中,基于支持张量变换的张量变换模块对张量数据进行张量变换,且该张量变换模块由芯片的原始硬件组成,在不影响数据传输的同时,实现张量变换,降低了后续计算单元的运算压力,提高了数据处理效率。
在一些实施例中,张量变换模块130包括数据接收单元131、张量变换单元132和数据发送单元133,示例性的,参见图4,图4是本发明实施例一提供的一种张量处理装置的结构示意图。具体的,数据接收单元131,基于数据总线140与第一数据模块110连接,用于接收第一数据模块110通过数据总线140传输的张量数据;张量变换单元132,与数据接收单元和数据发送单元连接,用于对张量数据进行张量变换处理,将变换后的张量数据发送至数据发送单元133;数据发送单元133,基于数据总线140与第二数据模块120连接,用于基于数据总线将变换后的张量数据传输至第二数据模块120。在本实施例中,通过数据接收单元131接收第一数据模块110传输的张量数据,并可解析得到该张量数据的维度信息,将该张量数据发送至张量变换单元132进行张量变换处理,变换后的张量数据基于数据发送单元133发送至第二数据模块120。
可选的,张量变换模块还包括指令解析单元134,指令解析单元134基于控制总线150与控制模块连接,接收控制模块基于控制总线发送的张量变换指令,并解析张量变换指令,得到解析结果;指令解析单元134与张量变换单元132连接,用于将解析结果发送至张量变换单元;张量变换单元132还用于基于解析结果中的张量变换类型对张量数据进行张量变换处理。其中,控制模块可以是上层执行引擎,用于确定并生成对张量数据进行张量变换指令,将张量变换指令基于控制总线发送至张量变换模块130,指令解析单元134接收并解析该张量变换指令,得到该张量变换指令的解析结果,该解析结果中至少包括张量变换类型。指令解析单元134将解析结果发送至张量变换单元132,张量变换单元132根据解析结果中的张量变换类型对张量数据进行该张量变化类型对应的张量变换处理。可选的,张量变换模块130中还可以包括控制接口,与控制总线连接,用于接收控制总线传输的控制信号,张量变换指令在控制总线中以信号的形式传输。张量变换模块130还可以包括控制寄存器,设置于控制接口和指令解析单元134之间,用于对接收的控制信号进行寄存,并生成对应的张量变换指令,当上一张量变换指令执行完成后,将下一张量变换指令发送至指令解析单元134。
可选的,张量变换模块还包括接收控制单元135,接收控制单元135分别与指令解析单元134和数据接收单元131连接,用于接收指令解析单元134发送的解析结果,基于解析结果中的张量变换所需参数确定数据源地址,将数据源地址发送至数据接收单元131,数据接收单元131根据数据源地址读取张量数据。在本实施例中,指令解析单元134对张量变换指令的解析结果还包括张量变换所需参数,其中,不同的张量变换类型需求不同的参数。示例性的,以对齐变换为例,需要的参数包括但不限于各维度上给定的尺寸。由于张量数据的存储方式是一个线性展开的多维数据,在给定源数据的起始地址之后,每一个元素的位置根据元素的大小来排列,接收控制单元135可确定待读取的张量数据的数据源地址。示例性的,待读取的张量数据中包括各维度数据,根据张量变换类型需求不同的参数确定读取的张量维度,进一步确定该张量维度的尝试地址,即数据源地址,根据该数据源地址依次读取该张量维度的张量数据。
需要说明的是,指令解析单元134通过接收控制单元135将解析结果发送至张量变换单元132。
可选的,张量变换模块还包括发送控制单元136,发送控制单元136分别与指令解析单元134、张量变换单元132和数据发送单元133连接,用于接收指令解析单元134发送的解析结果和张量变换单元132发送的张量数据的源地址以及张量数据的维度信息,并根据解析结果中的张量变换类型、张量数据的源地址以及张量数据的维度信息确定变换后张量数据的目的地址,将目的地址发送至数据发送单元133;数据发送单元133根据目的地址将变换后的张量数据传输至第二数据模块120。发送控制单元136可确定变换后张量数据的目的地址,以使数据发送单元133根据目的地址将变换后的张量数据进行存储,便于后续对变换后的张量数据的管理和处理。其中,不同的张量变换类型可以是对应不同的目的地址确定规则,具体的,可以是不同的张量变换类型对应不同的目的地址计算单元,将张量数据的源地址以及张量数据的维度信息发送至张量变换类型对应的目的地址计算单元,以得到变换后张量数据的目的地址。
在一些实施例中,示例性的,参见图5,图5是本发明实施例提供的一种张量处理装置的结构示意图,其中,张量变换单元130包括至少两个数据变换子单元1321,张量变换单元根据解析指令中的张量变换类型确定进行张量变换处理的数据变换子单元。张量变换单元还包括数据缓存子单元1322,数据缓存子单元的输入端与至少一个数据变换子单元的输出端连接,数据缓存子单元的输出端与至少一个数据变换子单元的输入端连接,用于对变换前/后的张量数据进行缓存,其中,数据缓存子单元的输入端和输出端连接的数据变换子单元不相同。
在一些实施例中,张量变换单元130根据解析结果中的张量变换类型,确定用于执行张量变换的数据变换子单元;在一些实施例中,各数据变换子单元串联设置,当张量数据传输至解析指令中张量变换类型对应的数据变换子单元时,由该数据变换子单元对张量数据进行变换处理。
需要说明的是,张量变换单元130可以是包括两个以上的数据变换子单元1321,分别用于处理不同类型的张量变换,其中,每一个数据变换子单元可以是包括一个或多个张量变换电路。本实施例中,张量变换单元130中包括数据缓存子单元1322,可以是将部分数据变换子单元1321设置在数据缓存子单元1322之前,以及部分数据变换子单元1321设置在数据缓存子单元1322之后,对变换前/后的张量数据进行缓存,以降低数据访问的延迟。本实施例中的张量变换处理装置可以是根据张量变换指令对张量数据进行针对性的变换处理,以在数据传输过程中进行张量变换,提高数据处理效率,实现了张量处理优化加速。
图6为本发明实施例二提供的一种张量处理方法的流程示意图,本实施例可适用于在数据传输过程中对张量进行变换处理的情况,该方法可以由张量处理装置来执行,具体包括如下步骤:
S510、张量变换模块基于控制总线接收张量变换指令。
S520、所述张量变换模块基于数据总线接收第一数据模块传输的张量数据,其中,所述张量变换模块设置在所述第一数据模块向所述第二数据模块进行数据传输的线路上。
S530、所述张量变换模块根据所述张量变换指令对所述张量数据进行张量变换处理,将变换后的张量数据基于所述数据总线发送至所述第二数据模块。
本实施例中,张量变换处理为不影响张量数值的,只改变张量形状或元素顺序的运算,其中,张量变换处理包括但不限于对齐、转置、变形、压缩、采样和广播。
本实施例中,张量变换模块可以是具有单一变换处理功能,相应的,在第一数据模块和第二数据模块的数据传输线路上设置多个具有不同变换处理功能的张量变换模块;张量变换模块还可以是具有上述多种变换处理功能,根据张量变换指令对张量数据进行相应的变换处理。
本实施例提供的张量处理方法,在数据传输过程中,基于设置在第一数据模块和第二数据模块数据传输线路上的张量变换模块对张量数据进行张量变换,且该张量变换模块由芯片的原始硬件组成,在不影响数据传输的同时,实现张量变换,降低了后续计算单元的运算压力,提高了数据处理效率。
可选的,所述张量变换模块根据所述张量变换指令对所述张量数据进行张量变换处理,包括:所述张量变换模块解析所述张量变换指令,根据解析结果确定张量变换类型和张量变换所需参数;所述张量变换模块根据所述张量变换所需参数确定数据源地址,基于所述数据源地址读取所述张量数据;所述张量变换模块根据所述张量变换类型对读取的张量数据进行对应的张量变换处理。
可选的,所述张量变换模块将变换后的张量数据基于所述数据总线发送至第二数据模块,包括:所述张量变换模块根据读取张量数据的数据源地址、所述张量数据的维度信息和张量变换类型确定变换后张量数据的目的地址;所述张量变换模块根据所述目的地址,基于数据总线将所述变换后张量数据发送至所述第二数据模块。
本实施例中,通过解析张量变换指令得到张量变换类型和变换所需的参数,进一步确定张量数据的源地址,针对性的读取张量数据。根据张量变换类型对读取的数据进行对应的张量变换后,确定用于存储数据的目的地址,根据目的地址进行数据存储,便于后续对张量数据的管理和进一步处理。
本实施例提供的张量处理方法,在数据传输的过程中,对张量数据进行变换处理,以降低计算单元的运算压力,提高数据处理效率。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。