CN116980277B - 数据处理方法、装置、计算机设备及存储介质 - Google Patents

数据处理方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN116980277B
CN116980277B CN202311201712.5A CN202311201712A CN116980277B CN 116980277 B CN116980277 B CN 116980277B CN 202311201712 A CN202311201712 A CN 202311201712A CN 116980277 B CN116980277 B CN 116980277B
Authority
CN
China
Prior art keywords
convolution
matrix
data
matrices
input
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
Application number
CN202311201712.5A
Other languages
English (en)
Other versions
CN116980277A (zh
Inventor
李红
刘磊磊
章川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202311201712.5A priority Critical patent/CN116980277B/zh
Publication of CN116980277A publication Critical patent/CN116980277A/zh
Application granted granted Critical
Publication of CN116980277B publication Critical patent/CN116980277B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0631Management of faults, events, alarms or notifications using root cause analysis; using analysis of correlation between notifications, alarms or events based on decision criteria, e.g. hierarchy, tree or time analysis
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本申请公开了一种数据处理方法、装置、计算机设备及存储介质,属于计算机技术领域。该方法包括:获取输入数据和卷积数据,输入数据包括多个输入矩阵,卷积数据包括多个卷积矩阵;基于多个卷积矩阵的个数和脉动阵列的列数,将多个卷积矩阵分为N个矩阵集合;对于每个矩阵集合,将矩阵集合中的至少两个卷积矩阵输入脉动阵列的计算单元,在脉动阵列的计算单元上,对已输入的每个卷积矩阵和卷积矩阵对应的输入矩阵进行卷积运算,得到矩阵集合对应的输出数据;将N个矩阵集合对应的输出数据进行组合,得到输入数据和卷积数据的深度卷积结果。脉动阵列能够加速模型中的矩阵运算,本申请能提高脉动阵列的利用率,提高数据处理效率。

Description

数据处理方法、装置、计算机设备及存储介质
技术领域
本申请实施例涉及计算机技术领域,特别涉及一种数据处理方法、装置、计算机设备及存储介质。
背景技术
脉动阵列是一种阵列结构的计算器件,可被用于实现乘积累加运算。由于深度卷积操作涉及到乘积累加运算,所以在神经网络中的深度卷积操作可以使用脉动阵列来实现。
深度卷积是对输入数据的每个通道进行单独卷积的操作,在相关技术中,利用脉动阵列逐通道对输入数据中的输入矩阵和卷积数据中的卷积矩阵进行卷积,且在一个计算轮次中,由脉动阵列对一个通道上的输入矩阵和卷积矩阵中一个位置上的元素进行处理,因此脉动阵列的利用率较低,难以充分利用脉动阵列的计算能力,进而导致处理效率低下。
发明内容
本申请实施例提供了一种数据处理方法、装置、计算机设备及存储介质,能够提高对脉动阵列的利用率,提高数据处理效率。所述技术方案如下。
一方面,提供了一种数据处理方法,所述方法包括:
获取输入数据和卷积数据,所述输入数据和所述卷积数据为神经网络中待进行深度卷积的数据,所述输入数据包括多个输入矩阵,所述卷积数据包括多个卷积矩阵,所述输入矩阵与所述卷积矩阵一一对应;
基于所述多个卷积矩阵的个数和脉动阵列的列数,将所述多个卷积矩阵分为N个矩阵集合,每个矩阵集合包括所述多个卷积矩阵中的至少两个卷积矩阵,且每个矩阵集合中卷积矩阵的个数不大于所述脉动阵列的列数,所述脉动阵列包括多个计算单元,N为正整数;
对于每个矩阵集合,将所述矩阵集合中的至少两个卷积矩阵输入所述脉动阵列的计算单元,在所述脉动阵列的计算单元上,对已输入的每个卷积矩阵和所述卷积矩阵对应的输入矩阵进行卷积运算,得到所述矩阵集合对应的输出数据;
将所述N个矩阵集合对应的输出数据进行组合,得到所述输入数据和所述卷积数据的深度卷积结果。
另一方面,提供了一种数据处理装置,所述装置包括:
数据获取模块,用于获取输入数据和卷积数据,所述输入数据和所述卷积数据为神经网络中待进行深度卷积的数据,所述输入数据包括多个输入矩阵,所述卷积数据包括多个卷积矩阵,所述输入矩阵与所述卷积矩阵一一对应;
矩阵划分模块,用于基于所述多个卷积矩阵的个数和脉动阵列的列数,将所述多个卷积矩阵分为N个矩阵集合,每个矩阵集合包括所述多个卷积矩阵中的至少两个卷积矩阵,且每个矩阵集合中卷积矩阵的个数不大于所述脉动阵列的列数,所述脉动阵列包括多个计算单元,N为正整数;
运算模块,用于对于每个矩阵集合,将所述矩阵集合中的至少两个卷积矩阵输入所述脉动阵列的计算单元,在所述脉动阵列的计算单元上,对已输入的每个卷积矩阵和所述卷积矩阵对应的输入矩阵进行卷积运算,得到所述矩阵集合对应的输出数据;
所述运算模块,还用于将所述N个矩阵集合对应的输出数据进行组合,得到所述输入数据和所述卷积数据的深度卷积结果。
可选地,所述矩阵划分模块,用于:
确定不大于所述脉动阵列的列数的M,M为大于1的整数;
将所述多个卷积矩阵的个数与M之间的比值向上取整,得到N;
将所述多个卷积矩阵分为N个矩阵集合。
可选地,所述矩阵划分模块,用于将所述脉动阵列的列数的二分之一,确定为M。
可选地,所述运算模块,用于:
将所述矩阵集合中的至少两个卷积矩阵中至少一个相同位置上的元素输入所述脉动阵列的计算单元,在所述脉动阵列的计算单元上,对已输入的元素和对应的输入矩阵中的元素进行乘法运算,得到中间数据;
将所述至少两个卷积矩阵的剩余位置中至少一个相同位置上的元素输入所述脉动阵列的计算单元,在所述脉动阵列的计算单元上,对已输入的元素和对应的输入矩阵中的元素进行乘法运算,得到下一个中间数据,直至所述至少两个卷积矩阵中每个位置上的元素均已进行乘法运算;
在所述脉动阵列的计算单元上,将得到的多个中间数据进行加法运算,得到所述输出数据。
可选地,所述运算模块,用于将不同卷积矩阵的相同位置上的元素输入至所述脉动阵列的不同列的计算单元,将同一卷积矩阵中不同位置上的元素输入所述脉动阵列的同一列上的计算单元。
可选地,所述运算模块,用于:
在所述矩阵集合中的至少两个卷积矩阵的个数不大于所述脉动阵列的列数的二分之一的情况下,对所述矩阵集合中的至少两个卷积矩阵进行扩充,以使扩充后的卷积矩阵的个数、尺寸和卷积步长增大;
将扩充后的卷积矩阵输入所述脉动阵列的计算单元,在所述脉动阵列的计算单元上,对已输入的每个卷积矩阵和所述卷积矩阵对应的输入矩阵进行卷积运算,得到所述矩阵集合对应的输出数据。
可选地,所述运算模块,用于:
在所述矩阵集合中的至少两个卷积矩阵的个数不大于所述脉动阵列的列数的二分之一的情况下,将所述脉动阵列的列数和所述至少两个卷积矩阵的个数之间的比值向下取整,得到参考数值,基于所述参考数值,确定扩充系数;
基于所述扩充系数,对所述矩阵集合中的至少两个卷积矩阵进行扩充,以使扩充后的卷积矩阵的个数、尺寸和卷积步长增大。
可选地,所述运算模块,用于:
基于所述扩充系数和第一卷积步长,确定第二卷积步长,所述第一卷积步长为扩充前的卷积矩阵的卷积步长,所述第二卷积步长为扩充后的卷积矩阵的卷积步长;
基于所述扩充系数和第一尺寸,确定第二尺寸,所述第一尺寸为扩充前的卷积矩阵的尺寸,所述第二尺寸为扩充后的卷积矩阵的尺寸;
将所述至少两个卷积矩阵复制K-1份,K等于所述扩充系数;
对每个卷积矩阵进行填充,以使填充后的卷积矩阵的尺寸等于所述第二尺寸。
可选地,所述卷积数据存储于处理器上的第一存储器中,所述脉动阵列用于从所述处理器上的第二存储器中获取所述卷积数据,所述处理器上还包括数据搬运引擎;
所述运算模块,用于在所述数据搬运引擎支持随路扩充的情况下,将所述参考数值确定为所述扩充系数,所述随路扩充是指在任一存储器中对卷积矩阵进行扩充;
所述运算模块,还用于通过所述数据搬运引擎,将所述卷积数据从所述第一存储器搬运至所述第二存储器,在所述第二存储器中基于所述扩充系数对所述矩阵集合中的至少两个卷积矩阵进行扩充。
可选地,所述卷积数据存储于处理器上的第一存储器中,所述脉动阵列用于从所述处理器上的第二存储器中获取所述卷积数据,所述处理器上还包括数据搬运引擎;
所述运算模块,用于在所述数据搬运引擎不支持随路扩充的情况下,将大于1且小于所述参考数值的整数确定为所述扩充系数,所述随路扩充是指在任一存储器中对卷积矩阵进行扩充;
所述运算模块,还用于在所述第一存储器中基于所述扩充系数,对所述矩阵集合中的至少两个卷积矩阵进行扩充,通过所述数据搬运引擎,将扩充后的卷积矩阵从所述第一存储器搬运至所述第二存储器。
另一方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条计算机程序,所述至少一条计算机程序由所述处理器加载并执行,以实现如上述方面所述的数据处理方法所执行的操作。
另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条计算机程序,所述至少一条计算机程序由处理器加载并执行,以实现如上述方面所述的数据处理方法所执行的操作。
另一方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序由处理器加载并执行,以实现如上述方面所述的数据处理方法所执行的操作。
本申请实施例提供的方案,在深度卷积的场景下,输入数据中输入矩阵的个数与卷积数据中卷积矩阵的个数相等且一一对应,每个卷积矩阵用于对一个输入矩阵进行卷积。为了提高脉动阵列的利用率,基于卷积矩阵的个数和脉动阵列的列数,将多个卷积矩阵分为N个矩阵集合,在每个计算轮次中,将一个矩阵集合中的至少两个卷积矩阵和对应的输入矩阵在脉动阵列上进行卷积运算,得到输出数据,从而实现并行地对至少两个卷积矩阵和对应的输入矩阵进行卷积运算,后续将多个矩阵集合对应的输出数据进行组合即可得到输入数据与卷积数据的深度卷积结果,一方面提高了脉动阵列的利用率,充分利用了脉动阵列中多个计算单元的并行计算能力,另一方面提高了整个数据处理过程的效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请实施例的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种数据处理方法的系统架构图。
图2是本申请实施例提供的一种数据处理方法的流程图。
图3是本申请实施例提供的另一种数据处理方法的流程图。
图4是本申请实施例提供的再一种数据处理方法的流程图。
图5是本申请实施例提供的又一种数据处理方法的流程图。
图6是相关技术提供的一种深度卷积的示意图。
图7是相关技术提供的一种卷积矩阵在脉动阵列上的分布示意图。
图8是本申请实施例提供的另一种深度卷积的示意图。
图9是本申请实施例提供的另一种卷积矩阵在脉动阵列上的分布示意图。
图10是本申请实施例提供的一种数据处理装置的结构示意图。
图11是本申请实施例提供的一种终端的结构示意图。
图12是本申请实施例提供的一种服务器的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
可以理解,本申请所使用的术语“第一”、“第二”等可在本文中用于描述各种概念,但除非特别说明,这些概念不受这些术语限制。这些术语仅用于将一个概念与另一个概念区分。举例来说,在不脱离本申请的范围的情况下,可以将第一尺寸称为第二尺寸,且类似地,可将第二尺寸称为第一尺寸。
其中,至少一个是指一个或者一个以上,例如,至少一个卷积矩阵可以是一个卷积矩阵、两个卷积矩阵、三个卷积矩阵等任一大于等于一的整数个卷积矩阵。多个是指两个或者两个以上,例如,多个卷积矩阵可以是两个卷积矩阵、三个卷积矩阵等任一大于等于二的整数个卷积矩阵。每个是指至少一个中的每一个,例如,每个卷积矩阵是指多个卷积矩阵中的每一个卷积矩阵,若多个卷积矩阵为3个卷积矩阵,则每个卷积矩阵是指3个卷积矩阵中的每一个卷积矩阵。
可以理解的是,在本申请的实施方式中,涉及到用户信息等(例如输入数据和卷积数据)相关的数据,当本申请以上实施例运用到具体产品或技术中时,需要获得用户许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
人工智能技术是一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习、自动驾驶、智慧交通等几大方向。
计算机视觉技术(Computer Vision,CV)是一门研究如何使机器“看”的科学,更进一步的说,就是指用摄影机和电脑代替人眼对目标进行识别和测量等机器视觉,并进一步做图形处理,使电脑处理成为更适合人眼观察或传送给仪器检测的图像。作为一个科学学科,计算机视觉研究相关的理论和技术,试图建立能够从图像或者多维数据中获取信息的人工智能系统。计算机视觉技术通常包括图像处理、图像识别、图像语义理解、图像检索、OCR(Optical Character Recognition,光学字符识别)、视频处理、视频语义理解、视频内容/行为识别、三维物体重建、3D(3-Dimension,三维)技术、虚拟现实、增强现实、同步定位与地图构建、自动驾驶、智慧交通等技术,还包括常见的人脸识别、指纹识别等生物特征识别技术。
脉动阵列(Systolic Array Architecture)是由多个处理单元和多个锁存器,按照一定互联规则排列,组成的一种吞吐量很大的流水线式高速计算结构,运算时数据在阵列结构的各处理单元之间沿各自方向同步前进。脉动阵列可集成于AI加速器中,脉动阵列可以并行地对AI大模型中的卷积运算和矩阵乘法等矩阵运算进行处理,提升了运算速度和降低了功耗,从而加速了AI大模型的训练过程和推理过程,进而有利于提高AI大模型的训练速度和计算效率。并且,本申请提供的数据处理方法能够有效地利用脉动阵列的计算资源,能够进一步提升AI大模型的训练速度和计算效率。
以下将基于人工智能技术和计算机视觉技术,对本申请实施例提供的数据处理方法进行说明。
本申请实施例提供的数据处理方法,能够用于计算机设备中。可选地,该计算机设备为服务器或终端。可选地,该服务器是独立的物理服务器,或者,是多个物理服务器构成的服务器集群或者分布式系统,或者,是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)以及大数据和人工智能平台等基础云计算服务的云服务器。可选地,该终端是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表、智能终端等,但并不局限于此。
在一种可能实现方式中,本申请实施例所涉及的计算机程序可被部署在一个计算机设备上执行,或者在位于一个地点的多个计算机设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算机设备上执行,分布在多个地点且通过通信网络互连的多个计算机设备能够组成区块链系统。
图1是本申请实施例提供的一种数据处理方法的系统架构图,本申请实施例的执行主体为计算机设备,例如该计算机设备为服务器或者终端。如图1所示,该计算机设备的处理器上集成有矩阵运算加速引擎、数据搬运引擎、二级存储器和三级存储器,例如该处理器可以为人工智能处理器(AI Core)。矩阵运算加速引擎用于实现矩阵运算,数据搬运引擎用于在一级存储器、二级存储器、三级存储器和ACC(Accumulator,累加器)存储器之间进行数据搬运,二级存储器和三级存储器用于存储数据。
矩阵加速引擎包括一级存储器、权值矩阵存储器、偏置参数存储器、脉动阵列、ACC存储器和可编程控制器。一级存储器用于存储数据搬运引擎从二级存储器或三级存储器中搬运的数据,权值矩阵存储器用于存储卷积矩阵,偏置参数存储器用于存储偏置参数,脉动阵列用于实现矩阵运算,在本申请实施例中脉动阵列用于进行深度卷积运算,ACC存储器用于存储脉动阵列的输出数据。
本申请实施例中,可应用于对卷积神经网络中的数据进行深度卷积运算的场景中,卷积神经网络中的输入数据和卷积数据存储在二级存储器或三级存储器中,数据搬运引擎将输入数据和卷积数据从二级存储器或三级存储器中搬运至一级存储器中。另外,为了提高脉动阵列的利用率,本申请实施例还对卷积数据进行划分,由脉动阵列并行地对划分得到的矩阵集合中的至少两个卷积矩阵进行处理。后续脉动阵列从一级存储器中获取输入数据和卷积数据,其中卷积数据中的卷积矩阵可以先从一级存储器传输至权值矩阵存储器中,再由脉动阵列从权值矩阵存储器中获取卷积矩阵,卷积数据中的偏置参数可以先从一级存储器传输至偏置参数存储器中,再由脉动阵列从偏置参数存储器中获取偏置参数。脉动阵列在获取到输入数据和卷积数据后,采用本申请实施例提供的方法,对输入数据和卷积数据进行深度卷积,得到深度卷积结果,将深度卷积结果存储在ACC存储器中。数据搬运引擎可以将ACC存储器中的深度卷积结果搬运至二级存储器或三级存储器中,作为下一次矩阵运算的输入数据。
本申请实施例提供的数据处理方法,可应用于需要对数据进行深度卷积运算的任一场景下。例如,应用于对卷积神经网络中的数据进行深度卷积运算的场景下。近年来,人工智能的飞速发展得益于深度学习领域的发展,卷积神经网络是深度学习领域中兴起最早、发展最深、应用最广的一类深度学习算法,被广泛应用于图像处理、视频处理、语音处理等各个数字处理领域。深度学习的一个显著特点是计算量大、参数量大,传统的处理器难以实时处理,为此相关领域研发了AI(Artificial Intelligence,人工智能)处理器。AI处理器的一个核心特点是脉动阵列的设计,脉动阵列中的计算单元用于实现矩阵运算。
但是,脉动阵列对大计算量的卷积层和矩阵乘法较为合适,对于深度卷积运算来说,参数量和运算成本较低,因此在一些轻量级网络中,如果采用脉动阵列对轻量级网络中的数据进行深度卷积运算,会导致脉动阵列的算力利用率低,称为算法加速的瓶颈。不同于常规卷积操作,在深度卷积运算中,一个卷积矩阵负责对输入数据中的一个通道进行卷积,一个通道仅被一个卷积矩阵进行卷积,也即是深度卷积运算是逐通道进行卷积的,所以可以看作逐通道执行输入通道数和输出通道数均等于1的多个卷积,这使得脉动阵列的并行计算能力会被浪费。
因此,可以采用本申请实施例提供的方法,对于待处理的输入矩阵和卷积矩阵,将多个卷积矩阵分为N个矩阵集合,每个矩阵集合中包括多个卷积矩阵中的至少两个卷积矩阵,在一个计算轮次中,由脉动阵列并行地对一个矩阵集合中的至少两个卷积矩阵和各自对应的输入矩阵进行卷积运算,从而有效提高脉动阵列的算力利用率,加快数据处理速度。
图2是本申请实施例提供的一种数据处理方法的流程图,本申请实施例由计算机设备执行,参见图2,该方法包括以下步骤。
201、计算机设备获取输入数据和卷积数据,输入数据和卷积数据为神经网络中待进行深度卷积的数据,输入数据包括多个输入矩阵,卷积数据包括多个卷积矩阵,输入矩阵与卷积矩阵一一对应。
输入数据和卷积数据为神经网络中待进行深度卷积的数据,该卷积数据用于对输入数据进行深度卷积,该输入数据包括多个输入矩阵,该卷积数据包括多个卷积矩阵,输入矩阵的个数与卷积矩阵的个数相等,且输入矩阵与卷积矩阵一一对应,与输入矩阵对应的卷积矩阵用于对该输入矩阵进行卷积。
其中,该卷积矩阵即为卷积核的权值矩阵。例如,该输入数据为卷积神经网络的某一个卷积层输出的数据,用于输入至下一个深度卷积层进行深度卷积运算,那么该卷积数据即是下一个深度卷积层的卷积核。
可选地,输入数据中的输入矩阵由[Hi,Wi,Ci]表示,Hi表示输入矩阵的高度,Wi表示输入矩阵的宽度,Ci表示输入数据的通道数,也即是输入矩阵的个数。卷积数据中的卷积矩阵由[Kh,Kw,Ci,Co]表示,Kh表示卷积矩阵的高度,Kw表示卷积矩阵的宽度,Ci表示卷积数据的输入通道数,也即是卷积矩阵的个数,Co表示卷积数据的输出通道数,在深度卷积中,输入通道数等于输出通道数。
202、计算机设备基于多个卷积矩阵的个数和脉动阵列的列数,将多个卷积矩阵分为N个矩阵集合,每个矩阵集合包括该多个卷积矩阵中的至少两个卷积矩阵,且每个矩阵集合中卷积矩阵的个数不大于脉动阵列的列数,脉动阵列包括多个计算单元,N为正整数。
脉动阵列为计算机设备的处理器中的计算器件,该脉动阵列为集成于处理器中的硬件,该脉动阵列由多个计算单元构成,该多个计算单元所构成的结构为阵列结构,因此成为脉动阵列。脉动阵列包括按照阵列结构排列的多个计算单元,计算单元用于实现卷积操作,例如一个计算单元用于进行乘加运算。可选地,该处理器可以为CPU(CentralProcessing Unit,中央处理器)、AI处理器、AI芯片或者AI加速器等,本申请实施例对此不做限定。
本申请实施例中,为了在脉动阵列上并行地对不同通道上的输入数据进行卷积,先基于卷积数据中的多个卷积矩阵的个数和脉动阵列的列数,将该多个卷积矩阵分为N个矩阵集合,以使每个矩阵集合中均包括至少两个卷积矩阵,且每个矩阵集合中的卷积矩阵的个数不大于该脉动阵列的列数。其中,N为正整数,例如N可以等于1、3或者8等。需要说明的是,在N等于1的情况下,相当于直接将多个卷积矩阵构成一个矩阵集合。
203、计算机设备对于每个矩阵集合,将矩阵集合中的至少两个卷积矩阵输入脉动阵列的计算单元,在脉动阵列的计算单元上,对已输入的每个卷积矩阵和卷积矩阵对应的输入矩阵进行卷积运算,得到矩阵集合对应的输出数据。
计算机设备在得到N个矩阵集合后,按照矩阵集合的个数分为N个计算轮次,在每个计算轮次中,对一个矩阵集合中的至少两个卷积矩阵进行处理。
以一个矩阵集合为例,计算机设备将该矩阵集合中的至少两个卷积矩阵输入脉动阵列的计算单元,也即是将该至少两个卷积矩阵中的元素加载至脉动阵列的计算单元,然后根据卷积矩阵和输入矩阵之间的对应关系,将各个卷积矩阵对应的输入矩阵中的元素加载至对应的计算单元上,从而在各个计算单元上,对已输入的各个卷积矩阵和各自对应的输入矩阵进行卷积运算,从而得到该矩阵集合对应的输出数据,该矩阵集合对应的输出数据为该矩阵集合中的每个卷积矩阵与对应的输入矩阵进行卷积运算的结果。
需要说明的是,在N等于1的情况下,相当于直接将多个卷积矩阵构成一个矩阵集合,那么以矩阵集合为单位,脉动阵列按照该步骤203,直接对该多个卷积矩阵进行处理即可,无需执行多个计算轮次。在N大于1的情况下,相当于将多个卷积矩阵划分为了多个矩阵集合,那么以矩阵集合为单位,脉动阵列按照该步骤203,在每个计算轮次中仅对一个矩阵集合中的至少两个卷积矩阵进行处理。
204、计算机设备将N个矩阵集合对应的输出数据进行组合,得到输入数据和卷积数据的深度卷积结果。
计算机设备采用上述步骤203的方法,可以得到N个矩阵集合中的每个矩阵集合对应的输出数据,每个矩阵集合对应的输出数据为该矩阵集合中的卷积矩阵与对应的输入矩阵进行卷积运算的结果,那么将N个矩阵集合对应的输出数据进行组合,即可得到整个输入数据和整个卷积数据进行深度卷积的深度卷积结果。
需要说明的是,在N等于1的情况下,多个卷积矩阵仅构成一个矩阵集合,那么该矩阵集合对应的输出数据即为整个输入数据和整个卷积数据进行深度卷积的深度卷积结果。
本申请实施例提供的方法,在深度卷积的场景下,输入数据中输入矩阵的个数与卷积数据中卷积矩阵的个数相等且一一对应,每个卷积矩阵用于对一个输入矩阵进行卷积。为了提高脉动阵列的利用率,基于卷积矩阵的个数和脉动阵列的列数,将多个卷积矩阵分为N个矩阵集合,在每个计算轮次中,将一个矩阵集合中的至少两个卷积矩阵和对应的输入矩阵在脉动阵列上进行卷积运算,得到输出数据,从而实现并行地对至少两个卷积矩阵和对应的输入矩阵进行卷积运算,后续将多个矩阵集合对应的输出数据进行组合即可得到输入数据与卷积数据的深度卷积结果,一方面提高了脉动阵列的利用率,充分利用了脉动阵列中多个计算单元的并行计算能力,另一方面提高了整个数据处理过程的效率。
上述图2所示的实施例仅是对数据处理方法的简要说明,其中在该数据处理方法中,划分矩阵集合的详细过程以及将同一个矩阵集合中的至少两个卷积矩阵输入脉动阵列进行处理的详细过程,可参见下述图3所示的实施例。图3是本申请实施例提供的另一种数据处理方法的流程图,本申请实施例由计算机设备执行,参见图3,该方法包括以下步骤。
301、计算机设备获取输入数据和卷积数据,输入数据和卷积数据为神经网络中待进行深度卷积的数据,输入数据包括多个输入矩阵,卷积数据包括多个卷积矩阵,输入矩阵与卷积矩阵一一对应。
该步骤301的过程与上述步骤201的过程同理,在此不再赘述。
302、计算机设备基于多个卷积矩阵的个数和脉动阵列的列数,将多个卷积矩阵分为N个矩阵集合,每个矩阵集合包括该多个卷积矩阵中的至少两个卷积矩阵,且每个矩阵集合中卷积矩阵的个数不大于脉动阵列的列数,脉动阵列包括多个计算单元,N为正整数。
为了在脉动阵列上并行地对不同通道上的输入数据进行卷积,计算机设备基于卷积数据中的多个卷积矩阵的个数和脉动阵列的列数,将该多个卷积矩阵分为N个矩阵集合,以使每个矩阵集合中均包括至少两个卷积矩阵,且每个矩阵集合中的卷积矩阵的个数不大于该脉动阵列的列数,且每个矩阵集合所包括的卷积矩阵不重复。
在一种可能实现方式中,计算机设备确定不大于脉动阵列的列数的M,M为大于1的整数,将多个卷积矩阵的个数与M之间的比值向上取整,得到N,将多个卷积矩阵分为N个矩阵集合。
其中,计算机设备将多个卷积矩阵均匀地分为N个矩阵集合,以使每个矩阵集合中至多包括M个卷积矩阵。
可选地,计算机设备将脉动阵列的列数的二分之一,确定为M。例如,卷积数据中的多个卷积矩阵的个数为256个,脉动阵列的列数为64,则M等于32,计算机设备将256个卷积矩阵划分为8个矩阵集合,每个矩阵集合中包括32个卷积矩阵。
本申请实施例中,将脉动阵列的列数的二分之一作为了一个矩阵集合中的至少两个卷积矩阵的个数。其中,脉动阵列中的每一列计算单元用于基于一个卷积矩阵进行处理,那么在基于该脉动阵列对该矩阵集合中的至少两个卷积矩阵处理时,存在一半计算单元未被使用到,此种情况下,可以对矩阵集合中的至少两个卷积矩阵进行扩充,将卷积矩阵在高度和宽度方向上的计算量转移为通道数方向上的计算量,从而进一步提高脉动阵列的利用率,该方案的详细过程可参见下述图4所示的实施例,在此暂不作说明。
303、计算机设备对于每个矩阵集合,将矩阵集合中的至少两个卷积矩阵中至少一个相同位置上的元素输入脉动阵列的计算单元,在脉动阵列的计算单元上,对已输入的元素和对应的输入矩阵中的元素进行乘法运算,得到中间数据。
计算机设备在得到N个矩阵集合后,按照矩阵集合的个数分为N个计算轮次,在每个计算轮次中,计算机设备采用步骤303-步骤304对一个矩阵集合中的至少两个卷积矩阵进行处理。
以一个矩阵集合为例,该矩阵集合包括至少两个卷积矩阵,该至少两个卷积矩阵的尺寸相同,例如卷积矩阵的尺寸为Kh×Kw,Kh和Kw均等于3,则每个卷积矩阵中包括9个位置,每个位置上具有一个元素,每个卷积矩阵包括多个元素。
其中,在针对一个矩阵集合的一个计算轮次中,还分为多个cycle(周期)。每个cycle中,由脉动阵列对至少两个卷积矩阵中至少一个相同位置上的元素进行处理。以一个cycle为例,计算机设备将该矩阵集合中的至少两个卷积矩阵中至少一个相同位置上的元素输入脉动阵列的不同的计算单元,由各个计算单元对已输入的元素和该元素所在的卷积矩阵对应的输入矩阵中的元素进行乘法运算,从而得到一个中间数据,该中间结果的尺寸与输入矩阵的尺寸相等。
在一种可能实现方式中,每次输入的一个卷积矩阵中的元素的个数等于脉动阵列的行数除以矩阵集合中的卷积矩阵的个数后向下取整。
例如,以一个矩阵集合包括32个卷积矩阵为例,以卷积矩阵的尺寸为3×3为例,在第一个cycle中,将每个卷积矩阵的第一行第一列的元素和第一行第二列的元素输入脉动阵列的不同计算单元。
在一种可能实现方式中,计算机设备将矩阵集合中的至少两个卷积矩阵中至少一个相同位置上的元素输入脉动阵列的计算单元,包括:将不同卷积矩阵的相同位置上的元素输入至脉动阵列的不同列的计算单元,将同一卷积矩阵中不同位置上的元素输入脉动阵列的同一列上的计算单元。
对于不同卷积矩阵中相同位置上的元素,这些元素会位于脉动阵列中不同列的计算单元,对于同一卷积矩阵中不同位置上的元素,这些元素会位于脉动阵列中同一列的计算单元。例如,以一个矩阵集合包括32个卷积矩阵为例,以卷积矩阵的尺寸为3×3为例,脉动阵列的尺寸为64×64。在每个cycle中,将卷积矩阵中两个位置上的元素输入脉动阵列的计算单元。则将第1个卷积矩阵的第1个位置上的元素输入脉动阵列的第1行第1列的计算单元,将第2个卷积矩阵的第1个位置上的元素输入脉动阵列的第2行第2列的计算单元,将第i个卷积矩阵的第1个位置上的元素输入脉动阵列的第i行第i列的计算单元。将第1个卷积矩阵的第2个位置上的元素输入脉动阵列的第33行第33列的计算单元,将第2个卷积矩阵的第2个位置上的元素输入脉动阵列的第34行第34列的计算单元,将第i个卷积矩阵的第2个位置上的元素输入脉动阵列的第32+i行第32+i列的计算单元。其中,i为不大于32的正整数。
304、计算机设备将至少两个卷积矩阵的剩余位置中至少一个相同位置上的元素输入脉动阵列的计算单元,在脉动阵列的计算单元上,对已输入的元素和对应的输入矩阵中的元素进行乘法运算,得到下一个中间数据,直至至少两个卷积矩阵中每个位置上的元素均已进行乘法运算,在脉动阵列的计算单元上,将得到的多个中间数据进行加法运算,得到矩阵集合对应的输出数据。
在完成第一个cycle的运算后,计算机设备进行下一个cycle的运算,此时矩阵集合中的每个卷积矩阵中剩余位置上的元素还未处理,剩余位置是指除了已处理的元素所在的至少一个位置之外的其他位置。计算机设备将该矩阵集合中的至少两个卷积矩阵的剩余位置中至少一个相同位置上的元素输入脉动阵列的不同的计算单元,由各个计算单元对已输入的元素和该元素所在的卷积矩阵对应的输入矩阵中的元素进行乘法运算,从而得到下一个中间数据。
例如,以一个矩阵集合包括32个卷积矩阵为例,以卷积矩阵的尺寸为3×3为例,在第二个cycle中,将每个卷积矩阵的第一行第三列的元素和第二行第一列的元素输入脉动阵列的不同计算单元。
计算机设备按照上述流程,在每个cycle中,将矩阵集合中的至少两个卷积矩阵中至少一个相同位置上的元素输入脉动阵列的计算单元中进行处理,直至至少两个卷积矩阵中,每个位置上的元素均已进行乘法运算,从而得到了多个中间数据,计算机设备在脉动阵列的计算单元上,将得到的多个中间数据进行加法运算,从而得到矩阵集合对应的输出数据。可选地,每个中间数据均为尺寸相同的矩阵,将至少两个矩阵中相同位置上的元素相加,相加后得到的矩阵即为该矩阵集合对应的输出数据。
305、计算机设备将N个矩阵集合对应的输出数据进行组合,得到输入数据和卷积数据的深度卷积结果。
计算机设备采用上述步骤303-步骤304的方式对每个矩阵集合进行处理,得到每个矩阵集合对应的输出数据,每个矩阵集合对应的输出数据为该矩阵集合中的卷积矩阵与对应的输入矩阵进行卷积运算的结果,那么将N个矩阵集合对应的输出数据进行组合,即可得到整个输入数据和整个卷积数据进行深度卷积的深度卷积结果。
在一种可能实现方式中,计算机设备将N个矩阵集合对应的输出数据进行拼接,得到该深度卷积结果。
本申请实施例提供的方法,在深度卷积的场景下,输入数据中输入矩阵的个数与卷积数据中卷积矩阵的个数相等且一一对应,每个卷积矩阵用于对一个输入矩阵进行卷积。为了提高脉动阵列的利用率,基于卷积矩阵的个数和脉动阵列的列数,将多个卷积矩阵分为N个矩阵集合,在每个计算轮次中,将一个矩阵集合中的至少两个卷积矩阵和对应的输入矩阵在脉动阵列上进行卷积运算,得到输出数据,从而实现并行地对至少两个卷积矩阵和对应的输入矩阵进行卷积运算,后续将多个矩阵集合对应的输出数据进行组合即可得到输入数据与卷积数据的深度卷积结果,一方面提高了脉动阵列的利用率,充分利用了脉动阵列中多个计算单元的并行计算能力,另一方面提高了整个数据处理过程的效率。
在一些实施例中,按照上述图2或图3所示的实施例对卷积矩阵进行划分后,一个矩阵集合中的至少两个卷积矩阵的个数不大于脉动阵列的列数的二分之一,此种情况下,可以对矩阵集合中的至少两个卷积矩阵进行扩充,详细过程参见下述图4所示的实施例。图4是本申请实施例提供的再一种数据处理方法的流程图,本申请实施例由计算机设备执行,参见图4,该方法包括以下步骤。
401、计算机设备获取输入数据和卷积数据,输入数据和卷积数据为神经网络中待进行深度卷积的数据,输入数据包括多个输入矩阵,卷积数据包括多个卷积矩阵,输入矩阵与卷积矩阵一一对应。
该步骤401的过程与上述步骤201的过程同理,在此不再赘述。
402、计算机设备基于多个卷积矩阵的个数和脉动阵列的列数,将多个卷积矩阵分为N个矩阵集合,每个矩阵集合包括多个卷积矩阵中的至少两个卷积矩阵,且每个矩阵集合中卷积矩阵的个数不大于脉动阵列的列数,脉动阵列包括多个计算单元,N为正整数。
在一种可能实现方式中,计算机设备确定不大于脉动阵列的列数的M,M为大于1的整数,将多个卷积矩阵的个数与M之间的比值向上取整,得到N,将多个卷积矩阵分为N个矩阵集合。
其中,计算机设备将多个卷积矩阵均匀地分为N个矩阵集合,以使每个矩阵集合中至多包括M个卷积矩阵。
可选地,计算机设备将脉动阵列的列数的二分之一,确定为M。例如,卷积数据中的多个卷积矩阵的个数为256个,脉动阵列的列数为64,则M等于32,计算机设备将256个卷积矩阵划分为8个矩阵集合,每个矩阵集合中包括32个卷积矩阵。
403、计算机设备对于每个矩阵集合,在矩阵集合中的至少两个卷积矩阵的个数不大于脉动阵列的列数的二分之一的情况下,对矩阵集合中的至少两个卷积矩阵进行扩充,以使扩充后的卷积矩阵的个数、尺寸和卷积步长增大。
计算机设备在得到N个矩阵集合后,按照矩阵集合的个数分为N个计算轮次,在每个计算轮次中,计算机设备采用步骤403-步骤404对一个矩阵集合中的至少两个卷积矩阵进行处理。
以一个矩阵集合为例,如果该矩阵集合中的至少两个卷积矩阵的个数不大于脉动阵列的列数的二分之一,说明由于卷积矩阵的个数较小会导致脉动阵列的利用率较小,因此可以对矩阵集合中的至少两个卷积矩阵进行扩充,以使扩充后的卷积矩阵的个数、尺寸和卷积步长增大,从而将卷积矩阵在高度或宽度方向上的计算量转移到通道数方向上,从而充分利用脉动阵列的并行计算能力。
在一种可能实现方式中,在矩阵集合中的至少两个卷积矩阵的个数不大于脉动阵列的列数的二分之一的情况下,将脉动阵列的列数和至少两个卷积矩阵的个数之间的比值向下取整,得到参考数值,基于参考数值,确定扩充系数;基于扩充系数,对矩阵集合中的至少两个卷积矩阵进行扩充,以使扩充后的卷积矩阵的个数、尺寸和卷积步长增大。
基于扩充系数对卷积矩阵进行扩充,一方面要保证扩充后的卷积矩阵的个数不大于脉动阵列的列数,另一方面要保证卷积矩阵成倍扩充,因此该扩充系数必须为不大于脉动阵列的列数和卷积矩阵的个数之间的比值的整数,因此计算机设备在确定脉动阵列的列数和卷积矩阵的个数之间的比值后,先对该比值进行向下取整,得到参考数值,然后基于该参考数值确定扩充系数,该扩充系数应为不大于该参考数值的整数。
在一种可能实现方式中,计算机设备基于扩充系数,对矩阵集合中的至少两个卷积矩阵进行扩充,以使扩充后的卷积矩阵的个数、尺寸和卷积步长增大的过程,包括下述步骤4031-步骤4034。
4031、计算机设备基于扩充系数和第一卷积步长,确定第二卷积步长,第一卷积步长为扩充前的卷积矩阵的卷积步长,第二卷积步长为扩充后的卷积矩阵的卷积步长。
可选地,计算机设备将扩充系数和第一卷积步长相乘,得到第二卷积步长。
4032、计算机设备基于扩充系数和第一尺寸,确定第二尺寸,第一尺寸为扩充前的卷积矩阵的尺寸,第二尺寸为扩充后的卷积矩阵的尺寸。
可选地,计算机设备基于扩充系数、第一卷积步长和第二卷积步长,确定第二尺寸,以使第一乘积与第二乘积的比值等于扩充系数。其中,第一乘积表示基于第一尺寸的卷积矩阵按照第一卷积步长对输入矩阵进行卷积所得到的输出矩阵的高度和宽度的乘积,第二乘积表示基于第二尺寸的卷积矩阵按照第二卷积步长对输入矩阵进行卷积所得到的输出矩阵的高度和宽度的乘积。
可选地,第二卷积步长等于第一卷积步长和扩充系数的乘积,第一尺寸和第二尺寸均表示卷积核的宽度。计算机设备基于扩充系数、第一卷积步长和第二卷积步长,确定第二尺寸,以使第一乘积与第二乘积的比值等于扩充系数,包括:确定k-1与第一卷积步长的乘积,将乘积与第一尺寸相加,得到第二尺寸,k等于扩充系数。
4033、计算机设备将至少两个卷积矩阵复制K-1份,K等于扩充系数。
计算机设备需要将卷积矩阵的个数进行扩充,以使扩充后卷积矩阵的个数与扩充前卷积矩阵的个数之间的比值等于扩充系数,将扩充系数称为k,则计算机设备将该至少两个卷积矩阵复制k-1份,那么扩充后的卷积矩阵的个数即为扩充前的卷积矩阵的个数的k倍。例如,卷积矩阵的个数为32个,扩充系数为2,计算机设备需要将32个卷积矩阵复制1份,也即是新增32个卷积矩阵,那么扩充后的卷积矩阵的个数即为64个。
可选地,卷积数据还包括卷积矩阵的偏置参数,该偏置参数表示该卷积矩阵的权重,用于对基于该卷积矩阵进行卷积所得到的数据进行加权。则计算机设备对于每个卷积矩阵,将该卷积矩阵以及卷积矩阵的偏置参数分别复制k-1份。也即是,每个卷积矩阵对应有各自的偏置参数,计算机设备在复制每个卷积矩阵时,同时还复制该卷积矩阵对应的偏置参数。
4034、计算机设备对每个卷积矩阵进行填充,以使填充后的卷积矩阵的尺寸等于第二尺寸。
计算机设备在扩充卷积矩阵的个数之后,对每个卷积矩阵进行填充,使得填充后的卷积矩阵的尺寸等于第二尺寸。例如,卷积矩阵的第一尺寸为3×3,第二尺寸为3×4,则需要对卷积矩阵进行填充,得到尺寸为3×4的卷积矩阵。
可选地,计算机设备按照第一尺寸和第二尺寸,在每个卷积矩阵中填充目标数值,以使填充后的卷积矩阵的尺寸等于第二尺寸,目标数值等于0。
在一种可能实现方式中,卷积数据存储于处理器上的第一存储器中,脉动阵列用于从处理器上的第二存储器中获取卷积数据,处理器上还包括数据搬运引擎。则对卷积数据进行搬运和扩充的过程,分为以下两种情况。
第一种情况:计算机设备在数据搬运引擎支持随路扩充的情况下,将参考数值确定为扩充系数,随路扩充是指在任一存储器中对卷积矩阵进行扩充。计算机设备通过数据搬运引擎,将卷积数据从第一存储器搬运至第二存储器,在第二存储器中基于扩充系数对矩阵集合中的至少两个卷积矩阵进行扩充。
可选地,数据搬运引擎还需要对输入数据进行搬运,计算机设备通过数据搬运引擎,将输入数据和卷积数据从第一存储器搬运至第二存储器,在第二存储器中基于扩充系数对矩阵集合中的至少两个卷积矩阵进行扩充。
本申请实施例中,在数据搬运引擎支持随路扩充的情况下,将扩充系数设置为可实现的最大取值,先通过数据搬运引擎,将输入数据和卷积数据从第一存储器搬运至第二存储器,然后再通过该数据搬运引擎,在该第二存储器中基于该扩充系数对矩阵集合中的至少两个卷积矩阵进行扩充,一方面可以最大化脉动阵列的利用率,另一方面还可以避免扩充卷积矩阵对数据搬运过程的影响,有利于提高数据处理过程的整体效率,实现数据的加速处理。
第二种情况:计算机设备在数据搬运引擎不支持随路扩充的情况下,将大于1且小于参考数值的整数确定为扩充系数,随路扩充是指在任一存储器中对卷积矩阵进行扩充。计算机设备在第一存储器中基于扩充系数,对矩阵集合中的至少两个卷积矩阵进行扩充,通过数据搬运引擎,将扩充后的卷积矩阵从第一存储器搬运至第二存储器。
可选地,数据搬运引擎还需要对输入数据进行搬运,计算机设备在第一存储器中基于扩充系数,对矩阵集合中的至少两个卷积矩阵进行扩充,通过数据搬运引擎,将输入数据和扩充后的卷积矩阵从第一存储器搬运至第二存储器。
本申请实施例提供的方法,如果数据搬运引擎不支持随路扩充,将扩充系数设置为小于可实现的最大取值的整数,综合考虑扩充卷积矩阵所节省的运算时间以及扩充卷积矩阵所增加的搬运时间。通过基于合理的扩充系数进行扩充,使得扩充后所花费的搬运时间和运算时间之和,少于扩充前所花费的搬运时间和运算时间之和。一方面可以提高脉动阵列的利用率,另一方面还可以尽量减小扩充卷积矩阵对数据搬运过程的影响,有利于提高数据处理过程的整体效率,实现数据的加速处理。
404、计算机设备将扩充后的卷积矩阵输入脉动阵列的计算单元,在脉动阵列的计算单元上,对已输入的每个卷积矩阵和卷积矩阵对应的输入矩阵进行卷积运算,得到矩阵集合对应的输出数据。
计算机设备对矩阵集合中的至少两个卷积矩阵进行扩充后,将扩充后的至少两个卷积矩阵输入脉动阵列的计算单元,在脉动阵列的计算单元上,对已输入的每个卷积矩阵和卷积矩阵对应的输入矩阵进行卷积运算,得到矩阵集合对应的输出数据。
在一种可能实现方式中,对于扩充后的至少两个卷积矩阵,计算机设备将扩充后的至少两个卷积矩阵中至少一个相同位置上的元素输入脉动阵列的计算单元,在脉动阵列的计算单元上,对已输入的元素和对应的输入矩阵中的元素进行乘法运算,得到中间数据。计算机设备将扩充后的至少两个卷积矩阵的剩余位置中至少一个相同位置上的元素输入脉动阵列的计算单元,在脉动阵列的计算单元上,对已输入的元素和对应的输入矩阵中的元素进行乘法运算,得到下一个中间数据,直至扩充后的至少两个卷积矩阵中每个位置上的元素均已进行乘法运算,在脉动阵列的计算单元上,将得到的多个中间数据进行加法运算,得到矩阵集合对应的输出数据。
可选地,每次输入的一个卷积矩阵中的元素的个数等于脉动阵列的行数除以矩阵集合中未扩充前的卷积矩阵的个数后向下取整。
可选地,计算机设备将脉动阵列在列方向上均匀划分为k个脉动子阵列,k等于扩充系数,按照扩充系数k对至少两个卷积矩阵进行扩充后,可以得到k组卷积矩阵,则脉动阵列划分后的每个脉动子阵列用于对一组卷积矩阵进行处理。计算机设备将每组卷积矩阵中至少一个相同位置上的元素输入该组卷积矩阵对应的脉动子阵列的计算单元,在脉动子阵列的计算单元上,对已输入的元素和对应的输入矩阵中的元素进行乘法运算。
可选地,计算机设备将每组卷积矩阵中至少一个相同位置上的元素输入该组卷积矩阵对应的脉动子阵列的计算单元,包括:将一组卷积矩阵中不同卷积矩阵的相同位置上的元素输入至脉动子阵列的不同列的计算单元,将同一卷积矩阵中不同位置上的元素输入脉动子阵列的同一列上的计算单元。
例如,以一个矩阵集合包括32个卷积矩阵为例,卷积矩阵的尺寸为3×3为例,脉动阵列的尺寸为64×64,32个卷积矩阵扩充后得到64个卷积矩阵,卷积矩阵的尺寸变为3×4。第一组卷积矩阵包括32个卷积矩阵,第二组卷积矩阵包括32个卷积矩阵。脉动阵列可以划分为尺寸为64×32的两个脉动子阵列。对于每组卷积矩阵,在每个cycle中,将卷积矩阵中两个位置上的元素输入脉动阵列的计算单元。则将第1个卷积矩阵的第1个位置上的元素输入脉动子阵列的第1行第1列的计算单元,将第1组第2个卷积矩阵的第1个位置上的元素输入脉动子阵列的第2行第2列的计算单元,将第1组第i个卷积矩阵的第1个位置上的元素输入脉动子阵列的第i行第i列的计算单元。将第1个卷积矩阵的第2个位置上的元素输入脉动子阵列的第33行第33列的计算单元,将第2个卷积矩阵的第2个位置上的元素输入脉动子阵列的第34行第34列的计算单元,将第i个卷积矩阵的第2个位置上的元素输入脉动子阵列的第32+i行第32+i列的计算单元。其中,i为不大于32的正整数。
405、计算机设备将N个矩阵集合对应的输出数据进行组合,得到输入数据和卷积数据的深度卷积结果。
计算机设备采用上述步骤403-步骤404的方式对每个矩阵集合进行处理,得到每个矩阵集合对应的输出数据,每个矩阵集合对应的输出数据为该矩阵集合中的卷积矩阵与对应的输入矩阵进行卷积运算的结果,那么将N个矩阵集合对应的输出数据进行组合,即可得到整个输入数据和整个卷积数据进行深度卷积的深度卷积结果。
在一种可能实现方式中,计算机设备将N个矩阵集合对应的输出数据进行拼接,得到该深度卷积结果。
图5是本申请实施例提供的又一种数据处理方法的流程图,如图5所示,深度卷积层提供输入数据和矩阵数据。计算机设备计算最大扩充系数,判断数据搬运引擎是否支持随路扩充。如果支持随路扩充,则按照最大扩充系数对卷积数据进行随路扩充(搬运后进行扩充)。如果不支持随路扩充,则综合考虑运算时间和搬运时间计算最优扩充系数,最优扩充系数小于最大扩充系数,按照最优扩充系数对卷积数据进行离线扩充(搬运前进行扩充)。计算机设备在第二存储器中存储输入数据和扩充后的卷积数据,通过脉动阵列对输入数据和扩充后的矩阵数据进行深度卷积处理,得到深度卷积结果。
本申请实施例提供的方法,在针对一个矩阵集合的计算轮次中,如果卷积矩阵的个数不大于脉动阵列的二分之一,那么该脉动阵列中会存在至少一半计算单元不会被使用到,基于此,按照脉动阵列的列数和卷积矩阵的个数之间的比值,确定扩充系数,然后按照该扩充系数,对矩阵集合中的至少两个卷积矩阵进行扩充,来增大卷积矩阵的个数,同时还增大卷积矩阵的尺寸和卷积步长,以抵消卷积矩阵个数增加所带来的影响,相当于将少量卷积矩阵在较小卷积步长上的计算量等效为更多卷积矩阵在较大卷积步长上的计算量,从而将在高度或宽度方向上的计算量转移到通道数方向上,由于增大了卷积矩阵的个数,使得脉动阵列中更多的计算单元可以被使用到,因此可以提高脉动阵列的利用率,有利于充分利用脉动阵列的并行计算能力。
在深度卷积运算中,一个卷积矩阵负责对输入数据中的一个通道进行卷积,一个通道仅被一个卷积矩阵进行卷积,也即是深度卷积运算是逐通道进行卷积的,所以可以看作逐通道执行输入通道数和输出通道数均等于1的多个卷积。图6是相关技术提供的一种深度卷积的示意图,如图6所示,输入数据为[Hi,Wi,Ci],Hi表示输入矩阵的高度,Wi表示输入矩阵的宽度,Ci表示输入数据的通道数,也即是输入矩阵的个数,Hi=96,Wi=96,Ci=256。卷积数据为[Kh,Kw,C],Kh表示卷积矩阵的高度,Kw表示卷积矩阵的宽度,C表示卷积数据的通道数,也即是卷积矩阵的个数,Kh=3,Kw=3,C=Ci=256。高度和宽度方向上的卷积步长均等于1。计算机设备在脉动阵列上逐通道对输入矩阵和卷积矩阵进行卷积运算,得到深度卷积结果,深度卷积结果为[Ho,Wo,Co],Co=Ci=256,另外通过对输入矩阵进行填充,可以使得Ho=Hi=96,Wo=Wi=96。
图7是相关技术提供的一种卷积矩阵在脉动阵列上的分布示意图,如图7所示,左侧为多个卷积矩阵,右侧为卷积矩阵在脉动阵列上的分布情况,脉动阵列的尺寸为64×64,在没有对卷积矩阵进行分组和扩充的情况下,脉动阵列需要逐通道对每个卷积矩阵进行处理,以一个卷积矩阵为例,在每个cycle中,对一个卷积矩阵中一个位置上的元素进行处理。如图7所示,卷积矩阵的尺寸为3×3,卷积矩阵的个数为256,则需要将第1个卷积矩阵中的第1个位置上的元素输入脉动阵列中的一个计算单元进行处理,处理完毕后将第1个卷积矩阵中的第2个位置上的元素输入脉动阵列中的一个计算单元进行处理,以此类推,直至将第1个卷积矩阵中的第9个位置上的元素输入脉动阵列中的一个计算单元进行处理。然后按照相同的方式,对第2个卷积矩阵进行处理,以此类推,直至将第256个卷积矩阵处理完毕。因此,在每次计算过程中,脉动阵列上仅有一个计算单元是有效的,从而浪费了脉动阵列的多个计算单元的并行处理能力。
基于此,本申请实施例提供了一种可以对卷积矩阵进行分组和扩充的处理方式,参见下述图8和图9所示。
图8是本申请实施例提供的另一种深度卷积的示意图,如图8所示,本申请实施例对图6中的256个卷积矩阵进行了分组和扩充,将256个卷积矩阵分为8个矩阵集合,每个矩阵集合包括32个卷积矩阵,32个卷积矩阵的尺寸为3×3,然后将32个卷积矩阵进行扩充,得到64个尺寸为3×4的卷积矩阵。高度方向上的卷积步长等于1,宽度方向上的卷积步长等于2,计算机设备对于每个矩阵集合,将该矩阵集合中的64个卷积矩阵输入脉动阵列的计算单元中进行处理,得到该矩阵集合对应的输出数据,该输出数据为[Ho,Wo,Co],Co=64,另外通过对输入矩阵进行填充,可以使得Ho=Hi=96,Wo=48。
图9是本申请实施例提供的一种卷积矩阵在脉动阵列上的分布示意图,如图9所示,图9中的左侧为一个矩阵集合中扩充后的64卷积矩阵,64个卷积矩阵分为2组,第一组包括32个卷积矩阵,第二组包括32个卷积矩阵,卷积矩阵的尺寸为3×4,图9中有数字的位置包括扩充前的卷积矩阵中的元素,没数字的位置包括填充的目标数值。图9中的右侧为卷积矩阵在脉动阵列上的分布情况,脉动阵列的尺寸为64×64,在对卷积矩阵进行分组和扩充的情况下,脉动阵列按照图9所示的虚线划分为前半部分和后半部分。计算机设备将第一组的32个卷积矩阵中“1”位置上的元素输入脉动阵列前半部分(如图9的脉动阵列中前半部分的数字“1”所在的位置),将第一组的32个卷积矩阵中“2”位置上的元素输入脉动阵列前半部分(如图9的脉动阵列中前半部分的数字“2”所在的位置),将第二组的32个卷积矩阵中“1”位置上的元素输入脉动阵列后半部分(如图9的脉动阵列中后半部分的数字“1”所在的位置),将第一组的32个卷积矩阵中“2”位置上的元素输入脉动阵列前半部分(如图9的脉动阵列中后半部分的数字“2”所在的位置),以此类推,则需要采用脉动阵列处理6轮(如图9所示的6个正方形)。其中,图9中脉动阵列中未填写数字的部分表示填充数值0。
采用相关技术提供的方法,在脉动阵列上进行卷积运算所需花费的运算时间可表示为:
Compute_Time=C×Ho×Wo×Kh×Kw;
其中,Compute_Time表示运算时间,C表示通道数,Ho表示输入矩阵的高度,Wo表示输入矩阵的宽度,Kh表示卷积矩阵的高度,Kw表示卷积矩阵的宽度。
采用本申请实施例提供的方法,在脉动阵列上进行卷积运算所需花费的运算时间可表示为:
New_Compute_Time=Ceil(C/(half_N))×Ho×Ceil(Wo/2)×Ceil(Kh×New_Kw/2)=Ceil(C/(N/2))×Ho×Ceil(Wo/2)×Ceil(Kh×(Kw+sw)/2);
其中,New_Compute_Time表示运算时间,Ceil()表示向上取整,C表示通道数,half_N表示脉动阵列的列数的一半,Ho表示输入矩阵的高度,Wo表示输入矩阵的宽度,Kh表示卷积矩阵的高度,Kw表示扩充前的卷积矩阵的宽度,New_Kw表示扩充后的卷积矩阵的宽度,N表示脉动阵列的列数,sw表示扩充前的卷积矩阵在宽度方向上的卷积步长。
其中,当C是N/2的整数倍时,Wo和Kh×(Kw+sw)均是2的整数倍,因此对卷积矩阵进行分组和扩充后,运算时间的加速倍数可表示为:
Ratio=N×(Kw+sw)/(2×Kw);
其中,Ratio表示运算时间的加速倍数,N表示脉动阵列的列数,Kw表示卷积核的宽度,sw表示扩充前的卷积矩阵在宽度方向上的卷积步长。加速倍数随着N、Kw以及sw的变化而变化,以Kh=3,Kw=3,sw=1,C=256为例,针对脉动阵列的N=64的矩阵加速引擎来说,加速倍数为42倍。
本申请实施例提供的数据处理方法,可以针对深度卷积运算为脉动阵列的运算过程带来成倍的性能提升,而且无需对硬件架构进行改进,该方法可广泛适用于不同的硬件架构和不同的卷积参数。例如,在卷积步长等于1,脉动阵列的列数等于64的情况下,以数据搬运引擎支持随路扩充为例,针对不同的卷积矩阵的宽度,可产生的运算加速倍数如下述表1所示。
表1
从表1中可以看出,本申请实施例在不增加硬件复杂度的前提下,通过对卷积矩阵进行分组和扩充,可以对运算时间进行成倍加速,充分利用了脉动阵列的计算能力。
图10是本申请实施例提供的一种数据处理装置的结构示意图。参见图10,该装置包括:
数据获取模块1001,用于获取输入数据和卷积数据,输入数据和卷积数据为神经网络中待进行深度卷积的数据,输入数据包括多个输入矩阵,卷积数据包括多个卷积矩阵,输入矩阵与卷积矩阵一一对应;
矩阵划分模块1002,用于基于多个卷积矩阵的个数和脉动阵列的列数,将多个卷积矩阵分为N个矩阵集合,每个矩阵集合包括多个卷积矩阵中的至少两个卷积矩阵,且每个矩阵集合中卷积矩阵的个数不大于脉动阵列的列数,脉动阵列包括多个计算单元,N为正整数;
运算模块1003,用于对于每个矩阵集合,将矩阵集合中的至少两个卷积矩阵输入脉动阵列的计算单元,在脉动阵列的计算单元上,对已输入的每个卷积矩阵和卷积矩阵对应的输入矩阵进行卷积运算,得到矩阵集合对应的输出数据;
运算模块1003,还用于将N个矩阵集合对应的输出数据进行组合,得到输入数据和卷积数据的深度卷积结果。
本申请实施例提供的数据处理装置,在深度卷积的场景下,输入数据中输入矩阵的个数与卷积数据中卷积矩阵的个数相等且一一对应,每个卷积矩阵用于对一个输入矩阵进行卷积。为了提高脉动阵列的利用率,基于卷积矩阵的个数和脉动阵列的列数,将多个卷积矩阵分为N个矩阵集合,在每个计算轮次中,将一个矩阵集合中的至少两个卷积矩阵和对应的输入矩阵在脉动阵列上进行卷积运算,得到输出数据,从而实现并行地对至少两个卷积矩阵和对应的输入矩阵进行卷积运算,后续将多个矩阵集合对应的输出数据进行组合即可得到输入数据与卷积数据的深度卷积结果,一方面提高了脉动阵列的利用率,充分利用了脉动阵列中多个计算单元的并行计算能力,另一方面提高了整个数据处理过程的效率。
可选地,矩阵划分模块1002,用于:
确定不大于脉动阵列的列数的M,M为大于1的整数;
将多个卷积矩阵的个数与M之间的比值向上取整,得到N;
将多个卷积矩阵分为N个矩阵集合。
可选地,矩阵划分模块1002,用于将脉动阵列的列数的二分之一,确定为M。
可选地,运算模块1003,用于:
将矩阵集合中的至少两个卷积矩阵中至少一个相同位置上的元素输入脉动阵列的计算单元,在脉动阵列的计算单元上,对已输入的元素和对应的输入矩阵中的元素进行乘法运算,得到中间数据;
将至少两个卷积矩阵的剩余位置中至少一个相同位置上的元素输入脉动阵列的计算单元,在脉动阵列的计算单元上,对已输入的元素和对应的输入矩阵中的元素进行乘法运算,得到下一个中间数据,直至至少两个卷积矩阵中每个位置上的元素均已进行乘法运算;
在脉动阵列的计算单元上,将得到的多个中间数据进行加法运算,得到输出数据。
可选地,运算模块1003,用于将不同卷积矩阵的相同位置上的元素输入至脉动阵列的不同列的计算单元,将同一卷积矩阵中不同位置上的元素输入脉动阵列的同一列上的计算单元。
可选地,运算模块1003,用于:
在矩阵集合中的至少两个卷积矩阵的个数不大于脉动阵列的列数的二分之一的情况下,对矩阵集合中的至少两个卷积矩阵进行扩充,以使扩充后的卷积矩阵的个数、尺寸和卷积步长增大;
将扩充后的卷积矩阵输入脉动阵列的计算单元,在脉动阵列的计算单元上,对已输入的每个卷积矩阵和卷积矩阵对应的输入矩阵进行卷积运算,得到矩阵集合对应的输出数据。
可选地,运算模块1003,用于:
在矩阵集合中的至少两个卷积矩阵的个数不大于脉动阵列的列数的二分之一的情况下,将脉动阵列的列数和至少两个卷积矩阵的个数之间的比值向下取整,得到参考数值,基于参考数值,确定扩充系数;
基于扩充系数,对矩阵集合中的至少两个卷积矩阵进行扩充,以使扩充后的卷积矩阵的个数、尺寸和卷积步长增大。
可选地,运算模块1003,用于:
基于扩充系数和第一卷积步长,确定第二卷积步长,第一卷积步长为扩充前的卷积矩阵的卷积步长,第二卷积步长为扩充后的卷积矩阵的卷积步长;
基于扩充系数和第一尺寸,确定第二尺寸,第一尺寸为扩充前的卷积矩阵的尺寸,第二尺寸为扩充后的卷积矩阵的尺寸;
将至少两个卷积矩阵复制K-1份,K等于扩充系数;
对每个卷积矩阵进行填充,以使填充后的卷积矩阵的尺寸等于第二尺寸。
可选地,卷积数据存储于处理器上的第一存储器中,脉动阵列用于从处理器上的第二存储器中获取卷积数据,处理器上还包括数据搬运引擎;
运算模块1003,用于在数据搬运引擎支持随路扩充的情况下,将参考数值确定为扩充系数,随路扩充是指在任一存储器中对卷积矩阵进行扩充;
运算模块1003,还用于通过数据搬运引擎,将卷积数据从第一存储器搬运至第二存储器,在第二存储器中基于扩充系数对矩阵集合中的至少两个卷积矩阵进行扩充。
可选地,卷积数据存储于处理器上的第一存储器中,脉动阵列用于从处理器上的第二存储器中获取卷积数据,处理器上还包括数据搬运引擎;
运算模块1003,用于在数据搬运引擎不支持随路扩充的情况下,将大于1且小于参考数值的整数确定为扩充系数,随路扩充是指在任一存储器中对卷积矩阵进行扩充;
运算模块1003,还用于在第一存储器中基于扩充系数,对矩阵集合中的至少两个卷积矩阵进行扩充,通过数据搬运引擎,将扩充后的卷积矩阵从第一存储器搬运至第二存储器。
需要说明的是:上述实施例提供的数据处理装置,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将计算机设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据处理装置与数据处理方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本申请实施例还提供了一种计算机设备,该计算机设备包括处理器和存储器,存储器中存储有至少一条计算机程序,该至少一条计算机程序由处理器加载并执行,以实现上述实施例的数据处理方法中所执行的操作。
可选地,该计算机设备提供为终端。图11示出了本申请一个示例性实施例提供的终端1100的结构示意图。终端1100包括有:处理器1101和存储器1102。
处理器1101可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1101可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(FieldProgrammable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1101也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1101可以集成有GPU(Graphics Processing Unit,图像处理的交互器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1101还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器1102可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1102还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1102中的非暂态的计算机可读存储介质用于存储至少一条计算机程序,该至少一条计算机程序用于被处理器1101所具有以实现本申请中方法实施例提供的数据处理方法。
在一些实施例中,终端1100还可选包括有:外围设备接口1103和至少一个外围设备。处理器1101、存储器1102和外围设备接口1103之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口1103相连。可选地,外围设备包括:射频电路1104、显示屏1105和摄像头组件1106中的至少一种。
外围设备接口1103可被用于将I/O(Input /Output,输入/输出)相关的至少一个外围设备连接到处理器1101和存储器1102。在一些实施例中,处理器1101、存储器1102和外围设备接口1103被集成在同一芯片或电路板上;在一些其他实施例中,处理器1101、存储器1102和外围设备接口1103中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路1104用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路1104通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1104将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路1104包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路1104可以通过至少一种无线通信协议来与其它设备进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路1104还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏1105用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏1105是触摸显示屏时,显示屏1105还具有采集在显示屏1105的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器1101进行处理。此时,显示屏1105还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1105可以为一个,设置在终端1100的前面板;在另一些实施例中,显示屏1105可以为至少两个,分别设置在终端1100的不同表面或呈折叠设计;在另一些实施例中,显示屏1105可以是柔性显示屏,设置在终端1100的弯曲表面上或折叠面上。甚至,显示屏1105还可以设置成非矩形的不规则图形,也即异形屏。显示屏1105可以采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(Organic Light-EmittingDiode,有机发光二极管)等材质制备。
摄像头组件1106用于采集图像或视频。可选地,摄像头组件1106包括前置摄像头和后置摄像头。前置摄像头设置在终端1100的前面板,后置摄像头设置在终端1100的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件1106还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
本领域技术人员可以理解,图11中示出的结构并不构成对终端1100的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
可选地,该计算机设备提供为服务器。图12是本申请实施例提供的一种服务器的结构示意图,该服务器1200可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(Central Processing Units,CPU)1201和一个或一个以上的存储器1202,其中,所述存储器1202中存储有至少一条计算机程序,所述至少一条计算机程序由所述处理器1201加载并执行以实现上述各个方法实施例提供的方法。当然,该服务器还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该服务器还可以包括其他用于实现设备功能的部件,在此不做赘述。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有至少一条计算机程序,该至少一条计算机程序由处理器加载并执行,以实现上述实施例的数据处理方法所执行的操作。
本申请实施例还提供了一种计算机程序产品,包括计算机程序,所述计算机程序由处理器加载并执行,以实现如上述实施例的数据处理方法所执行的操作。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请实施例的可选实施例,并不用以限制本申请实施例,凡在本申请实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (10)

1.一种数据处理方法,其特征在于,所述方法包括:
获取输入数据和卷积数据,所述输入数据和所述卷积数据为神经网络中待进行深度卷积的数据,所述输入数据包括多个输入矩阵,所述卷积数据包括多个卷积矩阵,所述输入矩阵与所述卷积矩阵一一对应;
基于所述多个卷积矩阵的个数和脉动阵列的列数,将所述多个卷积矩阵分为N个矩阵集合,每个矩阵集合包括所述多个卷积矩阵中的至少两个卷积矩阵,且每个矩阵集合中卷积矩阵的个数不大于所述脉动阵列的列数,所述脉动阵列包括多个计算单元,N为正整数;其中,所述卷积数据存储于处理器上的第一存储器中,所述脉动阵列用于从所述处理器上的第二存储器中获取所述卷积数据,所述处理器上还包括数据搬运引擎;
对于每个矩阵集合,在所述矩阵集合中的至少两个卷积矩阵的个数不大于所述脉动阵列的列数的二分之一的情况下,将所述脉动阵列的列数和所述至少两个卷积矩阵的个数之间的比值向下取整,得到参考数值,在所述数据搬运引擎支持随路扩充的情况下,将所述参考数值确定为扩充系数,所述随路扩充是指在任一存储器中对卷积矩阵进行扩充;通过所述数据搬运引擎,将所述卷积数据从所述第一存储器搬运至所述第二存储器,在所述第二存储器中基于所述扩充系数对所述矩阵集合中的至少两个卷积矩阵进行扩充,以使扩充后的卷积矩阵的个数、尺寸和卷积步长增大;将扩充后的卷积矩阵输入所述脉动阵列的计算单元,在所述脉动阵列的计算单元上,对已输入的每个卷积矩阵和所述卷积矩阵对应的输入矩阵进行卷积运算,得到所述矩阵集合对应的输出数据;
将所述N个矩阵集合对应的输出数据进行组合,得到所述输入数据和所述卷积数据的深度卷积结果。
2.根据权利要求1所述的方法,其特征在于,所述基于所述多个卷积矩阵的个数和脉动阵列的列数,将所述多个卷积矩阵分为N个矩阵集合,包括:
确定不大于所述脉动阵列的列数的M,M为大于1的整数;
将所述多个卷积矩阵的个数与M之间的比值向上取整,得到N;
将所述多个卷积矩阵分为N个矩阵集合。
3.根据权利要求2所述的方法,其特征在于,所述确定不大于所述脉动阵列的列数的M,包括:
将所述脉动阵列的列数的二分之一,确定为M。
4.根据权利要求1所述的方法,其特征在于,所述将扩充后的卷积矩阵输入所述脉动阵列的计算单元,在所述脉动阵列的计算单元上,对已输入的每个卷积矩阵和所述卷积矩阵对应的输入矩阵进行卷积运算,得到所述矩阵集合对应的输出数据,包括:
将扩充后的卷积矩阵中至少一个相同位置上的元素输入所述脉动阵列的计算单元,在所述脉动阵列的计算单元上,对已输入的元素和对应的输入矩阵中的元素进行乘法运算,得到中间数据;
将扩充后的卷积矩阵的剩余位置中至少一个相同位置上的元素输入所述脉动阵列的计算单元,在所述脉动阵列的计算单元上,对已输入的元素和对应的输入矩阵中的元素进行乘法运算,得到下一个中间数据,直至所述至少两个卷积矩阵中每个位置上的元素均已进行乘法运算;
在所述脉动阵列的计算单元上,将得到的多个中间数据进行加法运算,得到所述输出数据。
5.根据权利要求4所述的方法,其特征在于,所述将扩充后的卷积矩阵中至少一个相同位置上的元素输入所述脉动阵列的计算单元,包括:
将不同卷积矩阵的相同位置上的元素输入至所述脉动阵列的不同列的计算单元,将同一卷积矩阵中不同位置上的元素输入所述脉动阵列的同一列上的计算单元。
6.根据权利要求1所述的方法,其特征在于,所述基于所述扩充系数对所述矩阵集合中的至少两个卷积矩阵进行扩充,以使扩充后的卷积矩阵的个数、尺寸和卷积步长增大,包括:
基于所述扩充系数和第一卷积步长,确定第二卷积步长,所述第一卷积步长为扩充前的卷积矩阵的卷积步长,所述第二卷积步长为扩充后的卷积矩阵的卷积步长;
基于所述扩充系数和第一尺寸,确定第二尺寸,所述第一尺寸为扩充前的卷积矩阵的尺寸,所述第二尺寸为扩充后的卷积矩阵的尺寸;
将所述至少两个卷积矩阵复制K-1份,K等于所述扩充系数;
对每个卷积矩阵进行填充,以使填充后的卷积矩阵的尺寸等于所述第二尺寸。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述数据搬运引擎不支持随路扩充的情况下,将大于1且小于所述参考数值的整数确定为所述扩充系数;
在所述第一存储器中基于所述扩充系数,对所述矩阵集合中的至少两个卷积矩阵进行扩充,通过所述数据搬运引擎,将扩充后的卷积矩阵从所述第一存储器搬运至所述第二存储器。
8.一种数据处理装置,其特征在于,所述装置包括:
数据获取模块,用于获取输入数据和卷积数据,所述输入数据和所述卷积数据为神经网络中待进行深度卷积的数据,所述输入数据包括多个输入矩阵,所述卷积数据包括多个卷积矩阵,所述输入矩阵与所述卷积矩阵一一对应;
矩阵划分模块,用于基于所述多个卷积矩阵的个数和脉动阵列的列数,将所述多个卷积矩阵分为N个矩阵集合,每个矩阵集合包括所述多个卷积矩阵中的至少两个卷积矩阵,且每个矩阵集合中卷积矩阵的个数不大于所述脉动阵列的列数,所述脉动阵列包括多个计算单元,N为正整数;其中,所述卷积数据存储于处理器上的第一存储器中,所述脉动阵列用于从所述处理器上的第二存储器中获取所述卷积数据,所述处理器上还包括数据搬运引擎;
运算模块,用于对于每个矩阵集合,在所述矩阵集合中的至少两个卷积矩阵的个数不大于所述脉动阵列的列数的二分之一的情况下,将所述脉动阵列的列数和所述至少两个卷积矩阵的个数之间的比值向下取整,得到参考数值,在所述数据搬运引擎支持随路扩充的情况下,将所述参考数值确定为扩充系数,所述随路扩充是指在任一存储器中对卷积矩阵进行扩充;通过所述数据搬运引擎,将所述卷积数据从所述第一存储器搬运至所述第二存储器,在所述第二存储器中基于所述扩充系数对所述矩阵集合中的至少两个卷积矩阵进行扩充,以使扩充后的卷积矩阵的个数、尺寸和卷积步长增大;将扩充后的卷积矩阵输入所述脉动阵列的计算单元,在所述脉动阵列的计算单元上,对已输入的每个卷积矩阵和所述卷积矩阵对应的输入矩阵进行卷积运算,得到所述矩阵集合对应的输出数据;
所述运算模块,还用于将所述N个矩阵集合对应的输出数据进行组合,得到所述输入数据和所述卷积数据的深度卷积结果。
9.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条计算机程序,所述至少一条计算机程序由所述处理器加载并执行,以实现如权利要求1至7任一项所述的数据处理方法所执行的操作。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条计算机程序,所述至少一条计算机程序由处理器加载并执行,以实现如权利要求1至7任一项所述的数据处理方法所执行的操作。
CN202311201712.5A 2023-09-18 2023-09-18 数据处理方法、装置、计算机设备及存储介质 Active CN116980277B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311201712.5A CN116980277B (zh) 2023-09-18 2023-09-18 数据处理方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311201712.5A CN116980277B (zh) 2023-09-18 2023-09-18 数据处理方法、装置、计算机设备及存储介质

Publications (2)

Publication Number Publication Date
CN116980277A CN116980277A (zh) 2023-10-31
CN116980277B true CN116980277B (zh) 2024-01-12

Family

ID=88475229

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311201712.5A Active CN116980277B (zh) 2023-09-18 2023-09-18 数据处理方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN116980277B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114995782A (zh) * 2022-08-03 2022-09-02 上海登临科技有限公司 数据处理方法、装置、设备和可读存储介质
CN115293319A (zh) * 2021-05-03 2022-11-04 三星电子株式会社 脉动阵列以及包括脉动阵列的加速器
CN115829000A (zh) * 2022-10-31 2023-03-21 杭州嘉楠耘智信息科技有限公司 数据处理方法、装置、电子设备及存储介质
CN116090530A (zh) * 2023-02-22 2023-05-09 广东松科智能科技有限公司 可配置卷积核大小和并行计算数目的脉动阵列结构及方法
CN116151334A (zh) * 2022-12-01 2023-05-23 电子科技大学 一种基于多通道脉动阵列的神经网络加速器
KR20230081530A (ko) * 2021-11-30 2023-06-07 충북대학교 산학협력단 메모리 액세스를 최소화하는 컨벌루션 뉴럴 네트워크 가속기 장치
CN116348882A (zh) * 2020-06-30 2023-06-27 华为技术有限公司 一种卷积神经网络数据处理方法及其相关设备

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116348882A (zh) * 2020-06-30 2023-06-27 华为技术有限公司 一种卷积神经网络数据处理方法及其相关设备
CN115293319A (zh) * 2021-05-03 2022-11-04 三星电子株式会社 脉动阵列以及包括脉动阵列的加速器
KR20230081530A (ko) * 2021-11-30 2023-06-07 충북대학교 산학협력단 메모리 액세스를 최소화하는 컨벌루션 뉴럴 네트워크 가속기 장치
CN114995782A (zh) * 2022-08-03 2022-09-02 上海登临科技有限公司 数据处理方法、装置、设备和可读存储介质
CN115829000A (zh) * 2022-10-31 2023-03-21 杭州嘉楠耘智信息科技有限公司 数据处理方法、装置、电子设备及存储介质
CN116151334A (zh) * 2022-12-01 2023-05-23 电子科技大学 一种基于多通道脉动阵列的神经网络加速器
CN116090530A (zh) * 2023-02-22 2023-05-09 广东松科智能科技有限公司 可配置卷积核大小和并行计算数目的脉动阵列结构及方法

Also Published As

Publication number Publication date
CN116980277A (zh) 2023-10-31

Similar Documents

Publication Publication Date Title
CN111667051B (zh) 适用边缘设备的神经网络加速器及神经网络加速计算方法
CN110050267B (zh) 用于数据管理的系统和方法
CN109117948B (zh) 画风转换方法及相关产品
CN112840356B (zh) 运算加速器、处理方法及相关设备
CN111898733B (zh) 一种深度可分离卷积神经网络加速器架构
US11604975B2 (en) Ternary mode of planar engine for neural processor
CN112163601B (zh) 图像分类方法、系统、计算机设备及存储介质
Colleman et al. High-utilization, high-flexibility depth-first CNN coprocessor for image pixel processing on FPGA
CN112633490A (zh) 执行神经网络模型的数据处理装置、方法及相关产品
CN114461978A (zh) 数据处理方法、装置、电子设备及可读存储介质
CN116842307B (zh) 数据处理方法、装置、设备、芯片及存储介质
CN113837922A (zh) 计算装置、数据处理方法及相关产品
CN116980277B (zh) 数据处理方法、装置、计算机设备及存储介质
US20230206051A1 (en) Broadcasting mode of planar engine for neural processor
US20220230069A1 (en) Neural network sparsification device and method, and related product
CN116781484B (zh) 数据处理方法、装置、计算机设备及存储介质
CN113850377A (zh) 数据处理装置、数据处理方法及相关产品
CN114254563A (zh) 数据处理方法及装置、电子设备、存储介质
CN117063182A (zh) 一种数据处理方法和装置
CN114003198A (zh) 内积处理部件、任意精度计算设备、方法及可读存储介质
CN114692824A (zh) 一种神经网络模型的量化训练方法、装置和设备
CN113469333B (zh) 执行神经网络模型的人工智能处理器、方法及相关产品
CN116150556A (zh) 执行卷积运算的计算装置、方法及相关产品
KR20230068963A (ko) 엑셀러레이션을 이용한 신경망 트레이닝 시스템 및 이의 신경망 트레이닝 방법
CN115081602A (zh) 执行Winograd卷积的计算装置、集成电路装置及板卡

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