众所周知,近年来微软Azure云计算平台一直保持着强劲的增长势头。在上一个财季的财报中,微软CEO Satya Nadella表示,数字技术是通涨经济中的去通涨之力,不论是大企业还是小企业,都能通过构建自己的技术强度而提高生产力,以及让自己的产品和服务被更广泛的采用。端到端交付数字平台和工具的微软云,正帮助企业和组织在当前的转型和巨变中稳步前进。在上一个财季,微软云贡献了207亿美元的营收,年增长36%。而就在新一季财报即将发布的近期,微软又宣布斥资687亿美元收购动视暴雪,收购后的微软将成为世界第三大游戏公司,数以亿计的用户将在微软云上获得更加沉浸的游戏和元宇宙体验,而微软也将更加丰富的内容,通过微软云带给所有人——这无疑将进一步加大微软云的运维难度。如今,微软云有上千万台物理服务器,部署在世界五大洲上千个数据中心,运行着上百万客户的应用和服务,其中包括95%以上的财富500强企业的服务,每个月都有新的硬件上线使用,几乎每天甚至每分钟都有新的软件更新部署到云上,微软云的复杂程度已经远远超出人类的理解范围。那么在微软云的背后,又有怎样的黑科技呢?近日,微软亚洲研究院常务副院长、微软杰出首席科学家张冬梅和微软亚洲研究院首席研究员林庆维,以及微软云计算与人工智能事业部首席数据科学家党映农,联袂向外界披露了微软云背后的黑科技——人工智能运维AIOps。
软件工业的数字化转型
近15年来的云计算迅猛发展,为人工智能运维AIOps提供了广阔的发展空间。所谓人工智能运维AIOps就是以大数据和人工智能的方式,替代原先人工对数据中心的运维方式。在公有云数据中心出现之前,都是企业自建数据中心,相比来说都是中小型数据中心而且位置分散,出现的故障数量不高、故障类型也难以全面,因此很难形成用于人工智能分析的大数据。而公有云的出现,改变了一切。
(微软亚洲研究院常务副院长、微软杰出首席科学家张冬梅)
在数字经济大发展的前提下,公有云也获得了大发展,以微软云为代表的公有云,出现了全球化的超级云,例如微软云就有上千万台服务器,因此在微软云一个云平台上就有可能获得全局、全量、全面的数据中心运维大数据。其次,由于公有云成为了全社会的基础设施,全社会对于公有云运营商的要求也水涨船高,这就倒逼公有云运营商必须提高数据中心运维的自动化和智能化水平,从人工方式切换到更加稳定、高效而又安全的人工智能运维AIOps。张冬梅介绍,微软亚洲研究院在人工智能运维AIOps研究方向的起步非常早。可以追溯到2008年到2009年(2008年微软云Azure上线),那个时候微软亚洲研究院成立了Software Analytics Group(软件分析组),希望从数据驱动的角度对软件领域进行研究,在软件场景下最重要的问题包括运行系统问题、用户体验问题、开发效率问题等,这与今天的AIOps非常类似。云计算成为了过去10到15年内软件和软件工业的范式转变动因和平台。当云计算系统变成了软件运行的主要形态时,Software Analytics自然地就会把研究焦点集中到云计算系统。随着软件从以前面向单机和服务器到面向超大规模云数据中心的延展,软件工程面临着深刻变革,从之前主要关注程序员,向关注系统、用户和开发者的扩展——这是因为在公有云中的软件,最终将运行起来变成系统,从而对外提供云服务,同时,作为系统还要关心用户体验和开发部署效率,这是三位一体、不可或缺的模式。总结下来,云计算不仅是企业数据中心的转型,更推动了软件和软件工业的数字化转型——软件的设计、开发、运维等由人工方式转向数据和人工智能驱动,由此带来了人工智能运维AIOps的可行性和可能性。而微软亚洲研究院自十多年前开始的Software Analytics研究,保障了今天微软云的稳定、可靠、安全等特性,进而帮助奠定了微软云全球第二大超级云的地位,以及业绩不断上涨的强势局面。
AIOps的三大方向
目前,业界对于AIOps的研究以及实践,仍处于初级阶段。对比自动驾驶的五个等级,AIOps可以说是数据中心的“自动驾驶”,也可以分为L0-L5等级,其中L5对应于完全“无人驾驶”的最高级,可以说是AIOps的终极目标。当前,市场有不少AIOps的供应商,已经可以部分地实现从L0-L4,但在追求L5方面,仍是一个十分前沿的领域。
(微软亚洲研究院首席研究员林庆维)
对于微软云这样一个超级庞大而复杂的分布式系统来说,L5是终极追求目标,而且L5这样的终极目标也只有微软云这样的全球化超级公有云才有可能实现。张冬梅介绍,AIOps通过创新的人工智能和机器学习技术,有效且高效地设计、构建和运营大规模复杂的云服务。从微软亚洲研究院的角度,AIOps主要有三大研究方向:系统、用户与开发者。首先是系统服务,即AI for System。云服务由部署了软件的数据中心系统为客户提供服务,软件必须要在云数据中心上运行起来,与云数据中心一起组成可运行的系统,才能对外提供云服务。而从可运行的系统角度来看,系统的性能、稳定性、安全性等各方面问题,都是需要研究的对象。其次是客户,即AI for Customer。与互联网服务不同的是,云服务不仅服务于个人,更服务于企业,既然是为用户服务,一定要注重用户体验。即使系统再稳定,但用户体验不好的话,大家也不会选择云服务。第三是开发者,即AI for DevOps,主要是面向开发人员和运维人员,用智能技术提高他们的生产率,让日常工作更顺畅。在系统服务方面,经常遇到的场景有两个:异常行为检测,也就是当系统出现问题了,必须要能够检测出来;预警,即在问题出现之前预测可能要出现的问题。对于这两个场景,主要基于数据和机器学习的方法,再结合专业领域知识,就能够进行比较好地判断和预判。在用户方面,一个场景就是加强与用户的互动,从而让用户获得很好的体验。例如,当用户遇到问题的时候,经常会联系云服务的客服人员,如果事先能够为用户提供一些工具,让用户自动获得云上服务的构建情况以及到底出现了什么问题,当与客服人员沟通的时候,客服人员也能第一时间掌握具体情况,双方在同等知识层面上交流,这样才能更好地帮助用户。在开发和运维方面,主要是帮助开发或运维人员更好完成诸如CI/CD持续集成和持续部署等工作。而当出现了问题,一方面要快速找到解决办法,让云服务尽快地回到正常状态,但系统恢复正常并不等于根本性解决问题。很多时候,因为系统非常复杂,要花很多时间去研究、发现和调试,才能找到根因。由于日志量非常庞大,就需要通过智能的方法,帮助开发人员尽快高效、准确地完成诊断。除了面向系统、用户和开发者外,AIOps需要解决的问题类型方面,又可以分为检测、诊断、预测与优化等四大方面。在每一个问题方面,都有很多挑战以及多个解决问题和挑战的细分研究领域。归根结底,云平台非常复杂,不仅规模大而且为分布式架构,因此AIOps是一个需要长期投入的研究领域。
微软云背后的黑科技
对于类似微软云这样的大规模高度复杂并承载大量客户应用的云计算系统,很难运用传统的非智能的软件开发和运维技术进行高效地开发、部署、运营和管理。微软云计算与人工智能事业部首席数据科学家党映农介绍,早在五六年前,微软云计算部门的工程团队就深切意识到了实施智能运维的巨大必要性和迫切性,开始建立专门的数据科学家团队,并且与微软研究院深度战略合作,进行智能运维方面的研发以及部署工作。
(微软云计算与人工智能事业部首席数据科学家党映农)
通过过去几年和微软研究院的深度合作,以及微软云工程师们的不懈努力,今天微软云已经在智能运维方面积累了不少重要的技术创新,包括云服务系统的智能化和管理自动化、云开发和部署的智能化,以及智能化客户响应等等。具体来讲,人工智能和机器学习技术已经深度集成到微软云基础设施的管理软件中,包括智能监控、智能预测、智能修复等等。党映农强调,自动化和智能化一起推进,一方面使得云服务的可用性、可靠性以及效率得到提升,另一方面使得云服务运行的自主性得到提高,需要进行人工维护的场景不断减少,维护代价不断降低。而机器学习技术也极大改善并增强了微软云的开发和运行维护解决方案的功能,比如像智能测试、智能诊断、智能部署等等,大幅提高了开发和运营工程师的效率。
以常见的硬盘故障为例。林庆维介绍,硬件问题是虚拟机宕机的原因之一,而硬盘故障是造成硬件问题的主要原因之一。为此,工程师们希望在出现故障之前,能更早地预测出故障,然后采取措施将用户的虚拟机迁移到其它机器上,或是通过软启动的方式等解决问题,从而让用户不受影响。然而,在硬盘故障预测中,大规模复杂的云计算平台上故障磁盘与健康磁盘的比例可能有3: 10,000,这样极度不平衡的正负样本为传统的机器学习预测带来了极大的挑战。此外,在硬盘彻底无法使用之前,其上层应用已经受到影响,因此单靠硬盘自身数据是无法做到即时预测的。
解决硬盘故障,就遇到了AIOps研究中的一大难题,这就是小数据样本。那么,微软亚洲研究院的研究员又是怎么解决问题的呢?首先,不能光看硬件本身的数据,而要将硬件相关的上下游数据都连在一起看问题,这样就极大扩展了可用数据。例如,远在硬盘出现故障前,可能硬件之上运行的虚拟机性能就已经受到了影响,这时就可以通过监测虚拟机性能来提前判断是否硬盘将要出现故障;另外,硬盘基本上都放置在同一个磁盘阵列中间,如果主板电压不太稳定,当一个硬盘坏掉之后,可能同时影响到其它硬盘,或者工作负载也会受到影响,因此把邻近的硬盘当作一个整体,也可以很好的进行预测。
基于上述思路,微软亚洲研究院提出了邻域-时间注意力模型(NTAM),包括邻域感知组件、时间组件、决策组件等,在时间和空间上都能够捕捉更多信息,让模型预测能力更强。通过大量的数据实验,与过去10年到20年最前沿期刊或者会议上的论文方法进行比较,微软亚洲研究院提出的模型预测能力从精确度和召回率方面都有更佳效果。
在大规模服务故障预测方面,为了最大程度避免大规模服务中断 (outage),减少服务停机时间,确保云服务的高可用性,微软亚洲研究院开发了一种智能的大规模中断预警机制 AirAlert,可以在云服务大规模中断发生前预测中断的发生。AirAlert 收集整个云系统中的所有系统监控信号,检测监控信号之间的依赖性,并动态预测整个云系统中任何地方发生的大规模中断,然后使用一种叫做鲁棒梯度提升树(robust gradient boosting tree)的技术,预测潜在的大规模中断。研究团队在微软云系统收集了超过1年的服务中断数据,并在数据集上验证了该方法的有效性。
在系统实际运行中时而会发生某些系统故障,导致系统服务质量下降甚至服务中断,通常称为服务事故(Service Incident)。云服务事故往往会带来巨大的经济损失,并且严重损害公司的商业形象。过去几年,微软亚洲研究院采用软件解析的方法来解决在线系统中的事故管理问题,开发了一个系统云服务分析工作室(SAS)来帮助软件维护人员和开发人员迅速处理、分析海量的系统监控数据,提高事故管理的效率和响应速度。SAS在2011年6月被微软某在线产品部门所采用,并安装在全球的数据中心,用于大规模在线服务产品的事故管理。通过分析半年的SAS使用记录发现,工程师在处理大约86%的服务事故中使用了SAS,并且SAS能够为其中约76%的服务事故处理提供帮助。
微软亚洲研究院长期深耕数据智能领域,利用大规模数据挖掘、机器学习和人工智能技术对纷繁复杂的运维大数据进行实时分析,为系统维护提供有效的决策方案。如今,微软亚洲研究院的研究成果已经应用到了微软Skype、OneDrive、Office 365、Azure等诸多在线服务中,成为保障微软云和在线服务高质量运行背后的黑科技。未来,微软亚洲研究院也希望打造更加通用化的AIOps技术,帮助更多的用户以及业界提升云服务的整体运维水平,夯实云计算作为新型社会基础设施的“地基”。