蚂蚁智能运维:单指标异常检测算法初探

十年磨一剑:蚂蚁集团可观测性平台 AntMonitor 十年磨一剑:蚂蚁集团可观测性平台 AntMonitor 揭秘 2022-05-20 13:55·JAVA互联搬砖工人 蚂蚁集团的业务种类繁多,兼具金融级的“稳” 和互联网的 “快”,支撑又快又稳的业务发展需要完善的稳定性保障体系,这个体系的基石就是可观测性平台-AntMonitor。 早在2011年前,监控平台就已经完成初代建设,在2012到2017年这五年间,蚂蚁监控技术团队抽象出了业务视角监控牵引的模式,大大提升了核心业务的故障发现能力,同期研发了可视化引擎与易用的配置系统。为了支撑双.. 阅读详情

1

 背景介绍

AntMonitor:蚂蚁集团研发的一款面向云原生时代的全功能智能运维产品,包含业务监控、应用监控、基础设施监控、云原生可观测、一站式多维分析等功能。其中,智能化的单指标异常检测是该产品最基础、最重要的组成部分。

针对时序异常检测,目前蚂蚁集团内部基本都在按照以下几个思路进行研发:

  1. 通过时序预测的方法,典型算法为 ARIMA、LSTM 等,将历史数据训练的模型预测当前时刻的幅值,通过与真实值的差异来判断此刻的异常程度。在多次尝试此类模型后发现,其不但算法复杂度较高,还存有隐藏风险,此类模型训练遵循的是全局最优化策略,因此在预测当前值时无法保证当前值是单点最优(运气不好的情况下,当前点预测值误差较大)。一种解决的思路是结合其他算法进行集成学习,将误差概率尽可能的降低;

  2. 采用深度学习的方法,通过大量采集正负样本,采用一维 CNN、甚至二维 CNN (将时序数据视为图像)的方法训练模型。在尝试该类方法后发现,虽然其能够解决一些无法用规则描述的异常场景,但要搭建一个合适的针对时序数据的网络模型难度较大,此外在当前异常标准没有完全统一的情况下,模型移植性存在着很大的问题,当不同的 SRE 对业务容忍阈值不一致时,意味着要针对性地重新训练模型,这个工作量是十分巨大的;

  3. 通过集成学习的方法,有项目组是将多个弱分类赋予权重后投票来解决异常识别问题,当前的效果是在部分场景中可以达到很高的准招率。但与传统 Ensemble Learning 不同的是,其各个弱分类器的权重调整并不是一个自优化过程,而是需要通过人工调整获得,这在检测指标数量不大的时候可以采用,但是针对 AntMonitor 动辄几十万个目标指标的场景就无解了;

  4. 通过统计规则与机器学习相结合的方法,需要尽可能地将异常场景进行分类剥离(或者对数据进行分类,即算法路由),再针对各个场景进行求解。其中机器学习或深度学习可以用于描述一些难于公式化的场景,如描述波形相似。此类方法还可以将模型内部的各个参数进行透传,可以兼顾计算效率和模型移植性;

上述几种思路无所谓优劣,不同的方法都有其优势及不足,都有其契合及尴尬的场景,合适的方法才是最好的方法。针对 AntMonitor 实际面对的运维场景,统计规则和机器学习相结合的方法被选为最终解决方案。本文将分享研发 AntMonitor 智能检测算法时的一些想法和思路,欢迎各位交流学习。

2

 异常分类

在做智能异常检测的过程中,其中最棘手的问题是获得一个明确的异常判断标准。比较遗憾的是,针对不同的业务、不同的指标甚至不同的使用方都会有不同的判断标准。因此,本文从另一个角度出发,先挖掘认可度高的基础异常波形,再以点到面逐步地解决异常判断问题。以耗时值上升异常检测为例,下图给出了 AntMonitor 常见异常波形 A-D(各种异常波形都可认为是以下几种波形的变种或组合),根据各自不同的特性将其归纳为3种不同的类型,分别为冲高异常、趋势抬升异常和频率变化异常。其中 A、B 归为冲击异常,从图中可以看到其都有一个显著的幅值突变;C 归为缓变抬升异常,相较与冲击异常,其幅值抬升过程相对较为平缓;D 归为频率变化异常,主要特征为波动频率出现巨大的变化。下面分别对不同类型异常进行求解。

图1  常见异常波形

3

 算法整体架构

图2 为整体算法架构,其主要由 preFilter、coreUp 和 adapter 三部分组成。preFilter 为前置过滤器,能够在较少数据输入的情况下过滤绝大部分正常信号,极大地降低资源消耗,这是算法能够大规模覆盖的基础;coreUp 为核心检测层,通过算法路由将不同类型数据映射到对应到合适的算法参数或模块,主要对冲击、趋势和频率三种异常类型进行检测;adapter 为适配层,其主要作用是能够允许不同对象创建适合自身的异常检测模型,其中可通过透出的算法进行人工配置,也可以通过样本打标来自动训练最优模型参数。下一章节主要对 coreUp 层几个核心模块的具体实现做详细介绍。

图2 算法整体构架

4

 核心模块介绍

  冲击异常模块

冲击异常在波形上表现为某时刻突然出现的一个尖峰,往往是局部的幅值极大值。然而直接从幅值触发判断当前点是否异常,往往会出现漏报。如图3所示,由于原始波形存在着趋势项,冲击波形虽然是局部及极大值但往往不是全局视野内的最大值,因此会有被过滤的可能。观察冲击异常波形,发现其往往都是瞬时“变化”最大的时刻,其显著特征是当前值远大于前一时刻的值或持续大于前值。因此,本节从寻找瞬时波动幅值突变点的角度出发,开发基于一阶差分的异常检测算法。

当间距相等时,用下一个值减去上一个值定义为“一阶差分”。如图3所示,当带有趋势项的时间序列经过一次差分后可以有效地去除趋势项,同时冲击异常点也从局部极大值转变为了全局最大值。针对长度为的时间序列,其对应差分序列可以表示为, 其中。若当天时间序列与历史事件序列分别用和表示,分别计算各自差分序列得到和, 同时获得当前时刻差值。若在集合和同时被判定为异常,则意味着当前时刻存在着冲击异常可能。考虑到存在着连续上升的情况,在实际应用中对差分计算稍作修改使其更为精确,例如当满足时,令。

图3  时序趋势的影响

常用的异常检测方法可参考异常检测算法综述类论文。此处采用 Tukey 箱型图作为异常检测算法。选择箱线图算法的原因主要有三点:1)计算简单;2)可适用于非正态分布数据;3)可调整判断阈值。

Tukey 箱型图

此处对 Tukey 箱型图分析做一下简单介绍。众所周知,基于正态分布的 3σ 法则或 Z 分数方法的异常检测是以假定数据服从正态分布为前提的,但实际数据往往并不严格服从正态分布。应用这种方法于非正态分布数据中判断异常值,其有效性是有限的。Tukey 箱型图是一种用于反映原始数据分布的特征常用方法,也可用于异常点识别。在识别异常点时其主要依靠实际数据,因此有其自身的优越性。箱型图的绘制方法是:

  1. 先找出一组数据的最大值、最小值、中位数和两个四分位数;

  2. 然后,连接两个四分位数画出箱子;

  3. 再将最大值和最小值与箱子相连接,中位数在箱子中间;

箱型图为我们提供了识别异常值的一个标准:异常值被定义为小于 Q1-1.5IQR 或大于 Q+1.5IQR 的值。虽然这种标准有点任意性,但它来源于经验判断,经验表明它在处理需要特别注意的数据方面表现不错。

图4 箱型图示意图

冲击检测流程

冲击异常检测的简要流程如下:

  • 当日序列和历史序列,获得差分序列和,已经当前差分值;

  • 采用Turkey箱线图获得集合的上限,判断是否超限,若否返回“正常”,若是进入下一步;

  • 判断异常时刻是否超过预设异常持续时长,若否返回“正常”,若是进入下一步;

  • 在中截取以当前时刻为中心且长度为的子集合,采用 Turkey 箱线图获得其上限,判断是否超限,若否返回“正常”,若是进入下一步;

  • 判断在当日前序时间序列中是否也存在冲高异常点,若不存在返回“异常”结果;若存在进入下一步;

  • 判断是否大于,若是返回“异常”结果,若否则返回“正常”结果;

图5 冲击检测流程

存在的问题

采用上述方法存在两个问题,第一个如下左图所示,若出现大幅度下跌回升(相当于下跌检测中的冲高回落)的情况,当前点的差分值必然会超限告警,这种误报当前通过类似“冲高回落”的方法进行过滤,本文不再具体介绍;第二种,在整体波动幅度较大的情况下,出现这种小幅缓变抬升的小凸起,采用冲击异常检测是无能为力的。针对这种异常类型,本文通过趋势异常模块来进行解决。

图6 存在的漏报场景

  趋势异常模块

当波形缓慢上升时,由于差值大小是基本稳态的,上述冲击异常模块是无法有效识别的。因此,必须要有方法支持此类缓慢变化异常识别。在尝试各种算法模型后,本文最终选择 AugmentedDickey–FullerTest 和 Mann-Kendall Test 相结合的方式来求解此类问题。

ADF Test

Augmented Dickey–Fuller test 又称为扩展迪基-福勒检验,其可以用来检测当前序列是否平稳。ADF 检验的原假设是存在单位根,因为存在单位根就是非平稳时间序列了,只要这个统计值是小于 1% 水平下的数字就可以极显著的拒绝原假设,认为数据平稳。注意,ADF 值一般是负的,也有正的,但是它只有小于 1% 水平下的才能认为是及其显著的拒绝原假设。

Mann-Kendall Test

Mann-Kendall 非参数秩次检验原理如下,对长度为的时间序列, 统计假设:未经调整修正的数据系列是一个由个元素组成的独立的具有相同分布的随机变量。备择假设是双边检测:对所有的,当时和时和的分布不相同。计算时,对每一个,与其后的进行比较,记录出现的次数。定义 Mann-Kendall 统计量 :

其中, 为符号函数。当小于、等于或者大于零时,分别为-1、0或者1;对于假设统计,当时,的分布为正态分布,的均值为,方差为。当时,即可应用近似正态分布进行检验分析。

标准整体统计变量可以用下式计算:

这样,在双边的趋势检验中,在给定的置信水平上,如果则原假设是不可接受的。为正值表示增加趋势,负值表示减少趋势。的绝对值在大于等于1.28、1.64、2.32时表示分别通过了信度为90%、95%、99%的显著性检验。

Mann-Kendall 非参数秩次检验在数据趋势检测中极为有用,其特点表现为:

  • 无需对数据系列进行特定的分布检验,对于极端值也可参与趋势检验;

  • 允许系列有缺失值;

  • 主要分析相对数量级而不是数字本身,这使得微量值或低于检测范围的值也可以参与分析;

  • 在时间序列分析中,无需指定是否是线性趋势;

趋势检测流程

趋势检测并不是直接检测当日数据是否存在上涨趋势,理论上若历史数据与当天数据同步上涨,那么该波形趋势不应该识别为异常。换句话说,需要去除当日数据相对于历史的趋势。此处采用相对差值的方式来实现该目的。假设当日数据为 = ,某天历史数据为 = ,那么两者之间的差值序列可以表示为,在此基础上再进行趋势分析。

详细流程如下:

  • 计算当日数据与某历史数据的相对差值序列;

  • 采用 Mann-Kendall 检验判断是否存在上涨趋势,若无上涨趋势返回“正常”结果,反之进入下一步;

  • 计算趋势上涨的起始点,采用最小二乘法拟合上涨段波形,获得上涨绝对幅值, 计算当日数据中点对应的基础值,计算实际上涨比率;

  • 判断是否大于设定涨幅比率阈值,若不大于设定阈值则返回“正常”结果,反之则进入下一步;

  • 采用T检验判断前序数据是否存在类似的上涨波形,若存在则返回“正常”结果,若不存在则返回“异常”结果;

图7 单次趋势检测流程

实际应用中流程会稍复杂一点,并且做了部分假设:1)若当天相对于昨日不存在上涨趋势,即可认为不存在缓变上涨异常;2)若当天相对于昨日存在上涨趋势,那么需考察当天相对与剩余历史是否也存在上涨趋势,此处设定若有大于天不存在相对趋势,即认为不存在缓变趋势。考虑到算法需要获得准确的告警时间点,并用来计算精确的涨幅比率,此处对按不同长度先后进行趋势判断。大致的判断流程如图13所示,此处不再展开。

图8 趋势上涨异常检测整体流程

  频率异常模块

频率异常在实际场景中并不多见,但是作为一类异常类型,此处也对其进行了覆盖。针对频率异常数据类型,本文采用分位数聚合特征来进行求解,主要步骤如下:

DoulbeRollingAggregate

分位数定义:对一个有着连续分布函数的样本集,分位数是将一个概率分布切分为有着相同概率的连续区间的切分点。用数学公式表达的话:,则称为随机变量的分位数。

分位数聚合特征$$F$$计算流程如下:

  • 长度为的时间序列,分别扩展得到的时间序列和,具体为:

;

  • 对时间序列进行滑窗截取操作,窗口长度为,获得长度为的子序列集合,其中;同样的,获得时间序列对应的子序列;

  • 计算集合中各个子序列的个分位数,用表示子序列的分位数;同样的,计算集合中各个子序列的对应的分位数,用表示;

  • 通过和获得当前时刻的分位数聚合特征,具体公式如下:

分位数聚合特征计算示意图如下所示:

图9 分位数聚合特征计算示意图

实际检测效果

在频率异常检测的应用中,需要对数据类型进行区分。针对稀疏类型数据直接进行“分位数聚合”算法计算,而对于存在趋势项的非稀疏数据,必须先对其进行一阶差分操作后才可以使用当前算法。图10给出了两者不同类型的频率异常检测模型,分别给出了“分位数聚合”特征曲线,从图中可以看到可以准确地识别此类异常波形。在实际使用中还需要根据具体场景添加一些规则限制,此处不再具体展开。

图10 不同类型异常数据检测效果

  相似性检测模块

相似性误报在时序异常检测中占有不小的比例。如下图时序在检测时刻出现异常冲高时,若不考虑历史同期波形,往往会出现相似性误报现象。实际在波形进行相似性检测时,往往需要考虑时序长短不一致和波形偏移的问题。一般来讲,时序长短不一致和波形偏移主要表现为:

  • 如下图所示,当日波形与历史波形的冲高部分出现一段前后偏移;

  • 为提高实时检测的时效性,一般参考将历史参考波形相对于当前检测时刻延后几分钟;

图11 相似性误报

由于时序长短不一致和波形偏移的情况,皮尔逊相关系数、余弦相似度、欧式距离等相似性评价指标就不再适用。动态时间规整(DTW)是一种常用的模板匹配算法,其可以有效的解决对比长度不一致的时间序列相似性问题,图12给出了DTW 算法与传统欧式距离评价的差异,此处不再展开描述。但实际应用中,DTW 算法更多的是一种搜索匹配算法,即其返回结果是目标库中的最优匹配对象,而在时间序列实时监测过程中,需要的是能给出一个可量化的相似度参考值做为判断依据,因此 DTW 也不能直接使用。本文给出了一种基于动态时间规整(DTW)及T检验的时序波形相似性评估方法,不但能够有效评估长度不同、发生偏移序列的相似度,还可以返回可量化的相似性度量值,能够应用于时间序列实时异常检测。

图12 DTW 算法与欧式距离对比

相似性检测流程

  • 截取当日数据,记时间序列为 = , 表示当前时刻的实时数据;

  • 截取历史同时刻对比数据,记为 = , 为了刻画数据偏移特性,历史对比数据比当天数据往后多取个数据点;

  • 为消除时序常数项对距离度量的影响,对时序做“拉平”预处理,即将各个时间序列减去其自身中位数,获得新的序列分别记为和;

  • 定义时序到时序的距离定义为,分别计算当日与各个历史的距离,获得距离集合,此处 和 的长度分别为和;

  • 分别计算内两两时序的距离,获得距离集合,为与上一步骤保持一致,此处中波形取数据前个点,取个点;

  • 采用STest算法判断集合和中的距离均值和是否存在显著性差异,设原假设:,备择假设:,检验水准;

  • 计算获得pValue,若pValue>,不拒绝原假设,表明当日波形与历史波形相似; 反之,当日波形与历史波形不相似;

实际检测效果

下图给出了“相似性检测模块”的实际检测效果,图13中的4例告警都为未配置“相似性检测”模块前的上升告警样例,采用上述算法回跑后都可以有效地识别为相似性误报。从实际使用情况来看,该模块评估为误报的案例基本都是相似的,反之存在着一定的偏差,但对于一个后置过滤模块来讲是完全可接受的。总体来讲,对较为规整的波形判断效果不错,当历史数据本身趋势不相关、波形太过杂乱,上述算法效果一般。

图13 相似性检测效果

五

 算法过滤场景

通过上述整体算法判断后,下图中的潜在异常场景,如单点冲高、冲高前序相似、冲高历史相似、抬升历史相似等都可以被有效过滤。在实际应用中,此类过滤项都配置有相应的开关,由业务人员来确认是否开启。

图14 典型过滤场景

六

 总结与展望

本文算法总体思路是对单指标波形异常检测问题进行拆解,将其归纳为冲高异常、趋势上涨异常和频率变化异常三个模式。在此基础上,辅以一些过滤模块来减少特定误报的产生,如利用基于 DTW 的算法来求解诸如"波形相似性"的误报场景。此外,本文中的异常判断标准相对统一,都以箱线图分析为标准,各个超参数都可以进行透传,后期针对不同的应用场景不同的阈值都可以快速调整。当前根据以上思路设计的模型主要应用在 JVM&System 指标监测上,约 5w 条 key 总体异常告警量小于5条/分钟。

基本上,上述算法可以覆盖绝大部分的场景,但往往会有各种意想不到的误报漏报情况出现,后期的一部分工作要重点解决此类问题;另一方面,针对一些偏明确的场景,在后期可以用机器学习或者深度学习模型来进行代替,如“波形相似性”问题,在积累足够样本量后可尝试通过深度学习模型进行覆盖。同时,也可以尝试集成算法,以往从事机器学习的项目经验表明,往往集成后会有意想不到的精度提升。

  作者简介

徐剑,花名辂远,蚂蚁集团高级开发工程师,工学博士,长期从事智能运维、机器学习和信号处理等领域的研究及开发工作,当前为 AntMonitor 算法开发人员。

七 

其他

本文转自「蚂蚁智能运维」微信公众号。本公众号由蚂蚁集团技术风险中台团队出品,面向关注智能运维、技术风险等技术的同学,将不定期与大家分享云原生时代下蚂蚁集团在智能运维的架构设计与创新方面的思考与实践。

蚂蚁技术风险中台团队,负责蚂蚁集团的技术风险底座平台建设,包括智能异常检测、资金核对、性能容量、全链路压测以及风险数据基础设施等平台和业务能力建设,解决世界级的分布式处理难题,识别和解决潜在的技术风险,参与蚂蚁双十一等大型活动,通过平台能力保障整体蚂蚁系统在极限请求量下的高可用和资金安全。

关于「智能运维」有任何想要交流、讨论的话题,欢迎留言告诉我们。

PS:技术风险中台正在招聘技术专家,欢迎加入我们,有兴趣联系 techrisk-platform-hire@list.alibaba-inc.com

Day 1 - 基本语法 Day 1 1.基本语法 一、语句 (1条有效程序) print('你好!') print('世界!') # 一行有多条语句,要用分号隔开 print('你好!');print('世界!') 二、注释 注释是代码中不参与编译执行的说明性文字(不影响程序功能) # 单行注释————Ctrl+/ print('hello world!') # 在控制台打印hello world! # 多行注释————将文字放入一对'''或"""之间 """ 注释1 注释2 注释3 """ ''' A B 阅读详情

相关推荐

基于 Flink ML 搭建的智能运维算法服务及应用

本篇内容主要分为五个部分:1.阿里云大数据平台的智能运维 2.智能运维算法服务应用场景 3.传统算法工程链路的局限性 4.使用 Flink ML 搭建智能运维算法服务 5.总结和开源计划

阿里云云栖号 1206

蚂蚁监控平台 - antmonitor架构设计

antmonitor架构分享

weixin_38002497的博客 1299

Agent 在智能运维(AIOps)中的应用

数据采集:支持日志、指标、追踪等多源异构数据的实时采集。边缘计算:在本地完成数据清洗、聚合等预处理,减少网络传输压力。指令执行:接收并执行中央系统的自动化操作指令,如服务重启、资源扩容等。智能感知:内置轻量级 AI 模型,实现本地异常检测与根因分析。

shuizhudan223的博客 2315

2021 大促 AntMonitor 总结 - 云原生 Prometheus 监控实践

文|陈岸琦(花名:敖清)蚂蚁集团高级开发工程师负责蚂蚁 Prometheus 监控原生功能在蚂蚁集团的落地与产品化建设本文6566字 阅读15分钟前 言日志和指标是监控不可或缺的...

金融级分布式架构 1142

antmonitor:一个网络应用程序,它通过图表中的可视化收听来自传感器(例如心率)的 ANT+ 广播

监听器 一个网络应用程序,它通过图表中的可视化收听来自传感器(例如心率)的广播。 它支持接收来自同一设备配置文件的多个传感器的广播。 计时器可用于基本计时。 开放供非商业/个人使用: : 截屏: ###安装 下载最新版本 解压 运行“凉亭安装”(对于knockoutjs/highcharts/libantjs) 以开发者模式在 Chrome 浏览器中加载应用程序 (chrome://extensions) *尼克斯: * Listing of attached usb devices from Dynastream 'lsusb -d 0x0fcf:' * Listing of processes that owns USB devices 'sudo lsof +D /dev/bus/usb' * suunto/usb-serial-simple ke

antminer-monitor:使用简单的Web界面的Cryptocurrency ASIC挖掘硬件监视器

蚂蚁矿工监视器 基于Lite Python的Antminer Monitor !!! 根据需要添加任意数量的矿工 支持矿工A3,B3,D3,E3,L3,L3 +,L3 ++,R4,S7,S9,S11,S17,S17 Pro,T9,T9 +,T17,V9,X3,Z9 mini,Z11 检查其哈希率,温度,风扇速度,芯片状况,硬件错误率,正常运行时间 获取有关矿工错误的应用内通知(需要刷新) 将错误记录到文件 显示按模型分组的总哈希率 受密码保护的登录页面 屏幕截图 要求 Antminer Monitor需要Python才能运行。 Python2和Python3均受支持!!! Mac和Linux用户默认在系统上安装了Python Windows用户可以从下载Python ** ATTENTION **安装Python时,请务必在“ Customize Python ”步骤中选中“ Add python.exe to Path 。如果不选择此选项,您可能会遇到安装需求时出现一些错误 全新安装 下载从#AntminerMonitor的最新官方发布或从最新的非官方发布 将下载的文件

十年磨一剑:蚂蚁集团可观测性平台 AntMonitor 揭秘

这两点共同解决了数据孤岛的问题。CeresDB 已经有了纯内存时序数据库 MTSDB 用于缓存最新时间段的数据以提升查询性能,但内存是昂贵的,MTSDB 保存的数据时长也受到了内存的极大限制,很难保存超过 12 小时以上的数据,而用户的查询需求越来越高,这部分数据必须从更下层的分布式存储读取,时延相对较大,如果能将这部分数据存储在和内存读写速度在一个量级的 AEP 中,那么无疑会给查询体验带来很大的提升。这里的时序数据平台是一个广义的时序数据的综合解决方案,可以看做是传统的CMDB和时序数据的融合平台。

bjmsb79的博客 1602

Hermes-Agent-完整指南

Hermes Agent 是由 **Nous Research** 开发的一款**自我改进型 AI Agent**,具有内置的学习闭环系统。它的核心理念是"一个与你共同成长的 Agent"。- 能够从经验中创建技能(Skill-Learning Automated),在使用过程中自我改进, 跨会话持久记忆, 深度用户建模

liu_zhiyi的博客 3032

箱线图怎么判断异常值_蚂蚁智能运维:单指标异常检测算法初探

1背景介绍AntMonitor:蚂蚁集团研发的一款面向云原生时代的全功能智能运维产品,包含业务监控、应用监控、基础设施监控、云原生可观测、一站式多维分析等功能。其中,智能化的单指标异常检测是该产品最基础、最重要的组成部分。针对时序异常检测,目前蚂蚁集团内部基本都在按照以下几个思路进行研发:通过时序预测的方法,典型算法为 ARIMA、LSTM 等,将历史数据训练的模型预测当前时刻的幅值,...

weixin_42521843的博客 1591

手把手教你用UC3842搭建12V/5A反激电源(附PSIM仿真文件)

本文详细介绍了基于UC3842的12V/5A反激电源设计与PSIM仿真实践。从UC3842芯片选型、高频变压器计算到PSIM仿真模型搭建,提供完整的开关电源设计流程。特别包含PCB布局要点和实测优化建议,帮助工程师快速掌握反激电源开发技巧。

u6v7w8x的博客 1202

西门子【Automation Framework V1.2】AF架构:从软件栈到高效自动化项目的构建蓝图

本文深入解析西门子Automation Framework V1.2 (AF架构) 的核心价值与实施蓝图。该框架通过定义标准化的软件栈(如TIA Portal V19、STEP7、WinCC Unified)和严格的安装配置流程,将自动化项目开发从依赖个人经验的“手工作坊”模式,转变为高效、可复制的工业化模式。遵循此架构,工程师能快速构建稳定可靠的项目基础,规避环境冲突,从而专注于核心工艺与逻辑设计,大幅提升团队协作与项目交付效率。

weixin_29230059的博客 428

aiops-handbook完全指南:从0到1掌握智能运维核心技术与实践

**AIOps手册**是智能运维领域的一站式资源汇总,收集了大量AIOps相关的论文、演讲和开源库,并按照《企业AIOps实施建议白皮书》中的场景分类进行整理。本指南将带你全面了解AIOps的核心技术、实践案例和学习资源,帮助新手快速入门智能运维领域。 ## 什么是AIOps? AIOps(Artificial Intelligence for IT Operations)即智能运维,是将人工

gitblog_00633的博客 1022

Linux-ftrace-双nop机制的实现

linux-ftrace内核追踪-双nop机制的实现原理

qq_43707773的博客 1072

AI驱动的智能运维:行业案例与挑战解析

与传统运维方法相比,这些新概念在管理和维护AI产品时,更强调了动态模型管理、自动化故障检测和智能化问题解决,不断深刻改变了构建和维护AI应用的方式,推动了运维工具和实践的全面进化。AI系统虽然可以处理常规的操作,但对于一些突发的、复杂的或需要高度判断力的问题,仍需依赖于运维人员的经验和智慧。它通过智能分析和优化建议,提高系统和流程的整体效率。AI运维这个概念不可否认是相当美好的,他的优点也显而易见:解放我们的双手和大脑,也就是解放人力,就这一个优点就是非常大的,而且这也应该是AI在绝大多数应用领域的优点。

2401_82452722的博客 3224

GitHub漏洞挖掘与CVE提交实战指南:从发现到编号的完整链路

GitHub开源项目是现代软件供应链的核心节点,其安全漏洞直接影响全球数百万系统的机密性、完整性与可用性。理解漏洞本质需回归CIA三元组原理,而真实可利用性依赖对协议解析层、配置加载区和依赖传递链等高危模块的精准识别。技术价值在于将模糊的‘可疑逻辑’转化为符合MITRE CVE标准的可验证事件,支撑SDL流程、威胁情报建设与供应链风险管理。典型应用场景包括甲方安全工程师推动供应商修复、独立研究者参与负责任披露,以及DevSecOps团队构建自动化风险坐标系。本文基于27次CVE提交经验,聚焦GitHub代码

weixin_33646989的博客 651

STM32G431的 FDCAN使用5M加速时,出现奇葩问题,如何解决?

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 1637

cnn 一维时序数据_蚂蚁集团智能监控的时序异常检测:基于 CNN 神经网络的异常检测...

1背景在蚂蚁集团智能监控领域,时序异常检测是极重要一环,异常检测落地中,业务方参考业界标准输出 Metrics 指标数据,监控不同业务、应用、接口、集群的各项指标,包含 Metrics 指标(总量、失败量、耗时等)和系统服务指标(CPU、MEM、DISK、JVM、IO 等)。早期的时序异常检测是由 SRE 结合长期运维经验通过配置专家规则来完成,随着 AI 技术的普及,异常检测逐步 A...

weixin_30764401的博客 821

第七篇:A133 Android 10 触摸提示音过大

描述: 开启触摸提示音功能之后,客户反馈触摸提示音过大,需要改小。 解决方案: 看代码注释,在framework下搜索方法即可。 /** @see AudioManager#playSoundEffect(int) */ public void playSoundEffect(int effectType) { playSoundEffectVolume(effectType, -1.0f); } /** @see AudioManager#playSoundEff

qq_33088619的博客 1696

如何利用aiops-handbook解决90%的运维异常检测难题?实战案例解析

aiops-handbook是一个全面的AIOps资源汇总手册,汇集了大量关于AIOps的论文、演讲和开源库,并按照《企业AIOps实施建议白皮书》中的场景分类进行收集和展示。对于运维人员来说,这是一个从实用场景出发的宝贵资源,能够帮助解决日常工作中遇到的各种运维异常检测难题。 ## 异常检测的核心挑战与解决方案 在当今复杂的IT环境中,运维异常检测面临着诸多挑战。传统的基于规则的方法难以应对

gitblog_00794的博客 933

C# 量子级跨平台开发:用Uno Platform实现Windows、iOS、Android的“量子纠缠”UI同步

墨瑾轩推出编程学习平台,通过XAML的“量子纠缠”技术,实现跨平台开发的高效与一致性。传统方案中,多平台代码重复率高,UI差异大,而量子级方案则通过一套代码构建全平台应用,UI原子化同步,开发效率提升5倍。Uno Platform的“量子纠缠”架构解决了代码碎片化、性能瓶颈和调试难题,实现UI原子化同步、性能提升300%和跨平台数据无缝同步。核心架构包括XAML的跨平台渲染、MVVM的量子叠加态架构、平台差异的量子退相干处理以及性能优化的量子隧穿效应,为开发者提供高效、一致的跨平台开发体验。

java专栏 1165

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

AIops相关算法

文章目录根因分析清华FOCUS:找影响系统性能瓶颈的原因MSRA iDice:多维指标突变定位清华Hotspot:多维根因定位智能变更清华FUNNEL:评估变更影响异常检测雅虎EGADS:KPI异常检测框架清华Opprentice:KPI自动化异常检测清华DeepLog: 日志异常检测清华StepWise:指标模式漂移后的准确异常检测故障预测IBM: 磁盘故障预测聚类微软Yading:时序数据聚类...

iwtbs 5255

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

SOFA Weekly | SOFA-Common-Tools 项目发布新版本、Seata、MOSN 相关 QA 整理

SOFA WEEKLY | 每周精选,筛选每周精华问答同步开源进展,欢迎留言互动SOFAStack(ScalableOpenFinancialArchitecture Stack)...

金融级分布式架构 277

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

aiops-handbook与大模型结合:LLM在智能运维中的创新应用与案例

aiops-handbook是AIOps领域的论文、演讲、开源库汇总手册,按照《企业AIOps实施建议白皮书》中的场景分类进行收集和展示。随着大模型技术的飞速发展,LLM在智能运维领域展现出巨大潜力,为AIOps带来了诸多创新应用与实践案例。 ## 大模型在指标监控与分析中的应用案例 ### GPT4TS大模型:时序预测与异常检测的基准之作 清华大学基于GPT2开发的[GPT4TS大模型](h

gitblog_00549的博客 1196

AI 智能运维,重塑大型企业软件运维:从自动化到智能化的进阶实践​

AI 正在重新定义企业软件运维的价值边界,从效率工具升级为业务创新的赋能引擎。面对智能运维的独特挑战,建议企业采取 "工具先行 - 流程重塑 - 能力沉淀" 的三步法:​优先部署 OMNITOOL、Manus 等轻量化运维机器人,快速解决日常巡检、工单处理等重复性工作,缓解人员兼职压力,确保响应时效达标;​基于数字员工运行数据优化运维流程,建立 "AI 预处理 - 人工核验 - 知识反哺" 的新型协作机制,重构适合云环境的运维体系​。

www376422613的博客 2364
上一篇: SOFA Weekly | sofa-common-tools 发布、组件解析合辑、云原生活动推荐
下一篇: 云原生网络代理 MOSN 的进化之路
SOFAStack
博客等级 码龄7年 747粉丝 389原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值