本文经AI新媒体量子比特(公众号ID:QbitAI)授权转载,转载请联系出处用于转载。短暂的操作后,需要实时模糊背景的视频看起来更流畅:实时对象检测的延迟也更低:这是谷歌专门为移动设备和网络开发的一系列新工具,几乎可以立即使用。在影响AI模型推理准确率的同时,对模型尺寸进行“剪枝”,提高模型推理速度。最好的情况下,AI模型的推理速度可以提升2倍,模型尺寸可以“缩小”一半。你是怎么做到的?“去除”部分网络权重的过程利用了人工智能和机器学习模型的稀疏性。稀疏性是指在神经网络模型中,可以将某些网络的权重设置为0,以加快推理速度。它的实现过程有点像玩积木游戏,只是移除方块。用户需要在保证模型不会“崩溃”的情况下,去掉一些参数(将参数设置为0)。这是因为AI模型在执行推理任务时,往往会涉及到大量的矩阵乘法运算。如果能在不影响推理结果的情况下将矩阵中的某些参数设置为0,则可以大大加快矩阵运算速度,缩短推理时间。目前,许多移动端的轻量级神经网络架构,如MobileNet和EfficientNetLite,主要由depthwiseseparableconvolutions和1×1convolutions组成。其中,1×1卷积消耗的推理时间最多,占总计算量的65%以上。在MobileNet中,1×1卷积的计算甚至占模型总推理时间的85%。因此,1×1卷积层成为稀疏化的最优选择。TensofFlowLite可用之前,这种利用稀疏性来加速推理的方法并没有被广泛使用。一个原因是神经网络本身很难解释,稀疏化的过程也很难解释,以至于缺乏稀疏工具。另一个原因是相应的设备,比如手机,缺乏对稀疏操作的支持。现在,谷歌发布了一系列新的TensorFlowLite稀疏工具和专门针对移动设备和Web的XNNPACK浮点加速库。使用这些稀疏化工具,神经网络可以变得更加高效,用户可以快速上手。其中,XNNPACK库包含一种可以检测模型是否稀疏的方法,而TFLite工具包包含基于振幅的剪枝或RigL等方法来“收缩”模型。整体的稀疏化过程如下:首先从原始模型开始训练,在这个过程中逐渐将网络中的一些权重设置为0,也就是对模型进行“剪枝”。然后通过适当增加训练时间,提高模型的准确率(不会比剪枝前的模型差很多)。最后,获得的稀疏AI推理模型可以以压缩格式高效存储,比原始模型更小。这个工具支持一系列的感知算法模型,包括MediaPipe的手部追踪模型:以及GoogleMeet中的背景替换模型:当然,除了谷歌自己的AI模型,这些稀疏化工具也可以用在自己设计的AI模型中.具体作用是什么?推理速度快了2倍。下图是原始模型和稀疏模型的对比。其中,蓝色和黄色分别对应原始模型每秒32帧和每秒16帧的模型大小,红色和绿色分别对应稀疏模型的大小。从图中可以看出,“修剪过”的AI模型无论是“手部追踪”还是“背景替换”,体积都缩小了一半以上。此外,随着稀疏程度的增加,推理时间也几乎呈线性下降。但也需要注意的是,模型不能盲目稀疏,因为当模型的稀疏度高于70%时,模型的准确率会明显下降。因此,模型的实际稀疏效果仍然会与理论有所不同。在实际应用中,GoogleMeet的推理时间只减少了30%,但已经很不错了。还在担心自己的AI模型太大,在移动设备上效果不佳的小伙伴们可以试试“缩小”自己的模型~项目地址:https://github.com/tensorflow/tensorflow/blob/master/tensorflow/精简版/代表/xnnpack/README.md#sparse-inference
