神经网络编译器:构建神经网络与芯片沟通的桥梁
导读
与通用处理器不同,在神经网络芯片的开发模型通常面临一些硬件的限制,例如输入输出数据和权重参数的精度有限,计算规模的限制以及非线性函数的类型的限制。本文引入了一个神经网络编译器,将训练好的、没有约束的的NN模型转换为满足给定硬件约束的等效网络,可以将NN模型的开发与具体硬件解耦合。同时,我们提出了多种技术来使该编译流程能够适应于不同种类的NN芯片,并且编译流程在极端硬件约束下也是可靠的。
本文总字数1416,阅读约5分钟。
作者简介
季宇,计算机科学与技术系15级博士生,师从张悠慧教授,研究方向为类脑计算与体系结构。
1.主要问题
为了弥合NN模型开发的灵活性需求和NN芯片的精简、高性能需求之间的差异,我们可以将整个系统栈通过软件编程模型和硬件执行模型分层。其中,将软件编程模型转换为近似等效的硬件执行模型,主要遵循以下几个步骤:
[图片来源:参考文献]
图1 转化流程图,分为图重构和图微调两个步骤,图微调包含了三个子步骤来解决不同类型的硬件约束,其中权重微调又包含了三个阶段来适应不同类型的权重约束。
以下是转换的一个例子:
图2 转化实例 [图片来源:参考文献]
构建计算图,如图2(a)所示。基于输入的NN信息构建G =(V,E),NN信息包括训练后的参数、网络拓扑、顶点信息和训练数据。此外,还可以获得深度学习框架支持的操作集F。
图重构,如图2(b)。它构造了一个中间CG,Gˆ =(Vˆ,Eˆ)。相应的操作集Fˆ包含所有类似核心算子(乘加与非线性激活)的操作。这些操作与核心算子具有类似的形式,或者可以由核心算子轻松实现,但不包含这些硬件约束。
图微调,如图2(c)所示。我们进一步将Gˆ转换为G。每个顶点vˆ ∈Vˆ以Gˆ的拓扑顺序遍历,并在G中形成对应的顶点。该过程还包含如下子步骤:数据重编码、完全展开、权重微调。其中数据重编码可以通过自编码器以增大模型规模来提高模型冗余,从而保障在极端硬件约束下的准确率。
2.实验结果
我们测试了不同硬件约束下该方法的效果,其精确度如表1所示:
表1 各种神经网络模型参数[图片来源:参考文献]
2.1精度与微调粒度
权重微调可以以不同的粒度进行,通过实验探索准确性和微调粒度之间的关系,我们发现:逐层微调即可有效解决误差累积的问题。
2.2准确性与资源消耗
我们通过实验评估了数据重编码的效果,下图分别列示具有不同输入输出与权重转换前后的精度。结果表明,在极端约束下,该数据重编码策略可有效提高转换精度。
图3 不同转换策略下的精度比较 [图片来源:参考文献]
2.3权重编码方法的影响
我们评估了权重调整算法以及三种权重编码策略,下图结果显示了权重调整可以在以下三种情况下很好地设置权重参数:随着权重精度的提高(未引入任何其他约束),所有这些参数都可以达到上限精度。
图4 不同权重编码策略下的精确度和权重比较
[图片来源:参考文献]
接着,进一步给出了权重调整步骤的每个阶段效果(权重精度为2位,没有任何其他限制),如下表所示:
表2 权重调整效果
[图片来源:参考文献]
3.主要结论
我们提出了一种针对NN芯片的编译器解决方案,该方案可以将训练好的NN模型转换为满足硬件约束的等效模型,并提出了多种技术来减少转换误差和提高处理速度。评估表明,该转换方法非常有效,引入的误差可以忽略不计,编译转换耗费的时间也重新训练时间要快。
参考文献
【参考文献】
[1] Ji, Yu et al. “Bridge the Gap between Neural Networks and Neuromorphic Hardware with a Neural Network Compiler.” Proceedings of the Twenty-Third International Conference on Architectural Support for Programming Languages and Operating Systems (2018): n. pag.
文稿|季 宇
排版|于亿航
编辑|寇方铖 张宇轩
审核|张可人