Google AI与Deepmind强强联合,推出新工具加速神经网络稀疏化进程

简介: 优化神经网络的一个方法是稀疏化,然而,受到支持不足和工具缺乏的限制,该技术在生产中的使用仍然受限。为了解决这一问题,近日,Google联合Deepmind开发出了在TensorFlow Lite和XNNPACK ML中的新特性和工具库。

微信图片_20220112175532.png


神经网络具有的推理功能,使得许许多多实时应用变为可能——比如姿态估计和背景模糊。这些应用通常拥有低延迟的特点,并且还具有隐私意识。 


通过使用像TensorFlow Lite这样的ML推理框架和XNNPACK ML加速库,工程师得以在模型大小、推理速度和预测质量之间找到一个最佳点来优化他们的模型,以便在各种设备上运行。 优化模型的一种方法是使用稀疏神经网络,这些网络的很大一部分权值都设置为零:

微信图片_20220112175534.png

一般来说,这是一种理想的特性,因为它不仅通过压缩减少了模型的大小,而且可以跳过相当一部分的乘加操作,从而加速推理。 


此外,我们还可以增加模型中的参数数量,然后简化它,以匹配原始模型的质量,这仍然受益于加速推理。 


然而,该技术在生产中的使用仍然有限,这主要是由于缺乏简化流行卷积架构的工具,此外,对在设备上运行这些操作的支持也是不足的。 


针对此问题,近日,Google宣布了一系列XNNPACK加速库和TensorFlow Lite上的新特性: 这些特性旨在帮助研究人员开发自己的稀疏设备模型,可以支持稀疏网络的有效推断,还包括了教会开发人员如何稀疏化神经网络的指导。 


这些新的工具是与DeepMind合作开发出来的,它们提供了新一代的实时感知体验,包括MediaPipe中的手部跟踪和谷歌Meet中的背景功能,并将推理速度从1.2倍提高到2.4倍,同时将模型尺寸减少一半。

 微信图片_20220112175536.png


图:针对Google Meet背景功能,稠密(左)和稀疏(右)模型处理时间的对比。 


下文主要提供了稀疏神经网络的技术部分的概述,并对研究人员如何创建自己的稀疏模型问题提供了一些启发。 主要包括:


  • 将一个神经网络稀疏化
  • 训练稀疏神经网络
  • 实际应用

 

将一个神经网络稀疏化


许多现代深度学习架构,如MobileNet和EfficientNetLite,主要是由具有小卷积核的深度卷积和从输入图像线性组合特征的1x1卷积组成。 


虽然这样的架构有许多潜在的精简目标,包括在许多网络开始时经常出现的完整2D卷积或者是深度卷积,但从推断时间来看,1x1卷积的运算是最昂贵的,因为它们占总计算量的65%以上,因此,它们是稀疏化的最佳目标。 


微信图片_20220112175538.png


图:现代移动架构中1x1卷积的推断时间对比 


在现代的推理设备中(如XNNPACK),深度学习模型中1x1卷积的实现以及其他操作都依赖于HWC张量布局,其中张量的维数对应于输入图像的高度、宽度和通道(如红色、绿色或蓝色)。 


这个张量配置,允许推理引擎并行地处理对应于每个空间位置(即图像的每个像素)的通道。 


然而,张量的这种排序并不适合于稀疏推理,因为它将通道设置为张量的最内层维,并使访问它的计算成本更高。 


而Google对XNNPACK的更新,就使它具有了检测模型是否稀疏的能力: 过程将从标准的密集推理模式切换到稀疏推理模式,在稀疏推理模式中,XNNPACK使用CHW (channel, height, width)的张量布局。 


张量的这种重新排序,可以允许加速实现稀疏的1x1卷积核,原因有两个: 


1)在单个条件检查之后,当对应的通道权值为零时,可以跳过张量的整个空间切片,而不是逐像素测试; 


2)当信道权值为非零时,可以通过将相邻的像素加载到同一存储单元来提高计算效率。 这使使用者能够同时处理多个像素,同时也可以在多个线程中并行执行每个操作。


 当至少80%的权重为零时,这些变化将会一起导致1.8倍到2.3倍的加速。 


为了避免每次操作后在稀疏推理最优的CHW张量布局和标准的HWC张量布局之间来回转换,XNNPACK提供了几种在CHW布局中CNN算子的高效实现。


训练稀疏神经网络指南


为了创建稀疏神经网络,这个版本包含的指南建议从稠密版本开始,然后在训练过程中逐渐将其权重的一部分设置为零——这个过程叫做剪枝。 


在许多可用的修剪技术中,Google的开发者建议使用量级修剪(可在TF模型优化工具包中获得)或最近引入的RigL方法。 


只要适当增加训练时间,这两种方法都可以在不降低深度学习模型质量的前提下,成功地简化深度学习模型。 得到的稀疏模型可以有效地存储在压缩格式中,与稠密模型相比,压缩格式的大小减少了1 / 2。 


稀疏网络的质量受几个超参数的影响,包括训练时间、学习速率和剪枝计划。


TF Pruning API提供了一个如何选择这些模型的优秀示例,以及一些训练这类模型的技巧。 官方的建议是运行超参数搜索来找到应用程序的最佳位置。


 实际应用 Google的开发者证明了将分类任务、密集分割(例如背景模糊)和回归问题(mediapihands)稀疏化都是可能的,这为用户提供了切实的好处。 


例如,在Google Meet中,稀疏化将模型的推断时间降低了30%,这为更多的用户提供了访问更高质量模型的机会。


 微信图片_20220112175540.png


这里描述的稀疏性方法最适合基于反向残余块(Inverted Residual Blocks)的架构,如MobileNetV2、MobileNetV3和EfficientNetLite。 


此外,网络的稀疏程度影响着推理的速度和质量—— 从一个固定容量的稠密网络开始,Google研究者发现,即使在30%的稀疏度下,性能也会有适度的提高。


随着稀疏度的增加,模型的质量仍然相对接近密度基线,直到达到70%的稀疏度,超过70%的精度会有更明显的下降。 


然而,开发者可以通过将基本网络的大小增加20%来补偿稀疏度为70%时的精度降低,从而在不降低模型质量的情况下缩短推理时间。


 运行稀疏化模型不需要做进一步的更改,因为XNNPACK可以识别并自动启用稀疏推理。


 微信图片_20220112175541.png


最后,Google表示,他们将继续扩展XNNPACK,对CHW布局的操作提供更广泛的支持,并探索如何将其与其他优化技术(如量化)结合起来。


小结


稀疏化是一种简单而强大的改进神经网络CPU推理的技术。它允许工程师运行更大的模型,而不会引起显著的性能或尺寸开销,这也为研究提供了一个有前途的新方向。


 感兴趣的小伙伴可以去Github自行探索:https://github.com/tensorflow/tensorflow/blob/master/tensorflow/lite/delegates/xnnpack/README.md#sparse-inference


 参考资料:https://ai.googleblog.com/2021/03/accelerating-neural-networks-on-mobile.html

相关文章
|
3月前
|
安全 Java 数据处理
Python网络编程基础(Socket编程)多线程/多进程服务器编程
【4月更文挑战第11天】在网络编程中,随着客户端数量的增加,服务器的处理能力成为了一个重要的考量因素。为了处理多个客户端的并发请求,我们通常需要采用多线程或多进程的方式。在本章中,我们将探讨多线程/多进程服务器编程的概念,并通过一个多线程服务器的示例来演示其实现。
|
18天前
|
机器学习/深度学习 人工智能 TensorFlow
神经网络深度剖析:Python带你潜入AI大脑,揭秘智能背后的秘密神经元
【8月更文挑战第1天】在当今科技飞速发展的时代,AI已成为日常生活中不可或缺的一部分。神经网络作为AI的核心,通过模拟人脑中的神经元连接方式处理复杂数据模式。利用Python及其强大的库TensorFlow,我们可以轻松构建神经网络模型。示例代码展示了如何建立一个含有两层隐藏层的简单神经网络,用于分类任务。神经网络通过反向传播算法不断优化权重和偏置,从而提高预测准确性。随着技术的进步,神经网络正变得越来越深、越来越复杂,能够应对更加艰巨的挑战,推动着AI领域向前发展。
25 2
|
3天前
|
人工智能 PyTorch 算法框架/工具
Xinference实战指南:全面解析LLM大模型部署流程,携手Dify打造高效AI应用实践案例,加速AI项目落地进程
【8月更文挑战第6天】Xinference实战指南:全面解析LLM大模型部署流程,携手Dify打造高效AI应用实践案例,加速AI项目落地进程
Xinference实战指南:全面解析LLM大模型部署流程,携手Dify打造高效AI应用实践案例,加速AI项目落地进程
|
16天前
|
机器学习/深度学习 人工智能 TensorFlow
神经网络入门到精通:Python带你搭建AI思维,解锁机器学习的无限可能
【8月更文挑战第3天】踏入人工智能领域,神经网络是开启智慧之门的钥匙。它不仅是一种技术,更是模仿人脑学习与推理的思维方式。从理解神经元间的连接到构建神经网络的基本概念,再到使用Python与TensorFlow搭建手写数字识别模型,每一步都揭示着机器学习的奥秘。随着深入学习,我们将探索更高级的主题,比如深度神经网络、卷积神经网络和循环神经网络,以及如何优化模型性能。掌握背后的数学原理,将帮助我们设计更高效准确的模型。在这个旅程中,Python将是我们的得力助手,引领我们探索AI世界的无限可能。
23 2
|
16天前
|
机器学习/深度学习 人工智能 TensorFlow
神经网络不再是黑魔法!Python带你一步步拆解,让AI学习看得见
【8月更文挑战第3天】神经网络,曾被视为难以触及的黑魔法,现已在Python的助力下变得平易近人。以TensorFlow或PyTorch为“魔法杖”,仅需几行Python代码即可构建强大的AI模型。从零开始,我们将教导AI识别手写数字,利用经典的MNIST数据集。通过数据加载、预处理至模型训练与评估,每个步骤都如精心编排的舞蹈般清晰可见。随着训练深入,AI逐渐学会辨认每个数字,其学习过程直观展现。这不仅揭示了神经网络的奥秘,更证明了任何人都能借助Python创造AI奇迹,共同探索未来的无限可能。
23 2
|
17天前
|
机器学习/深度学习 人工智能 TensorFlow
|
28天前
|
缓存 安全 Web App开发
Chrome插件实现问题之网络进程接收到URL请求后会如何解决
Chrome插件实现问题之网络进程接收到URL请求后会如何解决
|
2月前
|
人工智能 自然语言处理 机器人
[AI Google] 新的生成媒体模型和工具,专为创作者设计和构建
探索谷歌最新的生成媒体模型:用于高分辨率视频生成的 Veo 和用于卓越文本生成图像能力的 Imagen 3。还可以了解使用 Music AI Sandbox 创作的新演示录音。
[AI Google] 新的生成媒体模型和工具,专为创作者设计和构建
|
2月前
|
人工智能 安全 开发者
基于AI和全球化进程的权衡
基于AI和全球化进程的权衡
21 0
|
3月前
|
机器学习/深度学习 人工智能 算法
【AI 初识】什么是卷积神经网络 (CNN)?
【5月更文挑战第2天】【AI 初识】什么是卷积神经网络 (CNN)?

热门文章

最新文章