E-Lab “压缩”一下,效率加倍
     阅读次数:    发表时间:2021-05-17

E-Lab “压缩”一下,效率加倍

揭秘ECARX NLU的神经网络模型压缩方法

自然语言(Natural Language),是指自然地随文化演化的语言,比如汉语、英语等各种语言。自然语言处理,是人工智能中最为困难的问题之一。

当下的智能座舱人机语音交互技术,往往使用人工智能神经网络来进行自然语言的理解和学习。

汽车在数字化智能化的过程中,不可避免地使用了很多神经网络模型,例如自动驾驶中的道路识别、物体识别,车内语音交互场景下的用户意图识别、命名实体识别等。

当话太多的时候,神经网络也会学不过来。

神经网络模型也有其缺点:语料质量要求高,数量大;语料规模大的情况下,训练时间长。

汽车属于端侧,车内的神经网络模型推理属于边缘计算,其对计算资源比较敏感。神经网络参数规模越来越大,内存占用成本也越来越高,巨大的参数也不利于优化计算。例如cache不能全部容纳所有参数,导致频繁切换带来运行效率降低;NPU/GPU运算场景中,所有参数不能一次性导入NPU/GPU并常驻硬件,频繁IO也会带来性能衰减。特别是在边缘计算中资源受限的应用,小尺寸参数显得越来越重要。

强力“压缩机”登场,四面围攻

ECARX语音团队创新性地对神经网络进行“压缩”,用四种方式来提升学习及训练的效率。

1、模型剪枝

神经网络的剪枝是指在权重中找出对结果影响比较小的权重或者卷积核,然后去除掉这样的权重连接或者卷积核。

例如全连接层或卷积层中,每一个连接有一个weight代表该连接的权重,按照权重weight的绝对值大小排序,把最小的K个连接的weight直接设置成0,然后微调网络。把权重较小的设置成0后,参数变得很稀疏,一般使用新的数据结构来保存参数以达到节省存储空间的目的,在计算时也使用稀疏矩阵计算函数来提高计算速度。假设要剪枝的是整个卷积核,可去掉某个卷积核,重新训练评估对结果的影响。如果对精度的影响在可接受范围之内,则可以剪掉该卷积核。

2、知识蒸馏

知识蒸馏(Knowledge Distillation)核心思想是通过迁移知识,从而通过训练好的大模型得到更加适合推理的小模型。

这是一种将大模型学习到的大规模参数,压缩进规模小的模型,使得神经网络更小、参数更少、运算更快,而推理准确度可以匹敌大模型结果的方法。模型越大且训练集足够多,能训练生成的网络精度越高,所以BERT神经网络能在很多语言类任务中取得好的成绩。但是带来的问题是网络参数大、计算开销大,训练时间长。后来出现了新方法,用大网络大训练集训练模型,得到很好的准确度,这个大网络被称为teacher网络。然后用小网络在小训练数据集上学习大网络的输出,也能达到接近大网络的准确度,但是参数规模要小很多,这个小网络叫student网络。知识蒸馏的过程,就是student网络学习teacher网络的过程。

3、量化

量化就是把浮点数转换成位长比较小的定点数(整数类型),例如8位整型、16位整型等。

下面是量化计算公式:

r = S * (q - Z)

q = round(r/S + Z)

神经网络的参数一般是浮点数类型,单精度浮点或者双精度浮点。单精度浮点对应的位长是4个字节32位,其数值范围为-3.4E38~3.4E38。双精度浮点对应的位长是8个字节64位,数值范围为-1.79E+308 ~ +1.79E+308。

神经网络的参数和每一层的输入输出数据,并不是均匀的分布在从最小值到最大值的范围内。大部分情况是数据分布在一个很小的范围之内,要么聚类成几个值,这就给参数压缩提供了机会。

4、网络融合

网络融合的方法是,将完成不同任务的2种网络融合起来,主干部分共享,最后的任务部分分开,这样可以起到减少参数规模,加快推理速度的效果。

在应用中,通常由一个网络完成一个任务,如果有多个任务就需要多个独立的神经网络。这既增加了参数规模,又增加了推理结算时间。以自然语言处理中的意图识别与命名实体识别为例,通常意图识别是一个单独的神经网络,命名实体识别又是另一个网络。如下图所示,独立的意图识别和命名实体识别网络。

“压缩”方法掌握牢,让语义理解效率加倍

开发者说:今天分享的四种神经网络压缩方法,有的是训练中压缩,然后微调,有的是训练后压缩,压缩后不微调,有的会带来精度损失。实际应用中可以单独使用某一种,也可以同时使用多种,关键是评估准确度损失,对开发难度作综合考虑。

开发者伙伴们:

ECARX提出的四种神经网络模型压缩方法,你都get了吗?

实践过程中,你还有什么好想法,尽情在评论区互动交流吧!

 
上一篇:车载DSP:让「听」不止于听
下一篇:智能交互,就用新姿势
 
 
登录
您输入的账户或密码有误
手机号
请输入密码