BNext

又搬来了大神器啊  来自德国HassoPlattner计算机系统工程研究院的NianhuiGuo和HaojinYang等研究者提出了BNext模型,成为第一个在ImageNet数据集上top1分类准确率突破80%的BNN。

两年前,依靠早期 BNN 工作 XNOR-Net 起家的 XNOR.AI 被苹果公司收购,大家曾畅想过这种低功耗、高效能的二值神经网络技术会不会即将开启广阔的应用前景。

然而,过去的两年时间,我们很难从对技术严格保密的苹果公司获得关于 BNN 技术应用的更多信息,而不论是学界和业界也未出现其他特别亮眼的应用案例。另一方面,随着终端设备数量的暴涨,边缘 AI 应用和市场正在迅速增长: 预计到 2030 年将产生 500 到 1250 亿台边缘设备,边缘计算市场将暴涨到 600 亿美元规模。这其中有几个目前热门的应用领域:AIoT、元宇宙和机器人终端设备。相关业界正在加速发力技术落地,与此同时 AI 能力已经嵌入到以上领域的诸多核心技术环节中,如 AI 技术在三维重建、视频压缩以及机器人实时感知场景中的广泛应用。在这样的背景下,业界对基于边缘的高能效、低功耗 AI 技术、软件工具以及硬件加速的需求变的日益迫切。

目前,制约 BNN 应用的瓶颈主要有两方面:首先,无法有效缩小和传统 32-bit 深度学习模型的精度差距;第二则是缺乏在不同硬件上的高性能算法实现。机器学习论文上的加速比通常无法体现在你正在使用的 GPU 或 CPU 上。第二个原因的产生可能正是来自于第一个原因,BNN 无法达到令人满意的精度,因此无法吸引来自系统和硬件加速、优化领域的从业者的广泛关注。而机器学习算法社区通常无法自己开发高性能的硬件代码。因此,想要同时获得高精度和强加速效果,BNN 应用或加速器无疑需要来自这两个不同领域的开发者进行协作。

BNN 为什么对于计算和内存高效

举个例子,Meta 推荐系统模型 DLRM 使用 32-bit 浮点数来储存权重和激活参数,它的模型大小约为 2.2GB。而一个少量精度下降 (<4%) 的二值版本模型的大小仅为 67.5MB,由此可见二值神经网络可以节省 32 倍的模型大小。这对于储存受限的边缘设备来说具备了非常强的优势。此外,BNN 也非常适合应用在分布式 AI 场景中,例如联邦学习常常对模型权重进行传输和聚合操作,因此模型大小和带宽受限往往成为整个系统的瓶颈。常用的手段是通过增加模型本地优化迭代次数来换取权重传输频率的降低,用这种折中的方法来提升整体效率,如著名的谷歌 FedAvg 算法。但增大本地计算量的策略对端侧用户并不友好,这里,如果采用 BNN 就可以很轻易的降低几十倍的数据传输量。

BNN 的第二个显著的优势是计算方式极度高效。它只用 1bit 也就是两种 state 来表示变量。这意味着所有运算只靠位运算就能完成,借助与门、异或门等运算,可以替代传统乘加运算。位运算是电路中的基础单元,熟悉电路设计的同学应该明白,有效减小乘加计算单元的面积以及减少片外访存是降低功耗的最有效手段,而 BNN 从内存和计算两个方面都具备得天独厚的优势,WRPN[1]展示了在定制化 FPGA 和 ASIC 上,BNN 对比全精度可获得 1000 倍的功耗节省。更近期的工作 BoolNet [2]展示了一种 BNN 结构设计可以几乎不使用浮点运算并保持纯 binary 的信息流,它在 ASIC 仿真中获得极佳的功耗、精度权衡。

第一个精度上 80% 的 BNN 是什么样子的?

来自德国 Hasso Plattner 计算机系统工程研究院的 Nianhui Guo 和 Haojin Yang 等研究者提出了 BNext 模型,成为第一个在 ImageNet 数据集上 top1 分类准确率突破 80% 的 BNN:

图 1 基于 ImageNet 的 SOTA BNN 性能对比 

论文地址:https://arxiv.org/pdf/2211.12933.pdf

作者首先基于 Loss Landscape 可视化的形式深入对比了当前主流 BNN 模型同 32-bit 模型在优化友好度方面的巨大差异 (图 2),提出 BNN 的粗糙 Loss Landscape 是阻碍当前研究社区进一步探索 BNN 性能边界的的主要原因之一。基于这一假设,作者尝试利用新颖的结构设计对 BNN 模型优化友好度进行提升,通过构造具备更平滑 Loss Landscape 的二值神经网络架构以降低对高精度 BNN 模型的优化难度。具体而言,作者强调模型二值化大幅度限制了可用于前向传播的特征模式,促使二值卷积仅能在有限的特征空间进行信息提取与处理,而这种受限前馈传播模式带来的优化困难可以通过两个层面的结构设计得到有效缓解:(1) 构造灵活的邻接卷积特征校准模块以提高模型对二值表征的适应性;(2) 探索高效的旁路结构以缓解前馈传播中由于特征二值化带来的信息瓶颈问题。

图 2 针对流行 BNN 架构的 Loss Landscape 可视化对比(2D 等高线视角) 

基于上述分析,作者提出了 BNext,首个在 ImageNe 图像分类任务达到 > 80% 准确率的二值神经网络架构,具体的网络架构设计如图 4 所示。作者首先设计了基于 Info-Recoupling (Info-RCP) 模块的基础二值处理单元。针对邻接卷积间的信息瓶颈问题,通过引入额外的 Batch Normalization 层与 PReLU 层完成对二值卷积输出分布的初步校准设计。接着作者构造了基于逆向残差结构与 Squeeze-And-Expand 分支结构的二次动态分布校准设计。如图 3 所示,相比传统的 Real2Binary 校准结构,额外的逆向残差结构充分考虑了二值单元输入与输出间的特征差距,避免了完全基于输入信息的次优分布校准。这种双阶段的动态分布校准可以有效降低后续邻接二值卷积层的特征提取难度。

图 3 卷积模块设计对比图

其次,作者提出结合 Element-wise Attention (ELM-Attention) 的增强二值 Basic Block 模块。作者通过堆叠多个 Info-RCP 模块完成 Basic Block 的基础搭建,并对每个 Info-RCP 模块引入额外的 Batch Normalization 和连续的残差连接以进一步缓解不同 Info-RCP 模块间的信息瓶颈问题。基于旁路结构对二值模型优化影响的分析, 作者提出使用 Element-wise 矩阵乘法分支对每个 Basic Block 的首个 3x3 Info-RCP 模块输出进行分布校准。额外的空域注意力加权机制可以帮助 Basic Block 以更灵活的机制进行前向信息融合与分发,改善模型 Loss Landscape 平滑度。如图 2.e 和图 2.f 所示,所提出的模块设计可以显著改善模型 Loss Landscape 平滑度。 

图 4 BNext 架构设计。"Processor 代表 Info-RCP 模块,"BN "代表 Batch Normalization 层,"C "表示模型基本宽度,"N "和"M " 表示模型不同阶段的深度比例参数。 

Table 1 BNext 系列。“Q”表示输入层、SEbranch以及输出层量化设置。

作者将以上结构设计同流行的MoboleNetv1基准模型结合,并通过改变模型深度与宽度的比例系数构建了四种不同复杂度的 BNext 模型系列 (Table 1):BNex-Tiny,BNext-Small,BNext-Middle,BNext-Large。

由于相对粗糙的 Loss Landscape,当前二值模型优化普遍依赖于 knowledge distillation 等方法提供的更精细监督信息,以此摆脱广泛存在的次优收敛。BNext作者首次考虑了优化过程中teache模型与二值student模型预测分布巨大差距可能带来的影响,,指出单纯基于模型精度进行的 teacher 选择会带来反直觉的 student 过拟合结果。为解决这一问题,作者提出了 knowledge-complexity (KC) 作为新的 teacher-selection 度量标准,同时考虑 teacher 模型的输出软标签有效性与 teacher 模型参数复杂度之间的关联性。

如图 5 所示,基于 knowledge complexity,作者对流行全精度模型系列如 ResNet、EfficientNet、ConvNext 进行了复杂度度量与排序,结合 BNext-T 作为 student 模型初步验证了该度量标准的有效性,并基于排序结果用于后续实验中的 knowledge distillation 模型选择。 

图 5 反直觉的过拟合效应和不同教师选择下的知识复杂性影响

在此基础上,论文作者进一步考虑了强 teacher 优化过程中由于早期预测分布差距造成的优化问题,提出 Diversified Consecutive KD。如下所示,作者通过强弱 teachers 组合的知识集成方法对优化过程中的目标函数进行调制。在此基础上,进一步引入 knowledge-boosting 策略,利用多个预定义候选 teachers 在训练过程中对弱 teacher 进行均匀切换,将组合知识复杂度按照从弱到强的顺序进行课程式引导,降低预测分布差异性带来的优化干扰。 

在优化技巧方面,BNext 作者充分考虑了现代高精度模型优化中数据增强可能带来的增益,并提供了首个针对现有流行数据增强策略在二值模型优化中可能带来影响的分析结果,实验结果表明,现有数据增强方法并不完全适用于二值模型优化,这为后续研究中特定于二值模型优化的数据增强策略设计提供了思路。

基于所提出架构设计与优化方法,作者在大规模图像分类任务 ImageNet-1k 进行方法验证。实验结果如图 6 所示。图 6 基于 ImageNet-1k 的 SOTA BNN 方法比较。 

图 6 基于 ImageNet-1k 的 SOTA BNN 方法比较。        whaosoft aiot http://143ai.com  

相比于现有方法,BNext-L 在 ImageNet-1k 上首次将二值模型的性能边界推动至 80.57%,对大多数现有方法实现了 10%+ 的精度超越。相比于来自 Google 的 PokeBNN, BNext-M 在相近参数量前提下要高出 0.7%,作者同时强调,PokeBNN 的优化依赖于更高的计算资源,如高达 8192 的 Bacth Size 以及 720 个 Epoch 的 TPU 计算优化,而 BNext-L 仅仅以常规 Batch Size 512 迭代了 512 个 Epoch,这反映了 BNext 结构设计与优化方法的有效性。在基于相同基准模型的比较中,BNext-T 与 BNext-18 都有着大幅度的精度提升。在同全精度模型如 RegNetY-4G (80.0%)等的对比中,BNext-L 在展现相匹配的视觉表征学习能力同时,仅仅使用了有限的参数空间与计算复杂度,这为在边缘端部署基于二值模型特征提取器的下游视觉任务模型提供了丰富想象空间。

What next?

BNext 作者在论文中提到的,他们和合作者们正积极在 GPU 硬件上实现并验证这个高精度 BNN 架构的运行效率,未来计划扩展到其他更广泛的硬件平台上。然而在编者看来,让社区对 BNN 重拾信心,被更多系统和硬件领域的极客关注到,也许这个工作更重要的意义在于重塑了 BNN 应用潜力的想象空间。从长远来看,随着越来越多的应用从以云为中心的计算范式向去中心化的边缘计算迁移,未来海量的边缘设备需要更加高效的 AI 技术、软件框架和硬件计算平台。而目前最主流的 AI 模型和计算架构都不是为边缘场景设计、优化的。因此,在找到边缘 AI 的答案之前,相信 BNN 始终都会是一个充满技术挑战又蕴涵巨大潜力的重要选项。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1381356.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

HybridCLR 热更新介绍

HybridClr介绍 C# -> HybridCLR 热更新介绍 以下讲简单阐述下个人理解的Hclr的相关知识&#xff0c;以及在使用中遇到的坑点. 在使用HybridCLR 前的一些基本知识储备 为了方便下文的更好的理解,建议大家先简单过一下下文的一些名称和一些简单的知识点&#xff1a; Comm…

tkinter文件对话框

文章目录 文件对话框文件对象文件类型其他参数 tkinter系列&#xff1a; GUI初步&#x1f48e;布局&#x1f48e;绑定变量&#x1f48e;绑定事件&#x1f48e;消息框扫雷小游戏&#x1f48e;强行表白神器 文件对话框 filedialog提供了多种与文件交互相关的对话框&#xff0c…

bluestore

BlueStore BlueStore 架构及原理分析 Ceph 底层存储引擎经过了数次变迁&#xff0c;目前最常用的是 BlueStore&#xff0c;在 Jewel 版本中引入&#xff0c;用来取代 FileStore。与 FileStore 相比&#xff0c;Bluesore 越过本地文件系统&#xff0c;直接操控裸盘设备&#x…

Bootstrap系列之颜色(Colors)

文章の目录 1、字体颜色2、背景颜色3、背景渐变写在最后 通过少量的颜色类来传达颜色的含义。还包括对具有悬停状态的链接样式的支持。 处理专一性 有时由于另一个选择器的专一性而不能应用上下文类。在某些情况下&#xff0c;一个足够的解决方法是用类将元素内容包装在<div…

Bluethooth

阅读时长10分钟 蓝牙技术是一种近距离无线连接技术。能在包括移动电话、PDA、无线耳机、笔记本电脑、相关外设等众多设备之间进行无线信息交换。 历史&#xff1a;蓝牙技术是世界著名的 5 家大公司一爱立信(Ericsson)、诺基亚(Nokia)、东芝(Toshiba)、国际商用机器公司(IBM)和英…

NewBlue Titler Pro 7不能预览 预览黑屏

问题描述 最近在剪辑视频 使用“NewBlue Titler Pro 7 Ultimate 7.4.201109”和谐版增加字幕时&#xff0c;出现字幕刚开始可以预览&#xff0c;动几下鼠标预览窗口卡死&#xff0c;随后黑屏。 解决方式 折腾之后发现用的版本不对&#xff0c;更换为下面的版本后可以正常使用…

华为od统一考试B卷【九宫格按键输入法】Python 实现

所有题目均有五种语言实现。C实现目录、C++ 实现目录、Python实现目录、Java实现目录、JavaScript实现目录 题目 九宫格按键输入,判断输出,有英文和数字两个模式,默认是数字模式,数字模式直接输出数字,英文模式连续按同一个按键会依次出现这个按键上的字母,如果输入”/…

华为od统一考试B卷【九宫格按键输入法】Java 实现

所有题目均有五种语言实现。C实现目录、C++ 实现目录、Python实现目录、Java实现目录、JavaScript实现目录 题目 九宫格按键输入,判断输出,有英文和数字两个模式,默认是数字模式,数字模式直接输出数字,英文模式连续按同一个按键会依次出现这个按键上的字母,如果输入”/…

2022华为机试真题 C语言 实现【九宫格按键输入法】

九宫格按键输入,判断输出,有英文和数字两个模式,默认是数字模式,数字模式直接输出数字,英文模式连续按同一个按键会依次出现这个按键上的字母,如果输入”/”或者其他字符,则循环中断。 要求输入一串按键,输出屏幕显示。 输入描述: 输入范围为数字 0~9 和字符’#’、…

谷歌键盘切换26键与九宫格中文输入法

今天不小心把手输入法改成了九宫格&#xff0c;很不习惯&#xff0c;在设置里面找了很久也没找到&#xff0c;百度也没有找到答案。 最终偶然发现解决方案。 长按【中】出现如下界面&#xff0c;即可切换26键与九宫格。

Python之九宫格输入

文章目录 前言一、问题描述二、问题解决 前言 九宫格输入是一款手机平台的必备利器。假设有九宫格输入法键盘布局如下&#xff1a;‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬…

九宫格按键输入c++

假设有九宫格输入法键盘布局如下&#xff1a; [ 1,.?! ] [ 2ABC ] [ 3DEF ] [ 4GHI ] [ 5JKL ] [ 6MNO ] [ 7PQRS ] [ 8TUV ] [ 9WXYZ ] [ 0空 ] 注意&#xff1a;中括号[ ]仅为了表示键盘的分隔&#xff0c;不是输入字符。 每个中括号中&#xff0c;位于首位的数字字符即是…

centos7部署openldap开启memberof并接入jumpserver

文章目录 前言1.yum安装openldap2.配置密码3.导入配置4.定义域5.配置memberof6.配置base dn7.安装phpldapadmin管理8.调整httpd的配置9.调整php的配置10.登陆php管理页面11.同步旧ldapsever用户数据(可省略)12.客户端配置13.对接jumpserver 前言 介绍如何在centos7上部署openl…

Unity Shader特效:人物模型动态流动光特效

本文写于2017-6-6&#xff0c;转载请注明 以下为正文 ………………………………………………………………………………………………………………………………………………………… 先上效果图&#xff1a; Shader界面图&#xff1a; 因为特效师的攻击特效做得过为酷炫&#…

python实现两个图片的叠加融合

python通过PIL将两个图片叠加融合 我想到将一个图片去除背景将其放到另一张图片上以此实现融合。 1**. 打开想要融合的图片** file Image.open(6.png) verse 9.png我选取的两个图片 2**. 将附在上面的图片的背景进行透明化** verse transPNG(verse)# 图片背景透明化 …

壁纸网站研究:强大到没朋友的壁纸网站整理(动漫/二次元/宅男/风景/真人)

1、wallhaven 域名&#xff1a;https://wallhaven.cc 介绍&#xff1a;一个强大的壁纸网站&#xff0c;包含人物、动漫、风景&#xff0c;同时有一些老司机内容&#xff0c;需要选择NSFW&#xff0c;但需要登录才能观看&#xff0c;隐藏功能。但是海外网站&#xff0c;国内网…

java 人物头像识别

一、功能描述&#xff1a; 人物头像识别&#xff0c;识别图片中的是否含有人物头像。 二、准备工作&#xff1a; 创建需要识别的图片目录 &#xff0c;如F:/img&#xff0c;链接中files\img中为示例图片。导入所需jar包&#xff0c;见files\jar。新建依赖文件haarcascade_fro…

日常问题——使用Java转将long类型为date类型,日期是1970年

&#x1f61c;作 者&#xff1a;是江迪呀✒️本文关键词&#xff1a;日常BUG、BUG、问题分析☀️每日 一言 &#xff1a;存在错误说明你在进步&#xff01; 一、问题描述 long类型的日期为&#xff1a;1646718195 装换为date类型&#xff1a; Date date new Dat…

google浏览器截取长图

方法一&#xff1a; 首先F12选中手机模式 然后点击右上角 选择capture full size screenshot 或者ctrl shift p 方法二&#xff1a; 按F12打开调试页面&#xff0c;然后按下ctrlshiftp&#xff0c;输入命令Capture full size screenshot&#xff0c;敲回车&#xff0c;浏览…