摘要:为解决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()

参数简要说明:

  1. optimization_method:超参优化方法,当前支持网格搜索、随机搜索和SMAC优化算法
  2. included_models:默认为None, 表示搜索所有内置的模型。通过该配置参数,实现只对部分模型进行搜索。
  3. metrics:评估指标,可以是内置的评估指标,也可以是自定义的评估指标;
  4. workers: 并行数,通过该配置参数,实现分布式加速;
  5. 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的更多相关文章

  1. 华为全栈AI技术干货深度解析,解锁企业AI开发“秘籍”

    摘要:针对企业AI开发应用中面临的痛点和难点,为大家带来从实践出发帮助企业构建成熟高效的AI开发流程解决方案. 在数字化转型浪潮席卷全球的今天,AI技术已经成为行业公认的升级重点,正在越来越多的领域为 ...

  2. AI开发者十问:10分钟了解AI开发的基本过程

    摘要:从AI开发模型.框架.工具,到提升开发效率的学习办法,为AI开发者逐一解答. 本文分享自华为云社区<10分钟了解AI开发的基本过程>,作者:简单坚持. 1.AI开发究竟在开发什么? ...

  3. Java遇上SPL:架构优势和开发效率,一个不放过

    摘要:如果我们在Java中也提供有一套完整的结构化数据处理和计算类库,那这个问题就能得到解决:即享受到架构的优势,又不致于降低开发效率. 本文分享自华为云社区<Java结构化处理SPL>, ...

  4. HUAWEI HiAI亮相华为开发者生态大会 助力应用AI开发实现加速度

    6月23日,在2018华为终端·全球合作伙伴及开发者大会AI分论坛体验区的一角,被层层叠叠的人群围得水泄不通.站在最前面的一名体验者,正跟随着“快手短视频”APP上不断出现的小人左右扭动,每完成一个动 ...

  5. 华为云ModelArts 2.0全面升级,革新传统AI开发模式

    [中国,上海,9月20日] 在HUAWEI CONNECT 2019期间,华为云EI服务产品部总经理贾永利宣布--华为云AI重装升级,并重磅发布一站式AI开发管理平台ModelArts 2.0. 现场 ...

  6. 昇思MindSpore全场景AI框架 1.6版本,更高的开发效率,更好地服务开发者

    摘要:本文带大家快速浏览昇思MindSpore全场景AI框架1.6版本的关键特性. 全新的昇思MindSpore全场景AI框架1.6版本已发布,此版本中昇思MindSpore全场景AI框架易用性不断改 ...

  7. atitit.为什么java体系开发效率这样低的原因and解决

    atitit.为什么java体系开发效率这样低的原因and解决 #---开发理念问题(影响度:很大的,2-3倍效率) mvc<>webform server control ajax< ...

  8. Qt 框架的图形性能高(OpenGL上的系统效率高),网络性能低,开发效率高,Quick是可以走硬件加速——Qt中分为好几套图形系统,差不多代表了2D描画的发展史。最经典的软描画系统

    -----图形性能部分-----Qt的widgets部分,运行时的图像渲染性能是一般的,因为大部分的界面内容都是Qt自绘,没有走硬件加速,也就是说很多图形内容都是CPU算出来的.但是widgets底层 ...

  9. AI本质就是“暴力计算”?看华为云如何应对算力挑战

    随着AI人工智能技术的飞速发展,相关的AI应用场景已经拓宽至各行各业.你可能想象不到的是,现在大家手上的智能手机的运算能力,甚至比美国航空航天局1969年登月计划中最先进计算机还高出几百上千万倍乃至更 ...

  10. 百度AI开发平台简介

    AIstudio https://aistudio.baidu.com/aistudio/index 关于AI Studio AI Studio是基于百度深度学习平台飞桨的一站式AI开发平台,提供在线 ...

随机推荐

  1. 数据结构-线性表-单链表(c++)

    线性表的运算 求长度GetLength(L),求线性表L的长度 置空表SetNull(L),将线性表置成空表 按位查找Get(L,i),查找线性表L第i个元素 按值查找Location(L,x),查找 ...

  2. Java开发中的工作流程和步骤

    前言 随着环境的变迁,大家总会更换工作,有裁员的,有跳槽的,除了进进出出的老人,还有源源不断入坑的新人. 很多人入职之后还不知道怎么快速适应工作,对我而言,除去寥寥可数的同事感情,对我而言,更换工作更 ...

  3. 殷浩详解DD系列

    第五讲:https://blog.csdn.net/Taobaojishu/article/details/115911833 内部有1-4讲链接

  4. Golang面试题从浅入深高频必刷「2023版」

    大家好,我是阳哥.专注Go语言的学习经验分享和就业辅导. Go语言特点 Go语言相比C++/Java等语言是优雅且简洁的,是我最喜爱的编程语言之一,它既保留了C++的高性能,又可以像Java,Pyth ...

  5. TechEmpower 22轮Web框架 性能评测:.NET 8 战绩斐然

    自从2022年7月第21轮公布的测试以后,一年后 的2023年10月17日 发布了 TechEmpower 22轮测试报告 刚刚发布:Round 22 results - TechEmpower Fr ...

  6. 如何优雅使用 vuex

    大纲 本文内容更多的是讲讲使用 vuex 的一些心得想法,所以大概会讲述下面这些点: Q1:我为什么会想使用 vuex 来管理数据状态交互? Q2:使用 vuex 框架有哪些缺点或者说副作用? Q3: ...

  7. (Good topic)卡牌分组(3.27leetcode每日打卡)

    给定一副牌,每张牌上都写着一个整数. 此时,你需要选定一个数字 X,使我们可以将整副牌按下述规则分成 1 组或更多组:  每组都有 X 张牌. 组内所有的牌上都写着相同的整数. 仅当你可选的 X &g ...

  8. Android 的异步消息处理机制

    前言 Android中的异步消息处理机制主要有四部分:Message.Handler.MessageQuene.Looper.这一消息处理机制也称为Handler机制.Handler机制是支撑整个An ...

  9. 编程技巧 --- VS如何调试.Net源码

    引言 如题,在VS中如何调试 .Net 源码呢? 一般来说,VS2022,都是默认启用 F12 转到定义能够看到源码,如果大家发现自己无法使用 F12 查看源码,可以在 "工具" ...

  10. 【uniapp】【外包杯】图片跳转到页面

    <navigator class="swiper-item":url="'/subpkg/goods_detail/goods_detail'">