System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及到计算机,具体是指一种于fpga的yolov3卷积神经网络虚拟化的设计方法。
技术介绍
1、1、cpu、asic、gpu在ai应用中的优势与劣势
2、cpu作为通用处理器具有极高的灵活性和易用性,例如arm处理器,可以通过c/c++等高级语言编程,能够完成各种复杂操作和兼容各类场景,部署和运维成本较低;相较于asic和fpga而言功耗较高,在性能方面cpu并非针对计算加速而设计,因此其性能低于gpu、asic和fpga。
3、因此,针对ai算法的加速设计比较主流的研究方向有gpu(图形处理器,graphicsprocessing unit)加速、asic(专用集成电路,application specific integratedcircuit)加速和fpga(现场可编程门阵列,field programmable gate array)加速等方案。
4、asic专用芯片的优势在于吞吐量大、延迟小和功耗低三方面,但它并不适合深度学习,因为深度学习计算任务是灵活多变且需要不断迭代改进的,而asic研发和流片费用高,周期长,最重要的是逻辑不能动态调整。
5、由于高并行性、高主频、高带宽的特点,gpu的优势在于大量数据的并行计算和浮点计算能力。gpu加速深度学习算法已经得到广泛应用,且取得了显著成果,对深度学习算法而言,gpu在加速性能方面是一种很好的选择。但gpu的功耗非常高,不仅高出cpu功耗许多,更是fpga功耗的几十倍甚至上百倍,高功耗要求使其只能用于高性能计算集群
6、2、fpga在ai应用中的优势
7、现场可编程门阵列英语缩写为fpga,可将不同的硬件电路设计反复下载到fpga中,从而实现不同的硬件设计和功能。fpga甚至还可以在使用现场动态改变电路结构和功能,因此,灵活性强是fpga的最重要的特色优势之一。
8、当前,ai技术应用到了社会生产、生活的方方面面,ai+fpga的组合也而受到越来越多的关注,原因如下:首先,ai应用对硬件平台算力提出了越来越高的要求,同时需要硬件平台兼顾高能效、低延时、高吞吐、可扩展性等一系列需求,而fpga满足上面所有需求;其次,ai算法应用于各类不同场景中,对训练和推理任务的需求也不尽相同,而具有“灵活性强”特点的fpga能够较好满足这一需求;最后,由于ai算法处于不断迭代、层出不穷的状态,必然会导致ai应用需要频繁升级,而fpga的“现场可编程”特性,能够很好契合这一需求。
9、因此,fpga非常适合这种要求高性能、低能耗、低延时、灵活性强、小批量、不断迭代的ai应用硬件实现平台。
10、3、传统fpga实现过程
11、在传统的fpga开发模型中,使用者通常使用硬件描述语言(hdl)对应用场景进行建模,并构建业务逻辑,然后通过特定的fpga开发工具,将硬件模型直接映射到fpga上,并有eda工具自动完成布局布线和时序优化等操作,最终生成可以在fpga上运行的映像文件。使用这种方法直接对fpga进行开发,好处是能够任意使用需要的硬件逻辑资源,如fpga、上的lut查找表、ram、dsp,以及各类i/o模块和接口,如pcie和以太网控制器等。同时,用户可以在硬件层面对设计记性有针对性的调整和优化,所以一般会得到较好的系统性能。
12、4、fpga应用于ai的难点
13、虽然fpga对于ai应用具有诸多优势,但使用fpga实现ai应用并不容易,主要难点如下:
14、难点1:与cpu、gpu相比,fpga的开发难度较高。这是因为对开发者的技能要求较高,需要开发者十分了解fpga的结构与内部资源,掌握硬件描述语言对设计进行建模,还需要熟练使用目标fpga器件的开发、仿真与调试工具。特别是在实际工程项目中,实际掌握上述技能往往需要数年的积累。陡峭的学习曲线导致软件工程师无法独立完成对fpga的ai应用开发。
15、难点2:基于深度学习的ai算法一般都是针对gpu的运算方式搭建的,但fpga硬件平台与gpu在运算方式和底层结构都相距甚远,这导致在fpga上实现深度学习网络极为困难。在计算机中,各种深度学习框架为算法的编写提供了便利,例如tensorflow、pytorch等框架。例如,yolov3算法在上述深度学习框架中仅需要千余行代码即可实现,但是在fpga中没有可以提供支持的深度学习框架,需要编写数万行代码才可以初步实现算法功能,而且卷积核数和通道数的不确定对于fpga实现而言也是一种挑战。理论上每个卷积层都需要对fpga进行重新编程,但这意味着巨大的工作量。在网络结构参数随着深度变化的情况下,如何能够高效地实现算法的fpga硬件化,也是一个亟待解决的问题。
技术实现思路
1、本专利技术要解决的是以上技术问题,提供一种基于fpga的yolov3卷积神经网络虚拟化的设计方法。
2、为解决上述技术问题,本专利技术提供的技术方案为:基于fpga的yolov3卷积神经网络虚拟化的设计方法,包括ai应用层和硬件层,以及设置在两者之间的抽象层,所述的ai应用层主要为yolov3算法模型,所述的抽象层由各类神经网络算子模块组成,所述的硬件层由fpga、cpu、gpu硬件资源组成;基于fpga的卷积神经网络算法实现的方法具体包括以下步骤:
3、步骤1:在tensorflow、pytorch、paddlepaddle等深度学习框架下,基于gpu或cpu对yolov3算法进行网络结构和参数调优、定型;
4、步骤2:对经过初步调优定型的yolov3算法的神经网络模型进行深入而细致的拆解和分析,通过计算,明确yolov3算法运行所必需的“神经网络模型计算量”和“神经网络模型访问带宽”;
5、同时,精准找出其中的“关键计算瓶颈”,进行严谨而准确的ai应用加速效果推算;
6、步骤3:用“神经网络算子模块”式设计方法,将约占总计算量90%的卷积计算算子在fpga中实现,神经网络层间组合、调度工作由cpu等完成;
7、步骤4:分析卷积神经网络结构,选定使用频率较高的“卷积conv+批次归一化bn+激活relu”组合cbl模块进行fpga虚拟化设计,并以其为主要基本单元实现yolov3大部分计算工作;
8、步骤5:利用fpga中dsp、lut资源,构建矩阵卷积算子、bn算子、激活函数leakyrelu算子模块,其中矩阵卷积算子和bn算子主要由若干dsp组成,利用dsp中加法器和乘法器实现矩阵乘法运算和批次归一化的硬件加速,leakyrelu算子主要由查找表lut实现激活运算的硬件加速,由上述算子依次串行组合成虚拟化的cbl模块,以本文档来自技高网...
【技术保护点】
1.基于FPGA的YOLOv3卷积神经网络虚拟化的设计方法,包括AI应用层和硬件层,以及设置在两者之间的抽象层,所述的AI应用层主要为YOLOv3算法模型,所述的抽象层由各类神经网络算子模块组成,所述的硬件层由FPGA、CPU、GPU硬件资源组成,其特征在于:
2.根据权利要求1所述的基于FPGA的YOLOv3卷积神经网络虚拟化的设计方法,其特征在于:所述的网格结构的调优包括调整网络的层数、每层之间的连接方式、卷积核大小、卷积核个数、通道数。
3.根据权利要求1所述的基于FPGA的YOLOv3卷积神经网络虚拟化的设计方法,其特征在于:所述的“神经网络算子模块”式设计方法通过合理分配任务,让FPGA专注于处理计算量大、适合并行处理的卷积计算等算子,而将需要灵活调度和复杂逻辑处理的神经网络层间组合、调度工作交给CPU。
4.根据权利要求1所述的基于FPGA的YOLOv3卷积神经网络虚拟化的设计方法,其特征在于:所述的对CBL模块的虚拟化设计能有效提高YOLOv3算法在FPGA上的设计实现效率。
5.根据权利要求1所述的基于FPGA的YO
6.根据权利要求1所述的基于FPGA的YOLOv3卷积神经网络虚拟化的设计方法,其特征在于:所述的设计方式适用于其他同样可以利用FPGA中的资源进行硬件加速的算法。
...【技术特征摘要】
1.基于fpga的yolov3卷积神经网络虚拟化的设计方法,包括ai应用层和硬件层,以及设置在两者之间的抽象层,所述的ai应用层主要为yolov3算法模型,所述的抽象层由各类神经网络算子模块组成,所述的硬件层由fpga、cpu、gpu硬件资源组成,其特征在于:
2.根据权利要求1所述的基于fpga的yolov3卷积神经网络虚拟化的设计方法,其特征在于:所述的网格结构的调优包括调整网络的层数、每层之间的连接方式、卷积核大小、卷积核个数、通道数。
3.根据权利要求1所述的基于fpga的yolov3卷积神经网络虚拟化的设计方法,其特征在于:所述的“神经网络算子模块”式设计方法通过合理分配任务,让fpga专注于处理计算量大、适合并行处理的卷...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。