摘要: 为解决 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 的设计次要思考到以下两个方面:
- 对于一般 AI 开发者,能够调用 NAIE AutoML 来解决大部分业务场景问题;
- 对于业余 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
点击关注,第一工夫理解华为云陈腐技术~