掌桥专利:专业的专利平台
掌桥专利
首页

一种面向智能无损压缩算法的异构计算加速方法

文献发布时间:2024-01-17 01:26:37


一种面向智能无损压缩算法的异构计算加速方法

技术领域

本发明属于异构计算与可计算存储领域,涉及一种面向智能无损压缩算法的异构计算加速方法,具体涉及一种采用GPU、CPU和FPGA联合加速基于神经网络预测模型与哈夫曼编码压缩序列图像算法的方法。

背景技术

压缩方法按照信息有无损失可以分为有损压缩和无损压缩。有损压缩中不相关或者不重要的数据被直接忽略,解压后得到的数据与原始数据不同。而无损压缩中,每个细节都会被保存,只有统计冗余被消除,即可以完整重构原始数据。近年来,人工智能得到了飞速发展。在数据无损压缩领域,深度学习也受到了越来越多的关注,由于softmax层与熵编码天然可结合,已有研究人员将其作为压缩的一部分与传统编码方法结合,用于探索文本压缩比的优化。

高能同步辐射光源是我国面向多学科综合研究平台类重大科技基础设施。其中,一期建设的实验线站预计每天会产生数百TB的原始实验数据,海量数据对存储和传输带来极大压力。因此,数据压缩作为一种减少数据量的方法可以用于缓解该问题。实验线站产生的数据中占比最高的是硬X成像实验线站产生的图像数据,这些数据因其科学潜力,因此需对其中包含的信息无损保存。在该场景下结合专用与通用压缩算法压缩率较好的智能无损压缩可以获得较好的应用。

目前智能压缩算法的局限性在于压缩效率较低,无法应用于实时压缩。其中既有算法串行导致计算资源利用率低,又有编码消耗CPU计算资源过大,限制在有限计算资源下整体的可并行性。因此需要一种系统性加速方案提高智能压缩算法的压缩效率以应用于实际生产环境。

目前的压缩算法加速方案通常是对针对整体算法中某一环节进行优化,如对网络结构进行剪枝加速神经网络计算,或者对编码部分进行硬件加速。

智能压缩算法作为一个整体,应该研究其各个环节中的计算瓶颈,分别加速神经网络推理与编码难以达成对整个压缩系统的优化。目前基于CNN神经网络的智能无损压缩算法依然存在压缩耗时过长的问题。

发明内容

针对现有技术中存在的问题,本发明的目的在于提供一种面向智能无损压缩算法的异构计算加速方法。本发明测试了智能压缩算法中的各个环节耗时,分别对其进行加速优化并对系统整体调优,以实现加速。

本发明提出了对于智能无损压缩算法的分解方法、调用异构计算资源时采用的流水线结构以及对序列图像采用的分组压缩解压缩方法。

本发明的技术方案为:

一种面向智能无损压缩算法的异构计算加速方法,其特征在于将智能无损压缩算法分解为三部分:神经网络预测推理、预测值纠偏和哈夫曼编码,其步骤包括:

1)对待压缩图像进行分组,将每组图像分区量化后并行输入到GPU中,GPU利用神经网络对输入的每一图像进行预测推理,得到对应图像的像素值概率矩阵并发送给CPU;

2)所述CPU对每一所述像素值概率矩阵进行预测值纠偏计算,得到对应图像的纠偏值矩阵作为待编码数据;然后将每组图像的待编码数据存入到缓存区;所述缓冲区设置多个读取接口;

3)FPGA通过多个读取接口从所述缓存区并行读取待编码数据进行哈夫曼编码,得到对应图像的无损压缩数据。

进一步的,对待压缩图像进行分组,每组包含N个待压缩图像,N为不小于4的偶数;所述CPU每次将N/2个待编码数据存入到缓存区,所述缓冲区设置N/2个读取接口。

进一步的,N=4。

进一步的,GPU利用神经网络对输入的每一图像进行预测推理的方法为:所述神经网络络对输入的量化图像进行预测推理,构建以预测中概率最高的像素值的真实值为中心的正态概率分布,将输入的量化图像中各部分像素值区分开,然后根据所述正态概率分布得到对应图像的像素值概率矩阵。

进一步的,当压缩第k张图像时,向GPU发送该第k张图像之前的三张图像,向CPU发送该第k张图像;GPU根据该第k张图像之前的三张图像预测得到该第k张图像的预测图k',即该第k张图像的像素值概率矩阵,并发送给CPU,CPU根据该预测图k'与该第k张图像生成纠偏图,即该第k张图像对应的纠偏值矩阵。

进一步的,FPGA对待编码数据进行哈夫曼编码的方法为:首先对纠偏值矩阵内所有像素值进行统计并排序,然后根据排序后的结果构建哈夫曼树,频率越大的像素值对应的码值越短,最终输出结果为编码后的数据与哈夫曼编码对应的字典。

本发明的优点如下:

1)充分利用异构计算资源。仅依靠一种计算资源如GPU或CPU在处理大规模数据时常常会有较长的等待时间。而一整个算法往往涉及到多种独立的计算过程,将算法分解,各个部分独立计算,可以增加算法的并行度。对这些过程分别使用不同的元件进行计算也可以充分利用原本闲置的计算资源。

2)通过流水线结构缩小计算资源空闲等待时间。算法分解后的计算过程可以互相独立计算,因此以流水线结构调度异构计算资源完成整体计算可以有效减少空闲等待时间。原始图片经由GPU完成神经网络预测后的结果可以直接交由CPU进行纠偏计算,得到的待编码数据需经过一层缓存,在FPGA中完成编码过程。由于FPGA计算编码时间较短,前面的原始图片压缩计算过程以四个原始图片为一组并行压缩,然后进行预编码和纠偏,得到待编码数据,将四张图片的待编码数据存入缓冲区;编码计算分两个接口不断从缓存区读取待编码数据进行编码,FPGA读取数据与CPU写待编码数据形成流水线结构,减少了FPGA等待计算的时间。由于FPGA编码计算与前面神经网络预测和纠偏值计算间计算耗时有差异,FPGA编码较前面计算过程更快,因此在这里缩小了通道,分两个接口从缓冲区读取数据相当于FPGA的计算是两张图片并行,这样做完四张图片的编码耗时与前面计算过程的耗时相当,既减少了FPGA里LUT的消耗,又保证了整体的计算没有等待时间。

3)分组解压缩提高解压算法的可并行性。由于神经网络的预测过程是按照图片顺序推理的,因此从整个图像序列的角度来看,应该是串行处理的。压缩过程由于已知所有的原始图片,因此可以多头并行压缩。而解压过程中,由于最终压缩结果仅保留最后三张原始图片,因此必须逐张解压缩。这个过程对计算资源的利用率是较低的。一般而言一组图片序列存在近千张原始图片,而经过测试在有限的计算资源下,可并行的计算也是有限的,因此以多保留一部分原始图片为代价,实现解压过程的多头并发,可以显著提高计算资源利用率并降低整体的解压缩时间。

附图说明

图1为本发明智能无损压缩方法示意图。

图2为本发明加速部分流程图。

图3为待编码数据生成过程图。

图4为FPGA Huffman编码过程图。

图5为分组压缩解压示意图。

具体实施方式

下面结合附图对本发明进行进一步详细描述,所举实例只用于解释本发明,并非用于限定本发明的范围。

本发明以一种面向同步辐射光智能压缩算法为例,提出一种分步分解,充分利用异构计算资源加速算法的方法。本发明重点调研了智能压缩算法运行时各部分的计算耗时情况,整体流程如图1所示,其中②、③部分进行优化加速,具体技术方案如下:原始图像数据首先按照序列顺序两两差分,去除图像间的线性相关。得到的结果通过分区量化集中数据,并缩短数据位宽。分区量化后的图像数据用于神经网络训练与预测。前三张图片作为训练集,第四张图片作为验证集,进行模型训练。后续的模型预测采用三张推理一张的方式,获得图片的预测矩阵,根据该矩阵与原始图像的真实值,计算概率距离。概率距离算法是一种基于像素值的概率排序的编码算法,它主要功能是保证压缩前后数据信息的无损,通过记录真实值对应的概率在预测结果的顺序排序中的序号,表示真实值与预测最大值之间的距离。概率距离计算之后再分区量化集中数据,将结果进行Huffman编码。最终存储的数据包括:分区量化的保留数据,前三张原始图片,神经网络模型,最终编码结果,huffman编码表。

由于智能压缩算法计算量较大,且数据处理可并行性高,因此采用异构计算并行加速算法。如图2所示,本发明将智能压缩算法分解为三部分:神经网络预测推理部分,预测值纠偏部分,哈夫曼编码部分。针对神经网络的训练与推理采用GPU进行加速,得到的结果矩阵经CPU进行一次预测值纠偏处理后传入FPGA,FPGA进行哈夫曼编码完成压缩。由于各图像间计算互不影响,且实验应用以套图为单位进行压缩,因此采用各图片并行计算的方式加速压缩。分区量化是为了缩小图片像素值所占位宽,由于原始图片像素值分布稀疏,通过截断映射的方式将原本2字节位宽的像素值映射到12bit位宽;后续计算原始数据均为12bit位宽的图像。本发明首先对所有图像进行分区量化缩短像素值位宽,然后对量化后的图片进行预测与编码压缩。

对于单张图片来说,压缩算法的三部分顺序执行,即不同图片的压缩计算完全独立,但是可以多张图片并行计算,且不同计算步骤可以流水线结构进行。例如:t时刻,GPU计算第三批数据,同时将第二批计算结果发送给CPU,CPU计算第二批数据并将第一批纠偏值计算结果传递给FPGA,FPGA计算第一批数据。

对于神经网络模型的优化:神经网络络对输入的量化图像进行预测推理,构建以预测中概率最高的像素值的真实值为中心的正态概率分布,将输入的量化图像中各部分像素值区分开,然后根据所述正态概率分布得到对应图像的像素值概率矩阵。本发明通过修改模型的输出值,直接输出其预测中概率最高的像素值。同时为保证精度,对损失函数进行优化,将原损失函数为真实值对应的像素值概率为1,其他像素值为0,以此计算。而为保证无损压缩,实际需存储的值为预测值的纠偏值,即真实值与预测值的差值,因此应鼓励模型尽可能将预测值落在真实值附近。由此,构建以真实值为中心的正态概率分布,将各部分像素值区分开,以保证压缩效果。原始压缩算法输出值为每个像素点的概率矩阵,假设图片大小为X*Y,像素值字典数为P,则原始压缩算法中GPU向CPU发送的数据量为X*Y*P,优化后减小了此处传输数据量,每个像素点输出其预测值,此时发送的数据量减少为X*Y。

对于GPU与CPU间数据传输的优化:模型最终输出值为其预测的下一张图像,为保证无损压缩,需将真实图像与预测图像做差,如果将该过程置于GPU上计算,需要将真实图像数据传输到GPU,再将差值图传输回CPU进行转存。而将该计算置于CPU则可以减少一次向GPU的数据传输。即当压缩第k张图片时,向GPU发送k-3,k-2,k-1图片,向CPU发送k图片;GPU预测得到k'图发送给CPU,CPU计算k'-k得到纠偏图。经过测试,该差值计算耗时远小于向GPU传输数据的I/O消耗,因此使用CPU协助处理数据可以加速算法。

对于并行化处理:由于采用GPU进行推理过程的计算,因此在以图片为单位并行时需考虑GPU缓存大小的限制。经过测试每张图片的模型推理部分需消耗3074MiB显存,以TeslaV100卡为例,其提供的最大显存为32510MiB。因此,在图片层次计算并行数有限。同时我们注意到,相对于GPU显存的消耗,CPU计算资源的消耗更少,因此可以将CPU上的计算再次并行加速,以充分利用CPU计算资源。由于该计算过程同样在各个像素点间独立进行,在CPU上对图像分块,对每个图像块并行计算差值。设总图片为M*N,量化后的图片集分为M批,每批图片为连续的N张图。实际计算时,第0,N,...,(M-1)*N张图片并行计算。神经网络预测使用待压缩图片i的前3张图片计算,即i-3,i-2,i-1,纠偏值计算使用神经网络输出的预测图像i'与待压缩图片i进行计算。

对于编码的优化:采用哈夫曼编码对差值图进行压缩,差值图的数据范围为[-4095,4095]。由于哈夫曼编码过程需要进行数组排序与数据位宽的裁剪,因此采用FPGA实现该过程既可以加速计算又可以节约CPU计算资源,三种异构计算间可以形成流水线提高整体压缩过程的计算效率。编码过程分为统计、排序、赋标志位、输出编码。首先对差值图内所有像素值进行统计并排序。根据排序后的结果构建哈夫曼树,频率越大的像素值对应的码值越短。最终输出结果为编码后的数据与哈夫曼编码对应的字典。

对于解压缩:由于模型采用前三张图片推理后一张图片的形式计算,因此解压缩过程需顺序执行。但由于之前的测试表明,以图片为单位进行并行计算可以有效加速压缩过程。因此在压缩时以牺牲一部分压缩率为代价,保留几组原始图像,从多头出发顺序推理可以显著加速解压过程。解压过程与压缩过程基本一致,哈夫曼编码的解码过程即对照哈夫曼编码表还原映射,得到的还原结果即为压缩图片的纠偏值矩阵,记为i”;解压缩时,根据保留的原始图像进行与压缩过程相同的神经网络预测,得到压缩图像的预测值矩阵i',此时压缩图像的原始图像即为i=i'-i”,至此原始图像还原成功。

尽管为说明目的公开了本发明的具体实施例,其目的在于帮助理解本发明的内容并据以实施,本领域的技术人员可以理解:在不脱离本发明及所附的权利要求的精神和范围内,各种替换、变化和修改都是可能的。因此,本发明不应局限于最佳实施例所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。

技术分类

06120116217459