AI开发效率低,你可以试试华为NAIE AutoML
摘要:为解决AI工程师在开发AI应用场景所遇到的问题,NAIE平台落地AutoML框架(工具)来辅助大家更高效、更迅速解决AI开发问题。
- 你是不是还在为掌握的AI算法少而烦恼?
- 你是不是还在为选择某个处理方法而犹豫不决?
- 你是不是还在为调参四处寻求帮助?
- 你是不是因为超参优化的龟速而愤慨?
- 你是不是还在为持续优化某个模型而感到寸步难行?
从现在开始,有了华为NAIE AutoML ,这些都不是事啦!
为解决AI工程师在开发AI应用场景所遇到的问题,NAIE平台落地AutoML框架(工具)来辅助大家更高效、更迅速解决AI开发问题。
Follow me,看我们如何用NAIE AutoML逐个击破开发难题!
1.AI开发中常见的问题和挑战
1.1 选择什么样的Pipeline?
一个完整的机器学习应用开发主要包括数据预处理、特征工程、模型选择和超参优化这些关键模块,每个关键模块里面又有很多子模块,如下图所示。

而每个模块中又有很多不同的方法。针对特定的数据集,选取每个子模块的方法并按照一定的逻辑拼接起来,就构成了一个pipeLine,运行整个pipeline即可得到一个模型。但是这样的 pipeline 的量级大多在百万级以上,我们该如何从这些pipeline中选择最优的呢?
1.2 如何快速验证AI算法的可行性?
在AI场景的预研阶段,算法工程师会有很多的想法。针对每个想法,需要快速验证可行性。你是不是因为不了解某个算法而不断光顾各大论坛,去了解算法的调用和调参技巧?你是不是经历过“刚学懂某个算法,其他团队都已经落地了”这种尴尬局面。你是不是经历过“1000次的超参迭代需要3天才能知道结果”?我们无法忍受算法入门的高门槛、调参的炼金术和迭代的漫长等待。对于一个刚入门的AI算法工程师,如何进行快速验证AI算法的可行性是一个非常迫切的问题。
1.3 如何进行持续的调优学习?
在AI的调优中,由于有限的时间和算力,我们是无法遍历所有可能的调优方式。AI工程师通常会根据经验设定少数几个pipeline,根据pipeline的运行结果,再根据经验来调整pipeline中各个模块的方法或超参。这样的人工调整操作费时费力,通常一天只能进行十几次的尝试。对于海量的搜索空间来说,基本是大海捞针。再加上专家的精力和时间有限,因此,对一个特定任务进行持续的调优学习是非常大的挑战。
1.4 如何做到结果复现
在AI应用开发的过程中,你是不是偶尔调到一个很好的模型沾沾自喜,但是给领导演示时结果却不能复现而尴尬万分。为了避免这种尴尬的局面,我们需要在每次的试验中做到结果的可重复。一般情况下,我们会设定随机种子来确定。设定了随机种子后,结果一定是可以复现的吗?不是的,有些算法是多线程的,如lightgbm,同时线程的个数也会影响算法的结果。另外,交叉验证数据的划分、基于模型的超参选择等均具有随机性。如何做到结果的可复现,对AI工程师也是一个比较大的挑战。
那么面对这些困难和挑战,华为NAIE AutoML是如何逐个攻破的呢?
2.NAIE 平台AutoML介绍
AutoML(Automatic Machine Learning)是一个自动化机器学习分析系统,可以让普通的开发人员、业务人员参与机器学习建模,同时能把数据科学家从繁琐、反复的算法调优中解放出来,降低机器学习的使用门槛,提升工作效率。究其根本AutoML能有如此功效,主要是它把机器学习中的数据预处理、特征工程、算法模型、集成学习等经验性工作自动化,达到提升开发效率的结果。
下面我们将介绍NAIE平台AutoML技术。
2.1 NAIE AutoML 架构
NAIE平台AutoML采用业界经典的AutoML框架,主要包括数据预处理、特征工程、算法模型、超参优化、集成学习五个模块,其中,超参优化模块是对数据预处理、特征工程、算法模型构成的pipeline进行超参寻优。主要框架图如下:

华为NAIE AutoML的设计主要考虑到以下两个方面:
1. 对于普通AI开发者,可以调用NAIE AutoML来处理大部分业务场景问题;
2. 对于专业AI开发者,NAIE AutoML提供高可扩展的接口供用户针对业务场景自定义相关模块来解决相应的业务问题。
在AI应用的实战中,需要不断地尝试各种策略,如增加优化的迭代次数、更换评估指标等。NAIE平台AutoML框架提供基于Pipeline的超参优化、持续的超参优化、分布式超参优化加速、可扩展、可复现等特性,使得用户能够快速试验超大的超参迭代次数、自定义针对业务问题的算法模块、复现已有的探索结果,显著提高用户的开发效率。
2.1.1 强大的超参优化引擎
1)支持pipeline 的超参寻优
NAIE AutoML不仅支持由数据预处理、特征工程和模型所构成pipeline的超参优化,同时也支持针对模型的超参优化,仅需要把数据预处理和特征工程部分关闭即可。
2)支持分布式并行加速
业界在使用AutoML技术的过程中,由于参数空间非常大,一般地,需要将迭代次数设置为2000次或更多。单个节点,运行2000次超参,非常耗时。NAIE 平台AutoML可以采用多节点并行技术,通过Master-Worker机制大大缩短了时间。

图:分布式实现示意图
3)支持超参的持续学习
在实际的场景中,我们并不清楚终止的条件对不对,因此,我们只能在测试数据上不断的验证。当验证的效果随着迭代次数显著提升时,用户仍然想迭代更多的次数。为了节省资源和时间,NAIE AutoML实现了增量的超参优化,且能够做到100+50=150,即第一次运行迭代100次,基于第一次任务再增量迭代50次,最终得到的结果与单次运行迭代150次的结果保持一致。
2.1.2 集成学习
不同数据挖掘算法都有对应的适用条件,并非都能适用所有场景及数据,NAIE AutoML通过集成学习技术实现对多个算法进行融合得到最佳的模型,让最终模型更加鲁棒 (robust)。具体实现流程如下:

2.1.3 可扩展
1) 自定义算法模型
一般AutoML会针对不同的任务提供了内置的算法模型,内置算法支持指定某几种算法来参与建模。然而几种内置算法无法覆盖所有的应用场景需求,因此NAIE AutoML提供了自定义算法模型能力,用户可以根据框架规范开发相应的接口来实现自定义算法模型。
2.)自定义评估指标
AutoML针对不同的任务,提供了内置的评估指标,如对于分类问题,提供precision、recall、f1等评估指标。但是很多业务场景问题,往往这些评估指标是不够的,如设备故障检测场景中,业务指标是满足误报率(False Alarm Rate) <= 0.1%情况下, 查全率(Fault Detection Rate) 要尽量高。类似设备故障检测这样的场景,需要根据业务问题来设自定义置评估指标,NAIE AutoML提供自定义评估指标接口。
3) 自定义交叉验证
AutoML中内置了交叉验证,但内置交叉验证无法覆盖所有用户的需求。因此,NAIE AutoML也提供了自定义交叉验证接口。
2.1.4 可复现
在AutoML中,超参的选取、代理模型的生成、模型的训练等均受到随机种子的影响。NAIE AutoML将所有涉及随机的模块,采用统一的随机种子参数来控制。除此之外,当设定随机种子时,我们会自动把影响算法运行结果的线程数设置为1。这样便使得NAIE AutoML试验具备可重复性,即相同的AutoML配置,在不同的时间点运行,结果是相同的。
下面我们以“设备故障检测场景”为案例给大家介绍NAIE AutoML的具体应用效果。
3.NAIE AutoML在设备故障检测场景中的应用
3.1 业务场景
网络设备故障经常发生,且在故障发生后才感知,极大影响运维效率和成本。传统的方法是当故障出现后,需要投入大量人力和物力去定位故障、恢复业务。
如何使用AI技术来提前预测故障发生的时间点,提前采取措施?针对这一业务问题,业务部门提出以下业务目标:在FAR<=0.1% 下,FDR尽量大,其中,
- FDR=False Detection Rate,查全率,即故障实际发生,模型预测为故障发生;
- FAR=Fault Alarm Rate,误报率,即故障实际未发生,而模型预测为故障发生。
简而言之就是,在保证低误报率的情形下,尽量不要漏掉故障。
3.2 业务目标转化
对于设备故障检测应用,AI算法里面是一个二分类问题,把故障情况看作是正样本,把其他情况看作是负样本,则业务指标FDR与FAR对应为二分类中ROC曲线中的 True Positive Rate与False Positive Rate,见下图。

图:业务目标FDR与FAR与ROC曲线的对应关系
根据上图可以得到业务目标的表达式,代码如下:
from sklearn.metrics import roc_curve
def fdr_score(y_true, y_proba):
"""
对模型预测概率与真实的标签进行评分
FAR、FDR分别为ROC图中的fpr、tpr
Parameters
__________
y_true : numpy.array
测试数据的真实标签,值为1或0
y_proba : numpy.array
模型对类别1的预测概率,值为0-1之间的浮点数
Return
_______
max_tpr: float
当误报率FAR<0.1%时,检出率FDR的最大值
"""
fpr, tpr, _ = roc_curve(y_true, y_proba)
max_tpr = tpr[np.where(fpr < 0.001)][-1]
return max_tpr
3.3 基于NAIE AutoML的具体应用
3.3.1 设备故障检测场景的特殊性
设备故障检测场景的业务目标跟分类问题中的 precision、recall、f1等分类评估指标不同,是根据业务问题得到的。为了保证超参优化的目标与业务目标是一致的,可以使用NAIE AutoML提供的注册自定义评估指标来实现。
3.3.2 极简代码调用
调用步骤:
Step1:初始化NAIE AutoML类
Step2:注册自定义评估指标 fdr_score
Step3: 进行训练
代码如下:
from naie.automl import VegaAutoML
# Step1:初始化VegaAutoML
automl = VegaAutoML(model_type="classifier",
target_column="failure",
ignored_columns=["disk_sn"],
train_data_reference=get_data_reference(dataset="data", dataset_entity="train"),
optimization_method="SMAC",
included_models=['lightgbm'],
n_folds=5,
metrics="fdr",
workers=5,
max_trial_number=1000,
random_state=1)
# Step2:注册自定义评估指标(fdr_score)
automl.register_metric_evaluator("fdr", fdr_score)
# Step3: 开始训练
automl.train()
参数简要说明:
- optimization_method:超参优化方法,当前支持网格搜索、随机搜索和SMAC优化算法
- included_models:默认为None, 表示搜索所有内置的模型。通过该配置参数,实现只对部分模型进行搜索。
- metrics:评估指标,可以是内置的评估指标,也可以是自定义的评估指标;
- workers: 并行数,通过该配置参数,实现分布式加速;
- random_state: 随机种子,指定该配置,可以实现AutoML过程的可重复性。
3.3.3 效果
经过简单的几行代码即可实现在设备故障检测场景上的建模。试验展示,经过1000次的迭代即可达到专家经验的水平。
工欲善其事,必先利其器。AutoML是AI初学者和专业开发人员的必备武器。NAIE平台已将AutoML为大家备好,新用户免费使用3个月!限时抢购!
本文分享自华为云社区《攻略!助力AI开发效率提升,华为AutoML工具逐个突破开发难题!》,原文作者:iMaster-NAIE。
https://console.huaweicloud.com/naie/activity/2021-PROC (二维码自动识别)
AI开发效率低,你可以试试华为NAIE AutoML的更多相关文章
- 华为全栈AI技术干货深度解析,解锁企业AI开发“秘籍”
摘要:针对企业AI开发应用中面临的痛点和难点,为大家带来从实践出发帮助企业构建成熟高效的AI开发流程解决方案. 在数字化转型浪潮席卷全球的今天,AI技术已经成为行业公认的升级重点,正在越来越多的领域为 ...
- AI开发者十问:10分钟了解AI开发的基本过程
摘要:从AI开发模型.框架.工具,到提升开发效率的学习办法,为AI开发者逐一解答. 本文分享自华为云社区<10分钟了解AI开发的基本过程>,作者:简单坚持. 1.AI开发究竟在开发什么? ...
- Java遇上SPL:架构优势和开发效率,一个不放过
摘要:如果我们在Java中也提供有一套完整的结构化数据处理和计算类库,那这个问题就能得到解决:即享受到架构的优势,又不致于降低开发效率. 本文分享自华为云社区<Java结构化处理SPL>, ...
- HUAWEI HiAI亮相华为开发者生态大会 助力应用AI开发实现加速度
6月23日,在2018华为终端·全球合作伙伴及开发者大会AI分论坛体验区的一角,被层层叠叠的人群围得水泄不通.站在最前面的一名体验者,正跟随着“快手短视频”APP上不断出现的小人左右扭动,每完成一个动 ...
- 华为云ModelArts 2.0全面升级,革新传统AI开发模式
[中国,上海,9月20日] 在HUAWEI CONNECT 2019期间,华为云EI服务产品部总经理贾永利宣布--华为云AI重装升级,并重磅发布一站式AI开发管理平台ModelArts 2.0. 现场 ...
- 昇思MindSpore全场景AI框架 1.6版本,更高的开发效率,更好地服务开发者
摘要:本文带大家快速浏览昇思MindSpore全场景AI框架1.6版本的关键特性. 全新的昇思MindSpore全场景AI框架1.6版本已发布,此版本中昇思MindSpore全场景AI框架易用性不断改 ...
- atitit.为什么java体系开发效率这样低的原因and解决
atitit.为什么java体系开发效率这样低的原因and解决 #---开发理念问题(影响度:很大的,2-3倍效率) mvc<>webform server control ajax< ...
- Qt 框架的图形性能高(OpenGL上的系统效率高),网络性能低,开发效率高,Quick是可以走硬件加速——Qt中分为好几套图形系统,差不多代表了2D描画的发展史。最经典的软描画系统
-----图形性能部分-----Qt的widgets部分,运行时的图像渲染性能是一般的,因为大部分的界面内容都是Qt自绘,没有走硬件加速,也就是说很多图形内容都是CPU算出来的.但是widgets底层 ...
- AI本质就是“暴力计算”?看华为云如何应对算力挑战
随着AI人工智能技术的飞速发展,相关的AI应用场景已经拓宽至各行各业.你可能想象不到的是,现在大家手上的智能手机的运算能力,甚至比美国航空航天局1969年登月计划中最先进计算机还高出几百上千万倍乃至更 ...
- 百度AI开发平台简介
AIstudio https://aistudio.baidu.com/aistudio/index 关于AI Studio AI Studio是基于百度深度学习平台飞桨的一站式AI开发平台,提供在线 ...
随机推荐
- 飞码LowCode前端技术系列(一):数据结构设计
简介 飞码是京东科技研发的低代码产品,可使营销运营域下web页面快速搭建.飞码是单web页面搭建工具,从创建页面到监测再到投产的一站式解决方案.会通过七篇文章介绍飞码,分别是:(1)背景与数据结构设计 ...
- 用xshell连接vmware虚拟机
主要是为了方便写命令,我的vmware不管怎样都没办法粘贴命令,写建表sql更是折磨. 开启虚拟机用ifconfig查看内网ip地址. 然后在用户身份验证填用户名和密码. 连接成功. 这样就可以开多个 ...
- Go 如何实现多态
在 Go 语言中,虽然没有经典的面向对象编程中的继承和多态的概念,但你可以通过接口(interface)来实现多态性.Go 语言鼓励组合和接口多态,这使得代码更加灵活和模块化.下面将详细介绍 Go 语 ...
- js 实现文件下载/文件导出。
1. POST方式进行文件导出: // url 下载URL // fileName 下载文件名称 function exportFile(url, fileName) { let xhr = new ...
- 21. 从零用Rust编写正反向代理,tokio竟然这样对待socket!
wmproxy wmproxy已用Rust实现http/https代理, socks5代理, 反向代理, 静态文件服务器,四层TCP/UDP转发,内网穿透,后续将实现websocket代理等,会将实现 ...
- CSS3 rgb and rgba(透明色)的使用
作者:WangMin 格言:努力做好自己喜欢的每一件事 对于颜色相信大家都很敏感,眼睛所见之处都存在颜色,那在css中我们用什么来表示颜色呢?CSS 中的颜色有三种定义方式:使用颜色方法(RGB.RG ...
- 从BST到LSM的进阶之路
前言 相信大家之前都了解过很多种数据结构,我之前总是两两的,也就是从局部上去进行比较,没有从整体上进行这些树的发展脉络进行梳理,因此经常看完没多久就忘了.看来确实是需要从本源出发,不仅要知其然还要知其 ...
- 8.0的新特性 -- invisible(不可见索引)
版权声明:原创作品,谢绝转载!否则将追究法律责任. ----- 作者:kirin invisible index 不可见索引 以前的版本,假如这个索引无用了会怎么样?那就只能是drop掉了.但是dro ...
- 学习JavaScript的第一天
JavaScript概述 JavaScript的介绍 js属于一门面向对象的编程语言 属于跨平台 面向对象(oop) 以对象方式实现所有的功能 跨平台:js代码不论是在什么样的操作系统上执行结果都是一 ...
- 解决IDEA加载maven工程缓慢
如图,哪里没有加哪里 -DarchetypeCatalog=internal