【异常检测第二篇】异常检测与诊断模型之AutoPerf

一、 Address

来自于nips2019, Intel的一篇 面向于Performance Regression的anormaly detection and diagonsis的一篇paper

A Zero-Positive Learning Approach for Diagnosing Software Performance Regressions

【异常检测第二篇】异常检测与诊断模型之AutoPerf

地址:https://arxiv.org/pdf/1709.07536v4.pdf

二、 Introduction

2.1 software performance

【异常检测第二篇】异常检测与诊断模型之AutoPerf

2.2 存在的一些Challenges

  • 异常的样本不容易获得,比较少,正常的更多(大多数异常检测问题都存在这个challenge)

  • 通过code instrumentation的方式可能会对正在跑的program造成一些扰乱

【异常检测第二篇】异常检测与诊断模型之AutoPerf

2.3 两个很典型的Performance Regressions的例子

【异常检测第二篇】异常检测与诊断模型之AutoPerf文中所说的 true sharing and false sharing大概的理解可以看图【异常检测第二篇】异常检测与诊断模型之AutoPerf其中false sharing会领导很大的performance degradation

三、 AutoPerf

本文提出了这样一个自动化的方法。

3.1 overview

【异常检测第二篇】异常检测与诊断模型之AutoPerf【异常检测第二篇】异常检测与诊断模型之AutoPerf三个主要的优势【异常检测第二篇】异常检测与诊断模型之AutoPerf

3.2 数据收集

【异常检测第二篇】异常检测与诊断模型之AutoPerf用PAPI去读取HWPCs值(都是和性能相关的一些硬件指标)【异常检测第二篇】异常检测与诊断模型之AutoPerf对应的一个sample是一个func执行得到的,包括HWPC值以及thread count,还有个差分以及归一化的过程,毕竟后面要做Deep learning,肯定是要normalize的

3.3 Diagnosing Performance Regressions

【异常检测第二篇】异常检测与诊断模型之AutoPerf

3.3.1 Autoencoder-based Training and Inference

这里对Zero-positive learning进行的说明,这里的positive指的就是anomalous【异常检测第二篇】异常检测与诊断模型之AutoPerf主要就是用AE去学习non-anomalous的表征分布,之后看新的sample是否发生偏离,发生偏离的就是anomalous

具体输入为一个func的profiling, loss func为mse【异常检测第二篇】异常检测与诊断模型之AutoPerf之后输入新的sample,经过AE得到对应的reconstruction error,大于某个阈值则为anomalous

【异常检测第二篇】异常检测与诊断模型之AutoPerf

3.3.2 Reconstruction Error 阈值机制

这个阈值影响很大,太大或者太小都不行的。

太大会少检测到很多的anomalous, 太小的话可能会把很多non-anomalous检测为anomalous

之后定义了这样的一个方式(写的很清楚,就是正态分布那一套的设计)【异常检测第二篇】异常检测与诊断模型之AutoPerf

3.3.3 通过k-means扩展到更多的func

【异常检测第二篇】异常检测与诊断模型之AutoPerf
  • 把训练集聚类成k个cluster

  • 每个cluster里面包含的某个func大于其他的cluster,那这个 cluster代表的就是这个func

  • 对于每个cluster都用一个AE进行训练build

  • 对于一个new sample,找到对应于func属于的cluster训练的AE进行预测算reconstruction error即可

四、Experiments

【异常检测第二篇】异常检测与诊断模型之AutoPerf实验做了三部分

  • 诊断性能退化的能力 对比另外两个ML的方法

  • 分析了聚类方法

  • 做了一下量化分析、训练开销的实验说明

4.1 Setup

使用了三个公开的programs

【异常检测第二篇】异常检测与诊断模型之AutoPerf

4.2 诊断能力

【异常检测第二篇】异常检测与诊断模型之AutoPerf进行对比,有7个benchmark programs 和三个真实的应用, 并且FP, FN的计算方式也做了具体说明

【异常检测第二篇】异常检测与诊断模型之AutoPerftable中也说明了AutoPerf方法的优势,除了Boost和MySQL再FP有微小的值以外,其他都没有False的情况出现

并对 这两个real world存在FP值的programs作进一步的分析,画出ROC曲线, 可以看出依旧是该方法更好【异常检测第二篇】异常检测与诊断模型之AutoPerf

4.3 聚类方法

【异常检测第二篇】异常检测与诊断模型之AutoPerf图a中只用到了七个func, k=1时,为只用一个AE来对所有的func进行training, F1降至0.31, 之后用聚类方法进行聚类,并且每个cluster都用一个AE,F1升到(2->4)【异常检测第二篇】异常检测与诊断模型之AutoPerf图b,c主要展示的为:深色的为聚类之前的情况,每个func都用一个AE去训练,也就是有多少个func,就有多少个AE,浅色为聚类之后的情况,b和c主要想展示,再聚类之后f1只是微弱的降低,但是时间花费大大减少,主要体现高效。

4.4 error的阈值

【异常检测第二篇】异常检测与诊断模型之AutoPerf对比了一下基本方法和UBL【异常检测第二篇】异常检测与诊断模型之AutoPerf

4.5 训练开销

【异常检测第二篇】异常检测与诊断模型之AutoPerf还有个对比图,总体百分比,除了个别其他都很低【异常检测第二篇】异常检测与诊断模型之AutoPerf

更多精彩内容(请点击图片进行阅读)

【异常检测第二篇】异常检测与诊断模型之AutoPerf

【异常检测第二篇】异常检测与诊断模型之AutoPerf

【异常检测第二篇】异常检测与诊断模型之AutoPerf

公众号:AI蜗牛车

保持谦逊、保持自律、保持进步

【异常检测第二篇】异常检测与诊断模型之AutoPerf

个人微信

备注:昵称+学校/公司+方向

如果没有备注不拉群!

拉你进AI蜗牛车交流群

【异常检测第二篇】异常检测与诊断模型之AutoPerf【异常检测第二篇】异常检测与诊断模型之AutoPerf