大数跨境
0
0

致未来·C-Talk | 王宏安:挑战现实的实时智能

致未来·C-Talk | 王宏安:挑战现实的实时智能 大飞机丨北研中心
2020-02-07
2



Real-Time for Real World。



王宏安

中国科学院软件研究所学术委员会 常务副主任

计算机科学国家重点实验室 研究员




什么是实时智能




讲实时智能之前首先明确什么是实时或实时计算。实时计算跟一般性的智能计算是不一样的,它的每个任务是需要在一个确定的截止期之前完成的。比如送外卖的小哥某一天有多个单子要送,其中有几个客户非常苛刻,要求必须12点钟之前到,否则外卖订单就取消了。他就必须要好好地规划自己的线路,做调度,先送谁,然后再送谁,力图保证这几个客户都能在他们所要求的截止期之前送到。这样的规划调度计算就叫实时计算。


实时跟快速有很大的关联,但是实时计算跟快速计算还不一样。当我们说快速计算,更多的是强调吞吐量,也就是在单位时间内你能完成多少个任务。实时计算则是强调一个周期,有一个明确的截止期。比如说一般的控制系统,周期可能是秒级,也就是几秒或者一秒一个周期。所谓一秒一个周期是指所有的任务一秒钟可以完成。有的周期是1毫秒,或者说是1毫秒之内要完成所有任务的计算。


随着应用的场景越来越复杂,人工智能技术的需求开始显现出来。尤其是2012年深度计算出来以后,人们对人工智能越来越关注。人工智能所面临的是解决带有不确定性的问题,也就是,怎么在不确定的环境下,把具有不确定性的问题给解决了。而这一点与实时计算恰好相反。事实上,实时计算希望那个环境是确定的,而且系统行为是可预测的。在这么一个环境下,我们才能保证计算的可预测性和实时性。


但是随着应用环境越来越复杂,很难保证应用所面临的环境都是可以预测的。这时,我们就会面临如何将实时计算与人工智能整合在一起,而且满足复杂应用的实时性的挑战。实时智能的研究就是源于这类应用需求。




实时智能的发展历程与挑战




实时系统起源于上个世纪六十年代到七十年代,当时IBM也是用于跟航空和海军相关的航空系统和飞行模拟系统。随着应用越来越复杂,比如说大家可以看到的火星探路者,它所工作的环境是不确定的,事先谁也不知道火星上会发生什么事情,这个时候我们就希望实时系统具有一定的适应能力。


关于火星探路者在实时计算的领域有个经典的故事。火星探路者到火星上以后,有段时间莫名其妙地待在那儿不工作了,一直在那儿循环运行,什么原因呢?工程师分析发现,实时系统要求每个任务有截止期,截止期越短,优先级越高,高优先级的任务会抢占低优先级的。但是火星探路者发生了一件优先级倒置现象,即低优先级的任务一直在运行,而最高优先级的任务却得不到计算资源。

随着应用越来越复杂,包括大型的工业环境、石油化工、大型电网、航母,应用环境是越来越复杂、动态变化。这要求需要有智能的方法或算法跟实时的性能结合起来,这样就导致了越来越多搞实时研究的人同时研究智能的算法,搞人工智能的人去研究实时调度的算法,即人工智能方面的算法应满足一定时间的约束。

如何把实时的计算与人工智能的方法结合在一起,就成了我们面临的很重要的挑战了,怎么把它结合起来?这里面最大的问题,我们怎么把实时系统要求的可预测性,和人工智能解决的复杂问题所面临的这些不确定性整合在一起。为了解决这个问题,人们通常从两个角度考虑问题:一个是系统的体系结构,另一个是算法

从体系结构上来说,我们很容易想到的方法,就是能不能让人工智能的算法具有一些时间上的约束,也就是说算法必须在一定的截止期之前完成,然后再把这个算法嵌到一个实时系统当中去。所谓体系结构简单地说就是系统的架构。

在这种系统架构下,有一个很经典的人工智能方面的算法,就是“任意时刻”算法。这个算法有一个什么好处呢?一开始能很快生成问题的一个解,这个解不一定很准确,但是不管怎样,它是可行的。如果有更多的时间资源,可以不断使得这个解更准确。这样的话,在实时的环境下,如果我们需要在任何时间终止这个求解过程,这个算法给出的解都是满足这个问题的约束条件的,也就是可行的。这就是一个典型的“任意时刻”算法。这个算法最有代表性的特点,可以在任何的时间终止。

然而,这个算法显然不能解决所有的问题。特别是在工业环境下,因为有很多经验,这些经验可以通过规则来表示。问题是我们怎么把基于这些规则的推理变成一个实时可控的过程?这正是我们近十几年时间一直在做的事情。怎么做到的呢?实际上就是把每条规则看成一个事件,通过事件把规则的条件和动作整合在一起,构建一个子图。这样,当我们把若干条规则放在一个图上时,就形成一个更大的图。规则本身是有截止期的,然后我们又从这些规则的图里面,生成一些满足时间约束的任务。这样的话,图中的每个节点就可能是一个任务,这些任务都有一个相对的截止期,即端到端的截止期。由于这些任务本身的截止期是没有的。这样的话,我们就面临一个问题,怎么去给这些节点赋上一个截止期,使得总体的端到端的截止期得到满足。

为了做到这一点,我们提出了实时规则推理调度的方法。这个方法的核心,就是把高优先级任务优先地分配一些资源,之后我们再考虑一些次要的、优先级较低的任务。当计算资源不足时将最低优先级任务排除在这个系统外,只有优先级高的任务得到计算资源的满足,优先进行运行。当计算资源有富余的时候,再允许其他的任务进入到这个系统当中来,就是这样一个基本的思想。

目前我们这个算法在国际上属于最好的算法,基本上接近于最优。红线是我们的算法,最优的算法就是那个浅蓝色的线。




实时智能平台




基于我们过去在算法上的工作,我们设计开发了实时智能监控平台。这个监控平台的核心主要是三大块:一块是实时主动规则推理,可支持事件约束;其次是复杂事件处理的引擎,怎么把复杂事件通过规则有效的梳理,变成一个规则化的事件流;最后是实时数据库系统。


实际上,实时数据库系统在我们最初设计开发的时候,国内这个领域还是一片空白,国外的产品进来要价非常高。在上世纪90年代末,基本上都是百万元的量级。经过这么多年的努力,我们已经有了完全自主可控的实时数据库系统,其每一行代码都是我们这么多年辛苦编写出来的。

实时数据库系统有一个核心的问题,要保证与现实世界的一致性。所谓一致性是指两方面的一致性:一个是绝对的一致性,即现实世界什么样,我们的系统中所描述的现实世界就是什么样,两者是一致的,没有矛盾;另外一个一致性是指,现实世界当中各个传感器之间,他们有相对于时序的一致关系,在我们的系统当中,这种关系也要持续保持下来。

另外,这个系统是微内核的。微内核有一个好处,就是可以裁减,根据实际的需要,比如用在飞机上,空间比较小,可以小一点。如果用在大型的炼油厂,可能有几万、甚至十几万的传感器,规模就要大一点。在系统设计时,我们采用了多线程,每个线程做专业的任务,一般来说系统效率会更高一些。还有一个,我们怎样实现实时的数据采集,特别是当传感器来的数据很多,频率还不同,比如1K赫兹,甚至是微秒级的时候,怎么快速把这些数据采集下来,放在内存里面,这也是一个我们面临很大的挑战。

为此,我们提出了一个新的方法,其不一样的地方在于我们不是调度任务,而是通过切换内存块来实现数据采集,使得采集的速度非常快。这个有点像我们拿自来水龙头接水,我们不再是龙头移动,为每个桶注水,而是移动这个桶,这样切换的时间更短一些。

另外,基于前面说的算法,设计开发了一个工具,并把这个工具用于实时智能监控平台里面。这个工具现在是每秒钟可以处理5万个事件,可以触发2万条规则,这个在国内上都是属于最快的了。目前类似的开源软件,如DROOLS在1万条左右规则的时候,就已经不行了。

还有就是复杂事件的处理上,我们知道一个大的系统里面,可能随时会冒出各种各样的事件。这些事件很杂乱,有的事件要求及时的处理,有的事件可能不那么着急,稍微晚一点处理问题不是很大。我们怎么能够把那些关键的事件找到,不那么关键的事件排出去,这也是很重要的问题,这样才能保证系统处理起来更有效。为此,我们开发实现了一个事件描述语言,采用这个语言对事件进行处理,最后得到一些规则化的事件流,这些事件流具有不同的优先级,优先级高的形成一个事件流;优先级低的,又形成一个事件流。对于不同的事件流,我们再进行相应的处理。这些事件可能来自于数据触发;也有可能来自于现场操作,比如说向左转、向右转,类似地也有很多其他的操作;当然也有可能来自于传感器的数据刷新。对于不同原因产生的事件,根据前面提到的方法,我们梳理成不同优先级的事件流,进行相应的处理。

基于上面的这些技术,我们开发了这个实时数据库与监控系统,我们的开发过程可谓是漫漫长路。我们从1998年开始做这件事,当时做这件事的时候,国外的实时数据库系统软件要一百万美元左右。另外在实时智能监控这个领域,美国Gensymn公司的G2对国内还是禁运,不是随便就可以买到的。到2006年,我们用了将近八年的时间,才有一个可适用的版本。又过了五六年,我们才实现大规模的应用,应用在大中规模的火力发电和石油化工企业。

随后,我们也意识到,需要在飞机和船舶里面要做一个更小的、性能更快的、更高的嵌入式实时数据库系统,这就是我们后来做的嵌入式的实时数据库系统。去年我们也交付第三方测试,目前我们这个数据库系统已应用在石油化工、钢铁领域,全国各个地方都有它的影子了,主要是在化工、钢铁、电网,还有航母上都有一些应用。




典型应用




石化智能报警


一个典型的炼油化工企业旨在将石油变成汽油、柴油等诸如此类的产品,整个过程涉及到物理反应和化学反应,尤其是化学反应,是很危险的。整个加工过程必须进行实时监控。生产加工过程中,没有监控是很危险的,但是如果监控过程当中的报警太多,那也是很可怕的。一个典型的炼油化工企业一周的报警多达20多万条。这样的话,要都是人来处理,就容易掉入报警堆里去了,很难及时找到哪些报警是真正要处理的。这样的话,常常会导致危险事故的发生。应用我们这个平台,可以对报警事件进行梳理分析。结果发现大多数报警事件都是派生出来的。只有一万条左右的规则需要关注和及时处理,90%多的规则都是可忽略或删除的。然而,在忽略或删除这些派生报警时,我们面临着一个严峻的挑战,我们不能删除真正的异常报警,这是很重要的。如果有一个真正的异常报警被忽视或被删除,那对这个企业生产过程的安全管理来说是很危险的。不过,我们这个平台技术能够保证,所删除的全部都是派生的报警,没有一个真正的报警被删掉了。实践应用表明这个技术的效果非常不错。

催化裂化装置的汽油干点分析


炼油化工过程会涉及不少蒸馏过程,这有点像煮饭过程。其中的难点之一是我们怎么知道这个饭的硬度合适,既不稀也不干,这样煮出来的饭才好吃。炼油化工蒸馏过程也面临同样的问题,人们没法用传感器来直接测量蒸馏过程工况,但是我们利用历史数据挖掘分析,发现这个工况跟13个传感器的参数有关,我们再把这13个传感器参数之间的逻辑关系找到,最后得出有关工况状态的一个表达式。由此测算出来的结果,与实验室的化验结果相比,98%的情况下,相差2度。因为通常石油化工领域温度是200多度,2度偏差是很小的。另一方面,测算是实时计算的,而实验室分析要4个小时以后才能给出结果。4小时以后才出来,那时工况状态已经变了。另外,我们可以做异常工况的评估分析,一旦出现异常,让指定的工程师进行处理,实现生产过程的持续稳定。

异常工况分析


传统上我们的监控系统主要是针对单个设备,随着分布式实时智能监控平台系统的上线应用,可以对整个全流程的,所有的装备,及其动态的行为都进行实时监控。并在此基础上,进行协同的分析,使得所有的设备和过程之间协同,达到一个整体的优化,实现整个系统保持在较为平稳的状态,即一体化的运维。




发展趋势




目前我们主要是通过对人工智能算法进行改造以满足实时系统的时间约束。未来我们更多的将是面向以人为中心的CPS系统。如何将人工智能和实时技术融合,并利用人类所具有的特殊能力应对大型而又复杂的问题。大家所熟悉的机器学习可能在那个时候更多的将是机器的实时学习,也就是在整个决策及其执行过程中进行学习,这将会越来越重要。我个人认为,未来会有更多的人和机器融合在一起的系统,会有在天上的,会有在水下的,会有在陆地上的混合智能系统,与人们合作。


最后送大家一句话:“Real-Time for Real World”


(左)  张志雄  致未来·C-Talk演讲大会 总导演

(右)王宏安  中国科学院软件研究所学术委员会 常务副主任

计算机科学国家重点实验室 研究员


热文推荐

点击图片直达原文


版权说明:未经授权严禁任何形式的媒体转载和摘编,并且严禁转载至微信以外的平台!




长按扫码关注

 “致未来·C-Talk演讲大会”由中国商飞北研中心、科学出版社和北京航空航天大学联合出品,赞助机构为上海瀚海检测技术股份有限公司。通过定期组织主题演讲活动,聚焦航空产业前沿话题,分享新知识、新信息和新观点,激发创造灵感,促进跨界融合,引领创新发展。

    

【声明】内容源于网络
0
0
大飞机丨北研中心
中国商用飞机有限责任公司北京民用飞机技术研究中心主办,及时发布北研中心重要资讯及民机行业最新动态。
内容 583
粉丝 0
大飞机丨北研中心 中国商用飞机有限责任公司北京民用飞机技术研究中心主办,及时发布北研中心重要资讯及民机行业最新动态。
总阅读49
粉丝0
内容583