首页> 中国专利> 支持嵌入式平台多核并行的CNN网络推理框架设计方法

支持嵌入式平台多核并行的CNN网络推理框架设计方法

摘要

本发明属于雷达信息处理技术领域,公开了一种支持嵌入式平台多核并行的CNN网络推理框架设计方法。本发明的方法包括读取深度学习框架训练后模型文件,从中提取权值和偏置参数并用指针变量定义;将CNN网络中运算分别封装成运算核函数,进行通用编程接口设计,用于搭建CNN网络推理框架的预测函数;基于多核处理器的多线程机制,将预测函数绑定到多核处理器的核号;根据要部署CNN网络推理框架的平台类型,编写相应的VSIPL静态库;将CNN网络推理框架部署在各操作系统。采用本发明在嵌入式平台建立神经网络模型的推理框架,满足应用场景的实时处理需求,该推理框架支持多种芯片,兼容多种操作系统。

著录项

  • 公开/公告号CN113298259A

    专利类型发明专利

  • 公开/公告日2021-08-24

    原文格式PDF

  • 申请/专利号CN202110647708.6

  • 发明设计人 王嘎;杨洋;唐强;韩文俊;丁琳琳;

    申请日2021-06-10

  • 分类号G06N5/04(20060101);G06N3/04(20060101);G06N3/08(20060101);G06F15/78(20060101);

  • 代理机构32207 南京知识律师事务所;

  • 代理人熊敏敏;高娇阳

  • 地址 210039 江苏省南京市雨花台区国睿路8号

  • 入库时间 2023-06-19 12:19:35

说明书

技术领域

本发明属于雷达信息处理技术领域,具体涉及一种支持嵌入式平台多核并行的CNN网络推理框架设计方法。

背景技术

在嵌入式系统DSP平台,深度学习面临的挑战主要是没有一个统一、通用的高性能推理框架。目前Google的深度学习框架tensorflow也只是在移动端CPU、GPU端适用;百度的人工智能框架PadllePaddle也不适用于DSP平台。在低成本、低能耗、计算能力有限的嵌入式系统中部署低存储、低复杂度的深度学习框架面临挑战。硬件生产厂商正在努力研发基于人工智能的专门设计芯片,在硬件上加速,同时针对嵌入式设备优化深度学习算法,针对嵌入式平台进行高性能并行计算,以及基于嵌入式平台建立深度学习框架,成为新的解决途径。目前,DSP平台缺少深度学习框架,例如神经网络算法在嵌入式DSP平台没有推理框架或者推理框架实时性不高。

发明内容

针对现有技术存在的神经网络算法在嵌入式DSP平台没有推理框架或者推理框架实时性不高的问题,本发明的一个目的在于提供一种支持嵌入式平台多核并行的CNN网络推理框架设计方法,用于建立神经网络模型在CPU和DSP等嵌入式平台的推理框架,以满足应用场景的实时处理需求,该推理框架支持多种芯片,兼容多种操作系统。

具体地说,本发明是采用以下技术方案实现的。

本发明提供一种支持嵌入式平台多核并行的CNN网络推理框架设计方法,包括:

CNN网络模型加载:读取深度学习框架训练后模型文件,从中提取权值和偏置参数,输出用指针变量定义的模型权值和偏置参数;

CNN网络函数封装:采用向量指令集、汇编语言和C语言将CNN网络中卷积运算、池化运算、激活运算和全连接运算分别封装成运算核函数,所述各运算核函数的输入是所述用指针变量定义的模型权值和偏置,输出分别是卷积层函数、池化层函数、激活函数、全连接层函数;基于VSIPL标准的基本块和视图对象设计,将封装的卷积层函数、池化层函数、激活函数、全连接层函数,包括函数参数,进行编程接口设计,统一成具有通用神经网络编程接口的运算核函数;采用所述具有通用神经网络编程接口的运算核函数搭建CNN网络推理框架的预测函数;

进行并行化设计:基于多核处理器的多线程机制,将所述CNN网络推理框架的预测函数作为线程函数,创建多个任务或多个线程,设计线程同步与通信,基于负载均衡原则对输入的测试数据集进行数据划分,通过线程绑定函数把各任务或线程绑定到多核处理器的核号;

进行跨平台设计:根据要部署CNN网络推理框架的平台类型,编写相应的VSIPL静态库;将CNN网络推理框架部署在VxWorks、Linux、Windows、SylixOS或Reworks操作系统。

进一步的,所述训练后模型文件是包含模型参数的二进制文件,由控制表头参数+数据组成;

其中,所述控制表头参数是整数,控制表头参数的第1个字是神经网络层数,第2、3、4个字表示第一层神经网络模型的权值矩阵维度,第5、6、7个字是第一层池化的维度,第8个字是第一层池化偏置的维度,第9、10、11个字是第二层池化的维度,第12个字是第二层池化偏置的维度;以此类推,直到最后一层神经网络;

所述数据是根据控制表头参数的值,依次将第一层直到最后一层神经网络模型的权值和偏置数据存储在二进制文件中的数据。

进一步的,所述卷积层函数进行一维卷积、二维卷积或三维卷积运算,设置卷积运算的维度、卷积核个数、卷积核大小参数;

所述池化层函数进行一维池化、二维池化或三维池化,设置池化运算的维度、池化类型、间隔、步长;

所述全连接层函数设置权值矩阵的维度;

所述激活函数设置激活函数。

进一步的,所述基于VSIPL标准的基本块和视图对象设计,将封装的卷积层函数、池化层函数、激活函数、全连接层函数,包括函数参数,进行编程接口设计,统一成具有通用神经网络编程接口的运算核函数包括:

基于VSIPL计算中间件标准定义基本块和视图,将所述CNN网络模型加载输出的指针变量绑定为基本块,并从基本块提取数据绑定为视图,视图是矩阵或者向量;以转换后的矩阵或向量作为输入参数,调用所述运算核函数。

进一步的,所述基于负载均衡原则对输入的测试数据集进行数据划分包括:

将输入的测试数据集平均划分为N份,N为多核处理器的核数量,创建N个任务或线程,把所述任务或线程绑定在多核处理器的N个核上以数据并行的方式执行。

本发明的支持嵌入式平台多核并行的CNN网络推理框架设计方法的有益效果如下:

建立了卷积神经网络在嵌入式平台进行推理的处理框架,通过使用封装的核函数快速搭建卷积神经网络模型,降低人工智能算法在嵌入式平台开发的门槛,提高了卷积神经网络在CPU和DSP平台进行推理的效率;

通过将人工智能算法在嵌入式平台推理框架进行多核并行设计,通过多核并行运行推理框架将数据和计算任务自动划分,映射到硬件线程,保证卷积神经网络在CPU和DSP平台的高速实时处理,发挥DSP平台的硬件资源利用率;

提供通用的卷积神经网络接口,通过自定义的卷积神经网络运算核函数算子和编程接口,以及底层汇编函数库,开发者可以根据本发明提供的编程接口进行二次开发,提高编程效率。

附图说明

图1是本实施例的支持嵌入式平台多核并行的CNN网络推理框架设计方法示意图。

图2是本实施例的模型文件中数据排列方式示意图。

图3是本实施例的CNN模型的前向推理流程图。

具体实施方式

下面结合实施例并参照附图对本发明作进一步详细描述。

实施例1:

本发明的一个实施例,为一种支持DSP多核并行的CNN网络推理框架设计方法。如图1所示,本实施例的支持DSP多核并行的CNN网络推理框架设计方法包括:

一、CNN网络模型加载

利用C语言读写文件,即读取深度学习框架(例如tensorflow、pytorch)训练后模型文件,从中提取权值和偏置参数,输出用指针变量定义的模型权值和偏置参数,并写入新文件。训练后模型文件是包含模型参数的二进制文件,以bin为后缀,由控制表头参数+数据组成。其中,控制表头参数是整数,如图2所示,控制表头参数的第1个字是神经网络层数,第2、3、4个字表示第一层神经网络模型的权值矩阵维度,第5、6、7个字是第一层池化的维度,第8个字是第一层池化偏置的维度,第9、10、11个字是第二层池化的维度,第12个字是第二层池化偏置的维度;以此类推,直到最后一层神经网络。数据是根据控制表头参数的值,依次将第一层直到最后一层神经网络模型的权值和偏置数据存储在二进制文件中的数据。

二、CNN网络函数封装

(1)采用向量指令集、汇编语言和C语言将CNN网络中运算(包括卷积运算、池化运算、激活运算、全连接运算、预测函数)分别进行函数封装,封装成运算核函数。各运算核函数的输入是用指针变量定义的模型权值和偏置,输出分别是卷积层函数、池化层函数、激活函数、归一化函数、全连接层函数等。

本发明定义的运算核函数参见表1。

表1卷积神经网络统一编程接口

运算核函数包括卷积层函数、池化层函数、激活函数、全连接层函数、预测函数。具体包括:

卷积层函数,进行一维卷积、二维卷积、三维卷积运算,设置卷积运算的维度、卷积核个数、卷积核大小等参数,并封装成运算核函数;

池化层函数,进行一维池化、二维池化、三维池化,设置池化运算的维度、池化类型、间隔、步长,并封装成运算核函数;

对激活函数进行封装,设计ReLU、softmax、tanh等激活函数;

对全连接层函数进行封装,设计权值矩阵维度;

预测函数,采用卷积层函数、池化层函数、激活函数和全连接层函数搭建CNN网络推理框架的预测函数。

(2)基于VSIPL标准的基本块和视图对象设计,将各个封装的运算核函数(卷积层函数、池化层函数、激活函数、全连接层函数),包括函数参数,进行编程接口设计,统一成具有通用神经网络编程接口的运算核函数。即:

基于VSIPL(Vector Signal and Image Processing Library)计算中间件标准定义block(基本块)和view(视图),将上一步骤(神经网络模型加载)的输出(即指针变量)绑定为block,并从block提取数据绑定为view,view是矩阵或者向量。经过block、view的绑定从而实现了将模型参数转换为矩阵和向量,以转换后的矩阵或向量作为输入参数(参见表1中p1),调用本发明定义的运算核函数。

本发明定义的运算核函数基于VSIPL标准设计,其参数是标准数据格式,参数中数据是矩阵或向量,数据之外的其他参数和应用相关,二次开发时只需要关注算法,设置参数即可。运算核函数通过汇编语言进行优化,可以充分提高流水线效率和高速缓存命中率。

运算核函数通过不同的汇编语言进行编写,可以支持x86、MIPS或powerpc架构。

(3)采用具有通用神经网络编程接口的运算核函数(卷积层函数、池化层函数、激活函数、全连接层函数)搭建CNN网络预测函数。

三、对CNN网络预测函数进行并行化设计

基于CPU、DSP等多核处理器的多线程机制,将CNN网络预测函数作为线程函数,创建多个任务(task)或者多个线程(pthread),设计线程同步与通信,基于负载均衡原则对输入测试数据集进行数据划分,通过线程绑定函数把各任务或线程绑定到多核处理器的核号。即,将输入的测试数据集平均划分为N份,N为多核处理器的核数量,创建N个任务或线程,则N也是并行处理的并行度,把任务(task)或线程(pthread)绑定在多核处理器的N个核上以数据并行的方式执行。具体的讲,就是将待预测的数据平均划分为多份,调用神经网络模型参数加载的模型参数,使用封装的运算核函数编写线程函数,然后将多个线程函数绑定到多核处理器的每一个核上运行,从而实现将数据和计算任务自动映射到多核处理器上。

对预测函数进行并行化设计,提供并行度参数,可以将卷积神经网络的前向传播计算任务映射到多核处理器上,对测试数据进行数据划分,对不相关的计算任务进行任务划分,实现高速实时处理。

可以根据硬件平台对验证数据集讲行数据划分,创建多线程或者多任务机制,数据和计算任务自动映射到硬件,支持单机多核,数据并行,任务并行。

基于不同操作系统的并行运行机制,预测函数可以支持在Linux、Windows、VxWorks、SylixOS、Reworks等操作系统上运行。

四、进行跨平台设计

不同平台调用不同的VSIPL静态库,根据要部署CNN网络推理框架的平台类型,编写相应的VSIPL静态库;将CNN网络推理框架部署在VxWorks、Linux、Windows、SylixOS或Reworks操作系统。

基于本发明定义的神经网络编程接口编写卷积神经网络推理代码,二次开发用户可以根据需求编写任何卷积神经网络的推理代码,写任何调用不同平台的静态库,使得本发明的运算核函数可以在不同硬件平台上部署运行,实现跨平台高性能。同时VSIPL静态库采用不同指令集的汇编语言和C语言实现,高性能函数库能充分发挥计算资源,提升软件性能。

实施例2:

本发明的另一个实施例,为一种CNN网络推理在DSP的多核并行处理方法。在本实施例中,基于卷积神经网络的目标识别推理部分可以运行在vxworks操作系统DSP平台或linux操作系统x86架构CPU平台。

如图3所示,该神经网络模型的前向推理流程是基于卷积神经网络进行飞机型号识别,共有四层神经网络。从训练数据集读取的一条数据,数据是长度150的向量,作为前向推理的输入数据。第一层卷积层,做6个通道的卷积和步长为2的平均池化;第二层卷积层,做12个通道的卷积和步长为2的平均池化;第三层是做全连接层;第四层是输出层。

本实施例的CNN网络推理在DSP的多核并行处理方法,包括以下步骤:

一、CNN网络模型加载

加载tensorflow训练后的CNN网络模型文件,模型文件是bin文件,数据排列方式如图2所示。其中,第四层输出层没有池化,参数默认为[1 1 1]。C语言读取表头和数据,获取模型为4层;第一层6个卷积核,大小是[1 5],池化层步长为2,偏置为6;第二层12个卷积核,大小是[6 5],池化层步长为2,偏置为12;第三层是全连接层,权重大小是[384 50],偏置为50;第四层是输出层,权重大小是[50 10],偏置为10。

二、CNN网络函数封装

采用向量指令集、汇编语言和C语言将CNN网络中运算(包括卷积运算、池化运算、激活运算、全连接运算、预测函数)分别进行函数封装,封装成运算核函数。包括vsip_conv1d函数(用于第一层卷积)、vsip_avgpool_f函数(用于第一层池化)、vsip_active_f函数(用于第一层激活)、vsip_conv1d函数(用于第二层卷积)、vsip_avgpool_f函数(用于第二层池化)、vsip_active_f函数(用于第二层激活)、vsip_fullnet_f函数(用于第三层全连接)、vsip_fullnet_f函数(用于第四层输出),其中输出层(第四层)输出飞机型号所属类别的置信概率(输出10个概率值)。

图2中,D1、D2、D3、D4分别表示第一层(L1)、第二层(L2)、第三层(L3)、第四层(L4)的权值数据。先将D1、D2、D3、D4数据绑定为block,然后从block绑定为view,即矩阵或向量,再以view为输入,调用vsip_conv1d函数(用于第一层卷积)、vsip_avgpool_f函数(用于第一层池化)、vsip_active_f函数(用于第一层激活)、vsip_conv1d函数(用于第二层卷积)、vsip_avgpool_f函数(用于第二层池化)、vsip_active_f函数(用于第二层激活)、vsip_fullnet_f函数(用于第三层全连接)、vsip_fullnet_f函数(用于第四层输出)。基于VSIPL标准的block、view对象设计,将封装的运算核函数,包括函数参数,进行编程接口设计,统一成一个通用的神经网络编程接口。

用封装的vsip_conv1d函数(用于第一层卷积)、vsip_avgpool_f函数(用于第一层池化)、vsip_active_f函数(用于第一层激活)、vsip_conv1d函数(用于第二层卷积)、vsip_avgpool_f函数(用于第二层池化)、vsip_active_f函数(用于第二层激活)、vsip_fullnet_f函数(用于第三层全连接)、vsip_fullnet_f函数(用于第四层输出)搭建卷积神经网络推理框架的预测函数。

三、进行并行化设计

将卷积神经网络推理框架的预测函数作为线程函数,将待预测的数据划分为N份(N为多线程并行处理的并行度),创建N个线程,把线程绑定在多核处理器的N个核上以数据并行的方式执行。

四、进行跨平台设计

根据要部署CNN网络推理框架的平台类型,编写相应的VSIPL静态库;将推理框架部署在vxworks操作系统或linux操作系统,完成跨平台设计,实现对测试数据集的所属标签的判断,提高目标识别分类的准确率。

本发明提供的支持DSP多核并行的CNN网络推理框架设计方法,基于DSP平台的卷积神经网络推理框架,通过模型加载、定义运算核函数算子库、底层汇编优化等手段,并采取多核并行软件设计方法和封装成通用的神经网络接口的方式,对神经网络层、池化层、全连接层进行封装和数据并行设计,实现了雷达系统的目标识别高性能处理需求,具有跨平台、高性能、并行化、易用性的特点。

(1)跨平台:基于VSIPL标准接口设计通用的卷积神经网络运算核函数算子,并对运算核函数进行封装,建立统一的编程接口,实现一次编程,多处运行,支持Linux、Windows、VxWorks、SylixOS、Reworks等操作系统,支持x86、MIPS、powerpc架构。

(2)高性能:针对不同指令集的特点,运算核函数算子采用向量化、并行化、流水线设计,充分发挥CPU、DSP的多级流水线效率、提高向量处理器的效率、降低高速缓存缺失率,从而实现计算函数的高性能,提升推理速度。

(3)并行化:通过多线程设计,将算法映射到多核处理器,支持在CPU和DSP平台的多核并行运行。

(4)易用性:支持tensorflow、pytorch框架,支持卷积神经网络模型。

在一些实施例中,上述技术的某些方面可以由执行软件的处理系统的一个或多个处理器来实现。该软件包括存储或以其他方式有形实施在非暂时性计算机可读存储介质上的一个或多个可执行指令集合。软件可以包括指令和某些数据,这些指令和某些数据在由一个或多个处理器执行时操纵一个或多个处理器以执行上述技术的一个或多个方面。非暂时性计算机可读存储介质可以包括例如磁或光盘存储设备,诸如闪存、高速缓存、随机存取存储器(RAM)等的固态存储设备或其他非易失性存储器设备。存储在非临时性计算机可读存储介质上的可执行指令可以是源代码、汇编语言代码、目标代码或被一个或多个处理器解释或以其他方式执行的其他指令格式。

计算机可读存储介质可以包括在使用期间可由计算机系统访问以向计算机系统提供指令和/或数据的任何存储介质或存储介质的组合。这样的存储介质可以包括但不限于光学介质(例如,光盘(CD)、数字多功能光盘(DVD)、蓝光光盘)、磁介质(例如,软盘、磁带或磁性硬盘驱动器)、易失性存储器(例如,随机存取存储器(RAM)或高速缓存)、非易失性存储器(例如,只读存储器(ROM)或闪存)或基于微机电系统(MEMS)的存储介质。计算机可读存储介质可以嵌入计算系统(例如,系统RAM或ROM)中,固定地附接到计算系统(例如,磁性硬盘驱动器),可移除地附接到计算系统(例如,光盘或通用基于串行总线(USB)的闪存),或者经由有线或无线网络(例如,网络可访问存储(NAS))耦合到计算机系统。

请注意,并非上述一般性描述中的所有活动或要素都是必需的,特定活动或设备的一部分可能不是必需的,并且除了描述的那些之外可以执行一个或多个进一步的活动或包括的要素。更进一步,活动列出的顺序不必是执行它们的顺序。而且,已经参考具体实施例描述了这些概念。然而,本领域的普通技术人员认识到,在不脱离如下权利要求书中阐述的本公开的范围的情况下,可以进行各种修改和改变。因此,说明书和附图被认为是说明性的而不是限制性的,并且所有这样的修改被包括在本公开的范围内。

上面已经关于具体实施例描述了益处、其他优点和问题的解决方案。然而,可能导致任何益处、优点或解决方案发生或变得更明显的益处、优点、问题的解决方案以及任何特征都不应被解释为任何或其他方面的关键、必需或任何或所有权利要求的基本特征。此外,上面公开的特定实施例仅仅是说明性的,因为所公开的主题可以以受益于这里的教导的本领域技术人员显而易见的不同但等同的方式进行修改和实施。除了在下面的权利要求书中描述的以外,没有意图限制在此示出的构造或设计的细节。因此明显的是,上面公开的特定实施例可以被改变或修改,并且所有这样的变化被认为在所公开的主题的范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号