VEGA:诺亚AutoML高性能开源算法集简介
摘要:VEGA是华为诺亚方舟实验室自研的全流程AutoML算法集合,提供架构搜索、超参优化、数据增强、模型压缩等全流程机器学习自动化基础能力。
本文分享自华为云社区《VEGA:诺亚AutoML高性能开源算法集简介》,作者: kourei。
概述
VEGA是华为诺亚方舟实验室自研的全流程AutoML算法集合,提供架构搜索、超参优化、数据增强、模型压缩等全流程机器学习自动化基础能力。目前集成的算法大多数已经合入了华为 DaVinci 全栈AI解决方案CANN + MindSpore中,一些简单的测试表明相比GPU具备相当大的优势,预计下个版本Vega会提供对 DaVinci 的支持。
作为针对研究人员和算法工程师量身定制的自动机器学习工具,VEGA在2019年12月在华为内源发布,支撑起了诺亚内部多个团队(计算视觉、推荐搜索和AI基础研究)的自动化机器学习算法的研究,在相关的AI顶会上(CVPR/ICCV/ECCV/AAAI/ICLR/NIPS)产出20+算法。以下是本次开源的代表性AutoML算法简介:
自动化网络架构搜索(NAS)
基于硬件约束的高效分类网络搜索方案(CARS)
在不同的应用场景中,计算资源约束条件有所不同,因此对于搜索的结果自然的有着差异化的结果需求。此外,尽管基于进化算法的NAS方法取得了不错的性能,但是每代样本需要重头训练来进行评估,极大影响了搜索效率。本文考虑了现有方法的不足,提出一种基于连续进化的多目标高效神经网络结构搜索方法(CARS)。CARS维护一个最优模型解集,并用解集中的模型来更新超网络中的参数。在每次进化算法产生下一代种群的过程中,网络的参数可以直接从超网络中继承,有效提高了进化效率。CARS一次搜索即可获得一系列不同大小和精度的模型,供用户根据实际应用中的资源约束来挑选相应的模型。相关工作发表在CVPR2020: https://arxiv.org/abs/1909.04977 。
轻量级超分网络结构搜索(ESR-EA)
诺亚提出了一种轻量级超分网络结构搜索算法,从通道、卷积和特征尺度三个角度出发构建高效的超分网络基本模块。该算法以高效模块为基础,以模型的参数量、计算量和模型精度为目标,使用多目标优化进化算法搜索轻量级超分网络结构。该算法可以从通道、卷积和特征尺度三个角度对超分网络的冗余进行全面压缩。实验表明,在同等参数量或者计算量的情况下,该算法搜索到的轻量级超分网络(ESRN)在标准测试集(Set5,Set14,B100,Urban100)上取得了比手工设计的网络结构(CARN等)更好的效果。除此之外,该算法也可以在确保算法精度的前提下降低计算量,满足移动设备的时延和功耗约束。相关论文发表在AAAI 2020: https://www.aaai.org/Papers/AAAI/2020GB/AAAI-SongD.4016.pdf 。
端到端的检测网络架构搜索方案(SM-NAS)
现有的目标检测模型可以被解耦成几个主要部分:骨干(Backbone),特征融合网络(Neck),RPN和以及RCNN头部。每个部分可能有不同的模块与结构设计,如何权衡不同组合的计算成本和精确度是一个重要问题。现有的目标检测 NAS方法(NAS-FPN, DetNas等)仅专注于搜索单个模块的更好设计,如骨干网络或特征融合网络,而忽略了对系统整体的考量。为了解决这个问题,在本文中我们提出了一种两阶段从结构化到模块化的神经网络搜索策略,名为Structural-to-Modular NAS(SM-NAS)。具体而言,结构化阶段进行模型架构的粗搜索,确定针对当前任务的最优模型架构 (如使用单阶段检测器还是双阶段检测器,使用何种类型的backbone等),以及与之匹配的输入图像尺寸大小;模块化搜索阶段则对backbone模块进行细致的结构调优,进一步提高模型性能。。在搜索策略上,我们采用了演化算法,并同时考虑了模型效率与模型性能双重最优,使用non-dominate sorting构建Pareto front,来获得一系列在多目标上同时达到最优的网络结构。此外,我们探索了一种有效的训练策略,使得网络在没有imagenet pretrain的情况下能够达到比有pretrain更快的收敛速度,从而更加快速、准确地评估任意backbone的性能。在COCO数据集上,我们搜索得到的模型在速度与精度上均大幅度领先传统的目标检测架构,例如我们的E2模型比Faster-RCNN速度提高一倍,mAP达到40%(提升1%);我们的E5模型与MaskRCNN的速度相似,mAP能够达到46%(提升6%)。相关工作发表在AAAI2020: https://arxiv.org/abs/1911.09929 。
高效的检测网络骨干架构搜索方案(SP-NAS)
我们使用神经网络结构搜索(NAS)技术自动设计针对特定于任务的主干网络,以弥合分类任务和检测任务之间的差距(domain gap)。常见的深度学习物体检测器通常会使用一个针对ImageNet分类任务设计和训练的骨干网络。现有算法DetNAS将搜索检测主干网络的问题变为预先训练一个权重共享的超级网络,以此来选择最佳的子网络结构。但是,此预先定好的超级网络无法反映所采样子结构的实际性能等级,并且搜索空间很小。我们希望通过NAS算法设计一个灵活且面向任务的检测主干网:提出了一个名为SP-NAS的两阶段搜索算法(串行到并行的搜索)。具体来说,串行搜索阶段旨在通过“交换,扩展,重点火”的搜索算法在特征层次结构中高效找到具有最佳感受野比例和输出通道的串行序列;然后,并行搜索阶段会自动搜索并将几个子结构以及先前生成的主干网络组装到一个更强大的并行结构的主干网络中。我们在多个检测数据集上验证了SP-NAS的效果,搜索得到的架构可达到SOTA结果,即在EuroCityPersons的公开的行人检测排行榜上达到第一名的顶级性能(LAMR:0.042);在准确度和速度方面都优于DetNAS和AutoFPN。相关工作发表在CVPR2020: https://openaccess.thecvf.com/content_CVPR_2020/papers/Jiang_SP-NAS_Serial-to-Parallel_Backbone_Search_for_Object_Detection_CVPR_2020_paper.pdf 。
自动化训练(AutoTrain)
超越谷歌的训练正则化方法(Disout)
为了从给定的数据集中提取重要的特征,深度神经网络通常包含大量可训练的参数。一方面,大量的可训练参数增强了深度网络的性能。另一方面,它们带来了过拟合的问题。为此,基于Dropout的方法在训练阶段会禁用输出特征图中的某些元素,以减少神经元间的共适应。尽管这些方法可以增强所得模型的泛化能力,但是基于是否丢弃元素的Dropout并不是最佳的解。因此,我们研究了与深度神经网络的中间层有关的经验Rademacher复杂度,并提出了一种用于解决上述问题的特征扰动方法(Disout)。在训练时,通过探索泛化误差上界将特征图中随机选择的元素替换为特定值。实验证明,在多个图像数据集,我们提出的特征图扰动方法具有更高的测试准确率。相关工作发表在AAAI 2020: https://arxiv.org/abs/2002.11022 。
利用知识蒸馏抑制自动数据扩增的噪声(KD+AA)
本算法心思想是希望解决自动数据扩增(AA)方法自身的一些劣势。AA是对整个数据集去搜索最佳数据增强策略的,尽管从全局来看AA能够让数据变得更加差异化,让最终模型性能变得更好;但是AA是相对粗糙的,并不是对单张图像做优化的,因此相对而言会有一定的防线。在数据增强强度比较大的时候,容易对某些图像带来语义混淆的问题(即由于过度消去具有判别力的信息而导致图像语义发生变化。这就是我们说的语义混淆。显然在模型训练的时候,我们再拿之前的狐狸标签来做约束指导是不合适。为了解决这个问题,我们使用知识蒸馏(KD)方法,通过一个预训练好的模型来生成软标签,该标签就可以指导经过AA的图像他的标签最好应该是什么。这个算法简单而有效,在与大模型结合后,在ImageNet上取得了当前最优性能85.8%。相关论文发表于ECCV 2020:https://arxiv.org/abs/2003.11342v1 。
自动化数据生成(AutoData)
基于生成模型的低成本图像增强数据获取方案(CylceSR)
在特定的图像增强任务(以超分为例)中,由于很难在现实场景里获取到成对的数据,因此学术界大多采用合成的成对数据进行算法研究,然而通过合成数据获得到的算法模型往往在现实场景中表现并不好,为了解决上述问题,我们提出了一种新颖的算法:该算法以合成低质图像为桥梁,通过无监督图像转换完成合成图像域到真实场景图像域的转换,同时转换后的图像被用于监督训练图像增强网络。该算法足够灵活,可以集成任何无监督转换模型和图像模型。本方法通过联合训练图像转换网络和监督网络,相互协作来实现更好的降质学习和超分性能。所提出的方法在NTIRE 2017和NTIRE 2018的数据集上实现了很好的性能,甚至可以与监督方法相媲美;该方法在NTIRE2020 Real-World Super-Resolution比赛中被AITA-Noah团队采用并在track1中取得IPIPS第一、MOS指标第二的成绩。相关论文发表于CVPR 2020 Workshop on NTIRE: https://openaccess.thecvf.com/content_CVPRW_2020/papers/w31/Chen_Unsupervised_Image_Super-Resolution_With_an_Indirect_Supervised_Path_CVPRW_2020_paper.pdf 。
自动化网络压缩(AutoCompress)
基于进化策略神经网络自动压缩
该技术针对神经网络自动压缩,从压缩模型的识别精度、计算量、存储量、运行速度等多个指标出发,使用多目标优化进化算法,对神经网络进行混合比特量化、稀疏剪枝等压缩,搜索出每一层最优压缩超参数,得到一个包含若干性能优秀的压缩模型的非支配解集,可以满足使用者对不同指标的不同需求。该技术适用于高性能云服务器和弱计算性能的移动设备,对于高性能云服务器可以提供算法精度高且计算和内存消耗在一定范围内的模型,对于移动设备,可以在确保算法精度的前提下降低计算和内存消耗,满足移动设备的时延和功耗约束。相关论文发表在KDD 2018: https://www.kdd.org/kdd2018/accepted-papers/view/towards-evolutionary-compression 。
本次开源发布初步稳定版本,未来不断将最前沿的算法加入其中,增加对新算法和DaVinci的支持。开源地址为: https://github.com/huawei-noah/vega ,请大家试用和反馈。
Vega具备以下优势:
- 高性能Model Zoo: 预置了诺亚大量性能领先的深度学习模型,提供在ImageNet/MSCOCO/NuScenes /NITRE等数据集上的最优性能模型。这些模型代表了诺亚在AutoML研究上的最新研究成果,可以直接使用: https://github.com/huawei-noah/vega/blob/master/docs/en/model_zoo/ 。
- 硬件亲和的模型优化:为了实现硬件的亲和性,Vege定义了Evaluator模块,可以直接部署到设备上进行推理,支持手机、Davinci芯片等多种设备的同时运行。
- Benchmark的复现:提供了benchmark 工具来协助大家复现 Vega 提供的算法。
- 支持深度学习生命周期中的多环节,并基于pipeline编排进行灵活调用:内置了架构搜索、超参优化、损失函数设计、数据扩充、全量训练等组件,每个组件称之为一个Step,可以将多个Step串联起来形式端到端的方案,方便大家试验不同的想法,提高可搜索范围,找到更好的模型。
最后,VEGA提供大量的示例文档,帮助开发者快速上手。完整中英文文档请参考: https://github.com/huawei-noah/vega/tree/master/docs 。
VEGA:诺亚AutoML高性能开源算法集简介的更多相关文章
- SSH工作过程简介和SSH协议算法集简介
SSH简介 SSH是Secure Shell(安全外壳)的简称,是一种在不安全的网络环境中,通过加密机制和认证机制,实现安全的远程访问以及文件传输等业务的网络安全协议. SSH协议采用了典型的客户端/ ...
- 学界 | 华为诺亚方舟实验室提出新型元学习法 Meta-SGD ,在回归与分类任务中表现超群
学界 | 华为诺亚方舟实验室提出新型元学习法 Meta-SGD ,在回归与分类任务中表现超群 机器之心发表于机器之心订阅 499 广告关闭 11.11 智慧上云 云服务器企业新用户优先购,享双11同等 ...
- lvs+keepalived+nginx实现高性能负载均衡集群【转】
转自 lvs+keepalived+nginx实现高性能负载均衡集群 - 青衫lys - 博客园http://www.cnblogs.com/liuyisai/p/5990645.html 一.为什么 ...
- Druid:一个用于大数据实时处理的开源分布式系统——大数据实时查询和分析的高容错、高性能开源分布式系统
转自:http://www.36dsj.com/archives/28590 Druid 是一个用于大数据实时查询和分析的高容错.高性能开源分布式系统,旨在快速处理大规模的数据,并能够实现快速查询和分 ...
- 数据结构算法集---C++语言实现
//数据结构算法集---C++语言实现 //各种类都使用模版设计,可以对各种数据类型操作(整形,字符,浮点) /////////////////////////// // // // 堆栈数据结构 s ...
- graph isomorphism 开源算法库VFlib, Nauty
VFlib 开源算法库网站:http://www.cs.sunysb.edu/~algorith/implement/vflib/implement.shtml Nauty 开源算法库网站:http: ...
- 一个GIS开源工具集架构的总结
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 最近由团队HWG主导的GIS开源工具集基本告一段落,该项目虽然 ...
- Computer Science Theory for the Information Age-4: 一些机器学习算法的简介
一些机器学习算法的简介 本节开始,介绍<Computer Science Theory for the Information Age>一书中第六章(这里先暂时跳过第三章),主要涉及学习以 ...
- Apache Jakarta Commons 工具集简介
Apache Jakarta Commons 工具集简介[转] Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动.我选了一些比较常用的项目做简单介绍.文 ...
- ThreeJS系列2_effect插件集简介( 3d, vr等 )
ThreeJS系列2_effect插件集简介( 3d, vr等 ) ThreeJS 官方案例中有一些 js库 可以替代 render 将场景中的物质变换为其他效果的物质 目录 ThreeJS系列2_e ...
随机推荐
- Telegram 正式引入国产小程序技术
Telegram 宣布为其开发者提供了一项"能够在 App 中运行迷你应用"的新功能( 迷你应用即 Mini App,下文中以"小程序"代替). 在一篇博客文章 ...
- 自研、好用、够快、稳定、代码可读性强的ORM
Fast Framework 作者 Mr-zhong 代码改变世界.... 一.前言 Fast Framework 基于NET6.0 封装的轻量级 ORM 框架 支持多种数据库 SqlServer O ...
- QString类常用属性
目录 1. isNull() 2. isEmpty() 3. length() 4. truncate() 5. indexOf()/lastIndexOf() 6. arg() 7. at() 8. ...
- EFCore 使用FluntApi配置 全局查询筛选器
我们在类中通常会有一个属性为 IsDel来表示软删除或也称逻辑删除,这个属性会导致我们在进行查询操作时,每一次都要 .where(s=>s.IsDel==false) 非常的麻烦.在使用efCo ...
- HanLP — Aho-Corasick DoubleArrayTire 算法 ACDAT - 基于双数组字典树的AC自动机
双数组字典树能在O(1)(1是模式串长度)时间内高速完成单串匹配,并且内存消耗可控,然而软肋在于多模式匹配.如果要匹配多个模式串,必须先实现前缀查询,然后频繁截取文本后缀才可多匹配.比如 ushers ...
- 25. 干货系列从零用Rust编写正反向代理,序列化之serde是如何工作的
wmproxy wmproxy已用Rust实现http/https代理, socks5代理, 反向代理, 静态文件服务器,四层TCP/UDP转发,内网穿透,后续将实现websocket代理等,会将实现 ...
- Avalonia 实现跨平台的IM即时通讯、语音视频通话(源码,支持信创国产OS,统信、银河麒麟)
在 Avalonia 如火如荼的现在,之前使用CPF实现的简单IM,非常有必要基于 Avalonia 来实现了.Avalonia 在跨平台上的表现非常出色,对信创国产操作系统(像银河麒麟.统信UOS. ...
- 金蝶云星空与泛微OA集成的方案落地与实践
打破信息孤岛,泛微OA集成的方案落地与实践 在现代企业内部,不同类型的业务系统和泛微OA平台层出不穷.企业需要找到一种高效的方法来整合和协同这些多样化的系统,同时将它们与泛微OA平台融合,以实现资源整 ...
- Tomcat国内安装及乱码解决详细步骤(无f墙)
1.下载安装包 链接:https://pan.baidu.com/s/1x_hWMnUrui4aDYo9UE-GdA?pwd=p8kn 提取码:p8kn --来自百度网盘超级会员V4的分享 2.一键下 ...
- STM32外设:专用定时器 IWDG、WWDG、RTC
主要外设: IWDG:Independent Watch DoG 独立看门狗 WWDG:Window Watch DoG 窗口看门狗 RTC: Real-Time Clock 实时时钟 IWDG 主要 ...