AIOPS的莫拉维克悖论
莫拉维克的悖论是人工智能和机器人研究人员观察到,与传统假设相反,推理需要很少的计算,但感觉运动和感知技能需要大量的计算资源。该原则由Hans Moravec、Rodney Brooks、Marvin Minsky等人在 1980 年代阐明。莫拉维克在 1988 年写道,“让计算机在智力测试或下棋时表现出成人水平的表现相对容易,而在感知和移动性方面,很难或不可能让计算机具备一岁儿童的技能”莫拉维克的问题是那个时代算力不足,数据采集能力不足而导致的,大家可以发现,在近1年的人工智能大潮中,莫拉维克认为很难得问题,现在解决得很好了,比如自动驾驶得感知能力和移动性方面都已经达到了一个接近实用的程度,仿人机器人也在现代人工智能加持下越来越强大。莫拉维克的时代,人工智能是以知识为驱动的,而现今的人工智能浪潮是以数据为驱动的。这两个时代因为算力不同,数据获取与处理的能力不同,因此研究重点是不同的。正是如此,在解决不同的问题方面表现出了截然不同的效果。基于知识的AI,能做很复杂的推理,不过对算力的要求相对较少,因为人们把专家的知识转化成了AI的能力,不需要从混沌中通过计算来分析一切。而数据驱动的AI则不同,它只需要很少的专家知识,甚至有些情况下完全不需要专家知识,通过足够的数据样本,经过强大的算力来获得分析结果。我们在为D-SMART构建AIOPS能力的时候,也做过不同的尝试,不过后我们选择了以知识驱动(知识图谱为核心)的AI算法为主,数据计算算法为辅的方案。因为我们发现纯算法的效果面对数据库这样的复杂运行环境来说能力偏弱,无法达到帮助运维人员分析定位问题的水平。再加上我们的研发团队中不乏各种数据库的专家,通过我们的专家经验来构建自动化、智能化系统,可能效果更高一些。我和很多做AIOPS的同行都交流过这方面的问题,在AIOPS方面,基于日志分析的全链路问题发现和定位方面成果十分突出。通过对日志以及相关数据的异常检测,大致定位问题在那个环节,在哪个IT组件上,这个工作的效果还不错。只不过再往下定位,找到解决问题的方法,就相对困难了。这种分析需要用户能够比较全面的采集各种业务、系统日志,并且在应用程序里业务日志的输出也比较规范,否则效果就要打折扣了。这种能力肯定会帮助一些用户解决一些复杂系统的混沌问题。不过用户肯定不满足于找到出问题的大致位置和大致方向,希望能够进一步去分析问题出在什么地方。比如如果是数据库的问题,那么到底数据库的问题到底在什么地方。遗憾的是,这时候算法的能力就十分有限了。为什么会这样呢?这实际上涉及到一个自动化系统中的另外一个悖论。AIOPS系统通过易于操作和自动纠正错误的能力来应对系统异常,当AIOPS系统高效运行时,人工参与变得更加重要且不那么频繁。高效的智能化分析使人变得更加重要,而不是更不重要,这是一个悖论。数据驱动的AIOPS算法的普适性不如以知识驱动的AIOPS算法,在每个用户那边都需要进行重新建模,而建模过程中无论使用了什么样的无监督算法,想要达到的效果还是不理想的。在此过程中,必须要有各类的运维专家参与。你要构建数据库的智能化运维能力,就需要在现场有数据库的专家参与其中。而实际上,在实时过程中,顶多是用户的数据库DBA能够参与工作,能够起决定性作用的专家一般都没有参与其中,因此其终的效果就存在问题了。在AIOPS的实践中,在宏观的问题发现上通过以数据为驱动的算法发现宏观的问题,而在微观方面,通过专家知识构建的知识图谱来实现更精细的定位,应该是一种比较好的解决这个悖论问题的方法。以前有朋友问我,老白,你们为什么不做全链路异常检测?我说我们目前的研发投入,仅仅能够把微观的一些工作做好,争取能够在用户现场利用系统替代大部分的人工分析,而宏观分析涉及到更广的知识,需要更的算法,并且这些东西很难做成一个开箱即用的系统,以我们目前的能力,是无法完成的。我们团队的优势是丰富的专家知识,而不是高水平的算法大师,因此能把D-SMART做好就已经很费解了。