论文部分内容阅读
近十年来,基于神经网络的深度学习技术将图像分类、语音识别和目标检测等技术的准确率提高到了实用的水平。众多的科技巨头和初创公司都卷入其中,努力挖掘各种可能的应用落地场景。深度学习技术已经走进并开始影响人们的生活。移动终端、嵌入式系统、单片机以及各种AI加速器都是深度学习应用落地的重要硬件平台,不同平台通常有不同的功能和特性,要在不同类型的设备上都获得最佳性能非常困难,因为需要基于硬件对模型与运算核心同时进行优化才能充分发挥硬件的性能。所以在现阶段为各种计算平台和加速器研发配套的软件工具来实现模型的高性能部署是深度学习领域的一个工作重点,缺乏软件工具硬件就无法发挥其最大能效,也难以得到推广。本文以神经网络模型在低端嵌入式平台部署的挑战以及针对深度学习算法的定制硬件对软件工具的需求为研究出发点,对深度学习模型的优化部署进行了研究,并以本课题组的CNN加速器为目标设备设计并实现了一个深度学习编译器。实现了将需要较复杂解析过程的深度学习模型计算映射到底层硬件的功能。本文的主要研究工作包括以下几点:(1)研究卷积神经网络从顶层模型到硬件体系结构的端到端优化部署,和深度学习模型在低端微控制器部署的困难与挑战,提出适用于本课题组的集成了CNN加速器的片上系统的深度学习编译器结构。编译器选择开放神经网络交换格式ONNX作为输入格式,并基于ONNX IR设计适合于编译器实现的具有足够表示能力同时又相对简单的中间表示,编译器以该中间表示为载体进行模型优化和变换,并最终将模型所描述的前向推理计算输出为等价的C函数。通过利用C语言良好的移植性与工具链的成熟性,可以简化深度学习模型在低端设备的部署。(2)研究神经网络模型的量化方法,量化是目前最广泛使用的模型压缩手段,同时也是重要的模型加速手段,本文根据目标硬件资源的特点提出对应的模型量化方案,并将模型量化的全过程内置到编译流程中,进一步简化了模型部署操作。(3)设计并实现了基于CNN加速器的编译器后端,提出与体系结构相关的计算管理、内存管理以及代码生成方案,研究CNN加速器的卷积计算原理及其限制,提出基于CNN加速器的卷积实现方法。通过测试表明,本文实现的编译器能够对预训练神经网络模型进行优化、量化以及基于目标体系结构的代码生成。深度学习与AI芯片都是目前的热门研究领域,作为连接深度学习算法及其实现的深度学习编译器也得到了越来越多的关注。通过了解深度学习编译器,不仅可以加深对深度学习知识的理解,还对进一步学习其他成熟的编译器框架有一定作用。