一种基于神经网络模型的FPGA配置文件算术压缩与解压方法与流程

文档序号:21541347发布日期:2020-07-17 17:43阅读:206来源:国知局
一种基于神经网络模型的FPGA配置文件算术压缩与解压方法与流程

本发明属于电子技术领域,具体涉及一种基于神经网络模型的fpga配置文件算术压缩与解压方法。



背景技术:

现场可编程门阵列芯片(fieldprogrammablegatearray,fpga)因为其高效能和高灵活性,近年来在神经网络的硬件加速领域得到了越来越多的关注和认可,特别是在对实时性要求较高的汽车自动驾驶、股票高频交易、物联网计算等领域更是有着广泛的应用。

人工智能与深度学习发展迅速,为了应对日趋复杂的神经网络模型,fpga芯片集成度不断提高,片上可用资源数量不断增多,在提升芯片性能的同时,其配置文件也随之变大。当前采用fpga芯片进行神经网络加速的工作模式多以本地编译完成后将配置文件通过网络传输至fpga云平台进行云配置,实现相关功能。

由于配置文件过于庞大,以及受到公共网络带宽限制,fpga的云配置耗时较长,导致fpga云平台的配置速度过低,影响了应用的运行效率。

因此,如何对配置文件进行高效压缩,降低需要传输的文件大小,是解决配置耗时过长的有效解决办法之一。



技术实现要素:

本发明所要解决的技术问题在于针对上述现有技术中的不足,提供一种基于神经网络模型的fpga配置文件算术压缩与解压方法,提高配置文件的压缩率,从而有效解决配置过程耗时过长问题。

本发明采用以下技术方案:

一种基于神经网络模型的fpga配置文件算术压缩与解压方法,包括以下步骤:

s1、定义fpga配置文件的内容序列,将任意符号在其前k项数据确定下的条件概率分布作为算术编码过程中对应符号的概率;

s2、采用神经网络模型估计fpga配置文件中各项符号的概率;

s3、采用算术编码,使用步骤s2建立的神经网络对步骤s1预测的fpga配置文件各符号概率进行算术编码压缩;

s4、对步骤s3的fpga配置文件进行解压缩。

具体的,步骤s1中,fpga配置文件的二进制码流sn如下:

sn={s1,s2,...,sn}

si∈ds,i=1,2,...,n

其中,si为序列中的一个符号,配置文件内容序列共有n项符号,ds是符号字典。

具体的,步骤s2具体为:

s201、采用lstm层构造神经网络模型,定义神经网络模型的输入向量和输出向量;

s202、根据步骤s201定义的神经网络模型的输入向量和输出向量建立训练集,训练神经网络,使用交叉熵损失函数对神经网络进行优化,然后估计fpga配置文件中各项符号的概率。

进一步的,步骤s201中,神经网络模型接收的一个输入向量为:

xi={si-1,si-2,...,si-k}

神经网络模型输出一个si的条件概率分布q(si|si-1,...,si-k)为:

q(si|si-1,...,si-k)={q1,q2,...,qm}

其中,si为序列中的一个符号,qj是符号si为其符号字典ds中第j项数值的概率,j=1,2,...,m,m是ds的大小。

更进一步的,神经网络模型包括两层lstm层和一层全连接层,两层lstm层各有128个神经元;全连接层有2个神经元;全连接层的激活函数为softmax。

进一步的,步骤s202中,定义fpga配置文件中各项符号的概率为:q(si),遍历配置文件sn序列的每一项数据,判断是否为前k项数据,若为前k项数据,则使用统一概率分布,具体为:

其中,m为符号字典ds大小,i=1,2,3,…,k。,对si进行算术编码压缩;当i>k时,调用之前定义的神经网络模型,以当前数据si的前k项数据(si-k,si-k+1,...,si-1)作为神经网络模型的输入数据,得到si的估计概率分布q(si)。

更进一步的,交叉熵损失函数为:根据信息论,使用分布q编码分布p时,平均编码长度为:

h(p,q)=-∑p(x)log(q(x))

交叉熵损失函数在训练样本数量趋于无穷时,具体为:

其中,p(x)是分布p的概率密度函数,q(x)是分布q的概率密度函数。

具体的,步骤s3中,算术编码压缩过程为:

遍历配置文件sn序列的每一项数据,判断是否为前k项数据,若为前k项数据,使用统一概率分布,当i>k时,调用定义的神经网络模型,以当前数据si的前k项数据si-k,si-k+1,...,si-1作为神经网络模型的输入数据,得到si的估计概率分布q(si),使用估计概率分布对si进行算术编码压缩;循环上述操作,直到配置文件结束;将最终的算术编码结果作为fpga配置文件的压缩结果。

具体的,统一概率分布如下:

其中,m为符号字典ds大小,i=1,2,3,…,k,对si进行算术编码压缩。

具体的,步骤s4中,解压缩过程为:

从最高位开始,循环遍历压缩后数据的每一位,判断是否为前k项数据,若为前k项数据,则使用统一概率分布,当i>k时,调用定义的神经网络,以当前位数据的前k项数据作为神经网络的输入数据,得到当前位数据的估计概率分布q(si),使用估计概率分布q(si)对si进行算术编码解压缩;循环上述操作,直到配置文件结束;将最终的算术编码解压缩结果作为原fpga配置文件。

与现有技术相比,本发明至少具有以下有益效果:

本发明一种基于神经网络模型的fpga配置文件算术压缩与解压方法,将fpga配置文件的序列文件采用算术编码进行压缩;并且使用lstm神经网络作为预测各符号的概率,提高了算术编码中使用的符号概率的准确度,从而提高压缩率。

进一步的,本发明将fpga配置文件定义为序列文件,我们将任意符号在其前k项数据确定下的条件概率分布作为算术编码过程中该符号的概率。提高了预测概率的准确度,降低了编码长度,从而提高了压缩率。

进一步的,本发明以神经网络预测各符号的概率,相比静态和一些自适应的算术编码而言,能够提高预测概率的准确度。

进一步的,使用lstm神经网络的目的在于,对于序列数据,lstm可以考虑到前面的输入内容对当前输入内容的影响,更适用于序列数据。采用该种网络结构的目的在于能够得到更好的预测结果。

进一步的,估计准确的fpga配置文件中各项符号的概率,是得到优的算术编码结果的前提。

进一步的,采用算术编码的目的在于,其是信源编码的一种,也是一种最优编码。最优编码是指从理论上来讲,若信源符号及其符号概率确定,采用算术编码的平均编码长度渐进于平均符号熵,即趋近于理论最优压缩率。

进一步的,解压缩的目的在于,能够使配置文件内容无损还原,供目标芯片上电后加载运行,完成相应的电路功能。

综上所述,本发明使用神经网络模型进行配置文件序列数据的概率估计,并使用该估计结果对fpga配置文件进行压缩及解压的方法,解决了fpga配置过程耗时过长问题。

下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

附图说明

图1为lstm层构造的神经网络模型图;

图2为本发明压缩流程图;

图3为本发明解压缩流程图。

具体实施方式

本发明一种基于神经网络模型的fpga配置文件算术压缩与解压方法,包括以下步骤:

采用算术编码的fpga配置文件压缩策略;

算术编码是信源编码的一种,它是一种最优编码;最优编码是指从理论上来讲,若信源符号及其符号概率确定,采用算术编码的平均编码长度渐进于平均符号熵,即趋近于理论最优压缩率;但是,fpga配置文件中的数据内容是不可预知的,且数据与其前后的数据存在关联性,不能被视为一个无记忆信源。

简单地将数据中各符号的频率认为是各符号的概率,且利用其进行算术压缩并不能达到最优压缩率;根据信息论,采取分布q对分布p进行编码,其平均编码长度与采取分布p对分布p进行的最优编码相比会增加,具体用相对熵d(p||q)表示,含义为分布q对分布p进行编码,与采取分布p对分布p进行的最优编码之间的差异,具体为:

其中,p(x)是分布p的概率密度函数,q(x)是分布q的概率密度函数。

因此,若使用算术编码对配置文件进行压缩,能否精确的估计配置文件中各个符号项的概率直接影响到算术编码的性能。

s1、定义fpga配置文件的内容序列

fpga配置文件为二进制文件,包含若干由0,1组成的二进制码流,其中最重要的部分是对需要被配置fpga芯片上所有可用资源的描述,其生成过程为:

在fpga程序开发过程中,计算机辅助设计工具,如:ise,vivado等使用编码规则,采用“指令+数据”的方式,将芯片可用资源按照其在片上所处位置,顺序依次转换为二进制流,保存于配置文件中,传送至目标fpga片上flash,待上电开机后加载该文件,按照其提供的信息,依次将芯片内资源进行配置,从而实现相关应用。

由上述可知,配置文件中对芯片资源描述的部分是序列数据;而且由于fpga布局布线的要求,在空间位置上临近的资源会被共同用来实现一个器件或者模块,因此每个描述资源的符号的出现概率与其附近的符号有关。

因此,定义配置文件内容序列如下:

sn={s1,s2,...,sn}

si∈ds,i=1,2,...,n

其中,si为序列中的一个符号,配置文件内容序列共有n项符号,ds是符号字典。

由于序列中符号的出现概率与其之前的符号有关,因此将任意符号在其前k项数据确定下的条件概率分布作为算术编码过程中该符号的概率;即:符号si,i=1,2,...,n的条件概率分布为q(si|si-1,...,si-k)。

s2、采用神经网络模型估计fpga配置文件中各项符号概率;

s201、定义神经网络模型的输入输出;

对于符号si,i=k+1,k+2,...,n,神经网络模型接受一个输入向量为:

xi={si-1,si-2,...,si-k}

即第i个符号之前的k个符号。

神经网络模型输出一个si的条件概率分布q(si|si-1,...,si-k)为:

q(si|si-1,...,si-k)={q1,q2,...,qm}

其中,qj是符号si为其符号字典ds中第j项数值的概率,j=1,2,...,m,m是ds的大小。

s202、训练神经网络学习所需模式;

神经网络训练需要一个训练集,训练集中包含一一对应的输入向量和输出向量,具体为:

第i项输入向量定义为xi;第i项输出向量定义为符号序列中第i个符号的独热编码为:

yi={0,0,...,1,0,...,0}

其中,yi共有m个分量。

对于任意分量j,当且仅当符号si与ds中第j项相同时取1,其余分量为0。

神经网络的损失函数使用交叉熵损失函数根据信息论,使用分布q编码分布p时,平均编码长度为:

h(p,q)=-∑p(x)log(q(x))

其中,p(x)是分布p的概率密度函数,q(x)是分布q的概率密度函数。

交叉熵损失函数在训练样本数量足够大时,具体为:

因此,使用交叉熵损失函数进行神经网络优化可以降低压缩文件大小。

定义fpga配置文件中各项符号的概率为:q(si),具体获取方法为:遍历配置文件sn序列的每一项数据,判断是否为前k项数据,若为前k项数据,则使用统一概率分布

其中m为符号字典ds大小,i=1,2,3,…,k。,对si进行算术编码压缩。当i>k时,调用之前定义的神经网络模型,以当前数据si的前k项数据(si-k,si-k+1,...,si-1)作为神经网络模型的输入数据,得到si的估计概率分布q(si)。

s3、使用神经网络对fpga配置文件进行算术编码压缩;

请参阅图2,算术编码压缩过程为:

遍历配置文件sn序列的每一项数据,判断是否为前k项数据,若为前k项数据,则使用统一概率分布,当i>k时,调用之前定义的神经网络模型,以当前数据si的前k项数据(si-k,si-k+1,...,si-1)作为神经网络模型的输入数据,得到si的估计概率分布q(si),使用该估计概率分布对si进行算术编码压缩;循环上述操作,直到配置文件结束;最终的算术编码结果为fpga配置文件的压缩结果。

统一概率分布如下:

其中,m为符号字典ds大小,i=1,2,3,…,k,对si进行算术编码压缩。

s4、对步骤s3的fpga配置文件进行解压缩策略;

请参阅图3,压缩后序列数据,在传输到fpga云服务器之后,由设置在服务器管理节点的专用解压缩单元进行解压缩操作,具体的解压缩过程为:

从最高位开始,循环遍历压缩后数据的每一位,判断是否为前k项数据,若为前k项数据,则使用统一概率分布,当i>k时,调用之前定义的神经网络,以当前位数据的前k项数据作为神经网络的输入数据,得到当前位数据的估计概率分布q(si),使用该估计概率分布对si进行算术编码解压缩;循环上述操作,直到配置文件结束;最终的算术编码解压缩结果为原fpga配置文件。

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中的描述和所示的本发明实施例的组件可以通过各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例

以德国埃尔朗根-纽伦堡大学计算机科学系的标准测试集中使用xilinxvirtex-v开发板实现的v5_crossbar.bit测试数据为例,该配置文件8179byte,具体为:

s1、采用算术编码的fpga配置文件压缩策略,将符号定义为比特(bit),因此,ds={0,1},sn即为配置文件的二进制码流,k设定为64;

s2、采用神经网络模型估计fpga配置文件中各项符号概率,由于符号的取值与之前的符号取值有相关性,因此采取lstm层来构造神经网络模型。模型由2层lstm层和一层全连接层构成,模型结构如图1所示,其中,lstm层1和lstm层2各有128个神经元;全连接层有2个神经元;全连接层激活函数为softmax;神经网络模型通过adam优化器进行优化;

s3、遍历配置文件sn序列的每一项数据,判断是否为前k项数据,若为前k项数据,则使用统一概率分布,当i>k时,调用之前定义的神经网络模型,以当前数据si的前k项数据(si-k,si-k+1,...,si-1)作为神经网络模型的输入数据,得到si的估计概率分布q(si),使用该估计概率分布对si进行算术编码压缩;循环上述操作,直到配置文件结束;最终的算术编码结果为fpga配置文件的压缩结果;

s4、从最高位开始,循环遍历压缩后数据的每一位,判断是否为前k项数据,若为前k项数据,则使用统一概率分布,当i>k时,调用之前定义的神经网络,以当前位数据的前k项数据作为神经网络的输入数据,得到当前位数据的估计概率分布q(si),使用该估计概率分布对si进行算术编码解压缩;循环上述操作,直到配置文件结束;最终的算术编码解压缩结果为原fpga配置文件;

统一概率分布如下:

其中,m为符号字典ds大小,i=1,2,3,…,k,对si进行算术编码解压缩;因为符号定义为比特,所以m=2,定义k=64。所以对于sn的前64项数据,使用统一概率分布如下:

q(si)=0.5

其中i=1,2,3,…,64。

使用本发明的压缩方法,设置k=64,压缩后配置文件大小为3672byte,压缩率为44.89%。

综上所述,本发明一种基于神经网络模型的fpga配置文件算术压缩与解压方法,针对fpga配置文件过于庞大,一次配置所需耗时较高问题,本发明提出了使用神经网络模型进行配置文件序列数据的概率估计,并使用该估计结果对fpga配置文件进行压缩及解压的方法,解决了fpga配置过程耗时过长问题,有效减少所需传输配置文件大小,进而节省了配置开销,提高了芯片利用。

以上内容仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明权利要求书的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1