AI与系统软件的深度融合研究进展与趋势(综述)

原创: 系统软件专委会 中国计算机学会


CCF于2018年10月出版了新一期《中国计算机科学技术发展报告》,对AI与系统软件的深度融合等10个方向的研究进展做了详细的介绍和讨论。我们将分期分享报告中的精彩内容。请加入CCF,登录CCF数字图书馆下载和浏览。


1  引言

人工智能是计算机科学中一个重要的领域,它关注如何让计算机拥有“认知”与“思考”的能力,像人一样智能地运行。作为人工智能研究的一部分,机器学习通过直接从历史数据与经验中学习,而非靠预先制定规则,让计算机完成复杂的处理,智能地执行特定的任务。

近年来,随着大数据的到来、计算能力的提高以及算法上的突破,机器学习不仅在学术界产生突破性研究成果,同时在工业界被广泛应用。重新审视过去在简单神经网络上的研究,受到神经科学的启发,研究人员将人工神经网络拓展到数百层,这种称为深度学习的方法让计算机拥有了复杂的处理能力。2012年,Alex Krizhevsky、Ilya Sutskever与Geoffrey Hinton等人在ImageNet图像识别竞赛上基于深度学习算法取得了冠军,引领了深度学习的研究热潮。最近,来自谷歌DeepMind的AlphaGo系统击败世界排名第一的人类围棋选手;谷歌、百度等团队的无人驾驶汽车也纷纷开始进行路测。与此同时,机器学习技术快速在工业界落地——图像识别系统能快速找出照片中用户的好友,自然语言处理技术让语音助手更好地理解用户的意图,推荐系统为用户提供全面的使用体验信息……机器学习正在给各个领域带来巨大的变更。在这样的背景下,人工智能与系统软件融合发展成为研究人员需要探索的问题。

一方面,人工智能,特别是机器学习与深度学习的发展,要求强大的系统软件支撑。当前的机器学习方法需要依靠强大的计算能力来处理大量的数据,还需要设计良好的机器学习系统将机器学习成果高效投入应用。研究人员不仅需要提高单台计算机计算能力,还需要利用分布式计算来完成大规模的机器学习任务。研究人员需要从软件层面优化机器学习系统,还需要将不断涌现的新硬件与机器学习系统融合。研究人员需要考虑机器学习应用的安全性与可靠性,还需要使得系统有效地保护数据与隐私信息。此外,机器学习技术的普及对云计算、虚拟化与物联网等领域亦产生许多影响。

另一方面,系统软件也能利用人工智能获得更好的表现。系统软件中使用大量的人工制定的规则与启发式算法以保证在短时间内系统能够做出较优的决策。如资源调度与分配任务,在时间序列中如何分配有限的资源来保证资源的利用率与对资源需求方的公平性;如故障判断任务,在有限的信息下如何判断系统组件是发生故障无法工作还是暂时性无相应;如恶意攻击防御任务,在来自各方请求里如何判断是否存在恶意攻击以及如何处理攻击。随着处理能力与处理速度的提高,研究人员试图利用机器学习方法,从性能、安全性与稳定性等方面提高系统软件的表现。机器学习方法正展现出在系统软件中巨大的研究前景与应用潜力。

本学科发展报告提议对近期Systems for AI与AI for Systems两个方面研究的进展进行综述,总结分析当前技术挑战,并展望未来的发展前景。


2  Systems for AI:机器学习系统的支撑、拓展与优化技术

机器学习系统为机器学习模型训练、推断以及部署等任务提供支持。本节将分别介绍当前主流的通用机器学习系统、主流深度学习框架系统、及机器学习流式实时扩展技术、针对特定任务定制的机器学习系统、机器学习系统自动化构建技术、新兴机器学习系统以及机器学习系统优化技术等。

扫描二维码关注公众号,回复: 4837690 查看本文章

2.1  主流机器学习系统的分类与介绍

为了提供有效的大数据机器学习和数据分析手段,近几年来业界和学术界尝试多种途径和方法,在不同的并行计算模型和平台中,处理实际的数据分析和挖掘问题。

较早出现以及现有的一些大数据机器学习算法和系统大多采用的是较为底层的紧耦合、定制化构建方法。这些算法和系统大都针对特定的应用,选择特定的平台和模型,针对特定的机器学习模型和特定的计算模式,从串行到分布并行化的算法和原型,自底层向上进行紧耦合和定制化的开发和优化。尽管这样实现可以最大化利用系统资源达到最佳的性能,但是这种底层的紧耦合定制化实现方法,将学习和系统混杂在一起,实现难度大、算法和系统也难以调试和维护[1][2]。

从大数据机器学习系统特征来看,一个良好设计的大数据机器学习系统应当考虑高层的系统层抽象,向上为程序员提供易于使用的高层机器学习算法编程接口,向下基于现有的通用化大数据处理平台提供大规模数据的分布和并行化计算能力。近年来,已经开始出现面向各种高层编程计算和系统抽象来设计大数据机器学习系统的研究工作。

目前的大数据机器学习系统在高层编程计算和系统抽象上大致可分为三种主要的编程计算和系统抽象方法,分别是基于矩阵/数据框模型的抽象、基于图模型的抽象、以及基于参数模型的抽象。

实际的系统也可能会是一种兼有上述多种类型的混合系统。此外,也有不少系统可以从并行模式角度来区分,分为数据并行和模型并行两种方式,且一些系统只提供数据并行方式,另一些系统会同时提供数据并行和模型并行两种方式。 

本文选取了具有代表性的分布式机器学习系统进行对比分析,下表对几个系统并行模式和易用性进行了对比,后面会按系统分别介绍。

表 1 主流机器学习系统对比

2.2  主流深度学习框架系统介绍

主流的机器学习系统并不能为深度神经网络模型的构建和训练提供很好的支持,因此随着深度学习技术的发展和流行,涌现了一批流行的深度学习框架软件系统。很多研究者[192]都对这些框架进行了对比分析,本文只选取代表性的几个框架进行对比分析。

Caffe是经典的深度学习框架,为单机版系统。Caffe采用C++/CUDA架构,支持命令行、Python和MATLAB接口,可以在CPU和GPU直接无缝切换。Caffe是一个深度卷积神经网络的学习框架,使用Caffe可以比较方便地进行CNN模型的训练和测试,不适合其他类型模型。Caffe提供了prototxt语法支持构造神经网络,官方提供了大量样例可以参考。Caffe作为C++语言以及配合了CUDA开发的框架,具有较高训练效率。目前开发者已经对Caffe进行了大规模重构,新版本Caffe 2则支持了分布式训练及很多新的特性。

TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理,Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow为张量从流图的一端流动到另一端计算过程。TensorFlow是将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的系统。TensorFlow一大亮点是支持异构设备分布式计算,它能够在各个平台上自动运行模型,从手机、单个CPU / GPU到成百上千GPU卡组成的分布式系统。 TensorFlow支持CNN、RNN和LSTM等多种算法。TensorFlow提供的 TensorBoard 可视化工具对训练模型十分有帮助。TensorFlow具有Google强大技术支持,也具有广泛的社区,目前是工业和学术研究最常用的框架。

MXNet是一个新型的深度学习框架,综合了其他几个框架的优点进行设计,是亚马逊主推的深度学习框架。现有的系统大部分采用声明式或命令式两种编程模式的一种,MXNet尝试将两种模式无缝的结合起来。在命令式编程上MXNet提供张量运算,而声明式编程中MXNet支持符号表达式。用户可以自由的混合它们来快速实现自己的想法。MXNet资源和计算的调度、内存分配资源管理、数据的表示、计算优化等都做了优化设计,原生支持分布式训练的。

Keras和Pytorch是易用性上十分出色的框架。Keras 提供了简单易用的 API 接口,特别适合初学者入门。其后端采用 TensorFlow、CNTK,以及Theano,Keras 几乎已经成了 Python 神经网络的接口标准。Pytorch提供了基于Python的动态深度学习库,语法类似numpy,非常高效;基于Pytorch开发深度学习算法,方便快速,适合CPU和GPU计算。Pytorch支持动态构建神经网络结构易于调试和推导也受到广泛关注。

深度学习框架流行的主要因素包括:易用性,是否提供简单易用的开发接口;高性能,是否支持可扩展分布式训练,是否可以达到更快的性能;社区支持,是否具有大规模用户和社区贡献者,包括知名企业的支持。目前深度学习框架在这些方面还都有很大改进空间,并没有形成一个类似Hadoop系统一样的事实上的标准系统。对于系统软件研究者,也存在大量开放性的问题。

2.3  新兴机器学习系统

随着AI技术的发展,在很多场景下已有的系统平台无法满足系统性能和易于开发的需要,比如在动态环境下对增强学习的支持,对高吞吐量端到端学习的支持,对机器学习服务高吞吐量的支持,对云环境下机器学习的支持等。因此研究界和企业界最近也推出了一些新型机器学习框架,开拓了机器学习系统新的发展方向。

(1) Ray

机器学习应用需要更多地在动态环境下运行,响应环境中的变化,并且采用一系列的动作来完成既定目标。这些要求自然地建立在增强学习(Reinforcement Learning,RL)范式中,即在不确定的环境中连续学习。因此,需要一个能支持异质和动态计算图,同时以毫秒级延迟每秒处理数以百万计任务的计算框架。而目前的计算框架或是无法达到普通RL应用的延迟要求(MapReduce、Apache Spark、CIEL),或是使用静态计算图(TensorFlow、Naiad、MPI、Canary)。

为了在支持动态计算图的同时满足严格的性能要求,UC Berkeley RISELab提出Ray系统。Ray采取一种新的可横向扩展的分布式结构,其结构由两部分组成:application 层和 system 层。Application 层实现API和计算模型,执行分布式计算任务。System 层负责任务调度和数据管理,来满足性能和容错方面的要求[23]。

(2) Keystone ML

现代的高级分析应用程序利用机器学习技术,包含领域特定和通用处理的多个步骤,并且具有高的资源需求。UC Berkeley AMPLab在Apache Spark上建立的开源软件,KeystoneML,旨在简化大规模、端到端、机器学习管道的建设。它捕获并优化端到端大型机器学习应用程序,以便在具有高级API的分布式环境中进行高吞吐量培训。与现有系统相比,这种方法具有更高的易用性和更高的性能,用于大规模学习[24]。

(3) Clipper 

机器学习正在越来越多的应用程序中进行部署,这些应用程序需要在大量查询负载下进行实时、准确和可靠的预测。但是,大多数机器学习框架和系统仅针对模型训练而非部署。

2017年UC Berkeley AMPLab提出了Clipper,这是第一个通用的低延迟预测服务系统。Clipper介绍了最终用户应用程序和各种机器学习框架,它引入了模块化架构,以简化跨框架的模型部署。此外,通过引入缓存、批处理和自适应模型选择技术,Clipper可以减少预测延迟并提高预测吞吐量、准确性和健壮性,而无需修改底层机器学习框架[25]。

(4) 珠算(生成模型软件库)

珠算是一个生成模型的 Python 库[196] ,构建于 TensorFlow 之上,由清华大学朱军团队发布。珠算不像现有的主要是为监督学习而设计的深度学习库,它是一种扎根于贝叶斯推断并支持多种生成模型的软件库。珠算区别于其他平台的一个很大的特点,即可以深度地做贝叶斯推断,因此,可以很有效地支持深度生成模型。珠算平台可以在 GPU 上训练神经网络,同时可以在上面做概率建模和概率推断,带来好处有:可以利用无监督数据、可以做小样本学习、可以做不确定性的推理和决策、可以生成新的样本等等。

(5) Visual Studio Tools for AI (微软Visual Studio IDE的扩展)

微软已经发布了其 Visual Studio Tools for AI 的测试版本,这是微软 Visual Studio 2017 IDE 的扩展,可以让开发人员和数据科学家将深度学习模型嵌入到应用程序中。Visual Studio Tools for AI 工具同时支持 Microsoft 的 Cognitive Toolkit 和 Google 的 TensorFlow 等深度学习框架”。微软还通过一个称为 Visual Studio Code Tools for AI 的跨平台扩展为其 Visual Studio 代码编辑器提供 AI 支持。此外,微软同时为物联网设备,苹果 CoreML 以及 Azure SQL 提供了全新的深度学习工具。

(6) TensorFlow Probability(概率编程工具)

今年谷歌发布了TensorFlow Probability,一个概率编程工具箱,使机器学习研究人员及相关从业人员可以快速可靠地利用最先进硬件构建复杂模型。该工具支持建立一个数据生成模型,推理其隐藏的过程。支持量化预测数据中的不确定性,而不是预测单个值。TensorFlow Probability继承了TensorFlow的优势,例如自动微分,以及通过多种平台(CPU,GPU和TPU)扩展性能的能力。

(7) Azure Machine Learning(云机器学习开发环境)

基于微软Azure云平台的Azure机器学习(Azure Machine Learning)为数据科学家提供了一个流线型的体验:从只用一个网页浏览器设置,到使用拖放手势和简单的数据流图来设置实验[26]。Machine Learning Studio提供了一个库,其中包括省时省力的样本实验,R和Python包以及像Xbox和Bing等微软业务中的一流算法。Azure的机器学习还支持R和Python的自定义代码,并且支持机器学习应用的分析。

(8) Amazon Machine Learning(云机器学习开发环境)

亚马逊Amazon Web Services推出Amazon Machine Learning(亚马逊机器学习),这是一项全面的托管服务,让任何开发者都能够轻松使用历史数据开发并部署预测模型[27]。这些模型用途广泛,包括检测欺诈、防止用户流失并改进用户支持。Amazon Machine Learning的API和向导能够为开发者提供关于机器学习模型的创建和调试流程的指导,而且Amazon Machine Learning能够与Amazon S3 、Amazon Redshift和Amazon RDS进行集成。 


3  Systems for AI:类脑神经网络计算系统软件

类脑计算指借鉴人脑信息处理模式和生物生理结构的计算理论、体系结构乃至硬件设计的总称。近年来,众多国家纷纷提出脑科学研究和类脑计算相关的大型研究计划。2013年,美国提出了“基于先进创新神经科技的大脑研究(Brain Research through Advancing Innovative Neurotechnologies,BRAIN)”计划,同年,欧盟也提出了“人类大脑工程(Human Brain Project,HBP)”计划。中国也将脑科学与类脑研究列入《“十三五”国家基础研究专项规划》,并开展了为期15年的“脑科学与类脑科学研究”计划。理解大脑的结构与功能是 21 世纪最具挑战性的前沿科学问题,类脑计算则是实现这一目标的重要手段与主要成果之一。

类脑计算目前采用的主要计算模型是脉冲神经网络(spiking neural network,SNN)。SNN又被称为第三代神经网络,在符合生物学特性的神经元和突触模型的基础上,在执行模型中引入了脉冲信号和时序信息。与现有的深度神经网络(deep neural network,DNN)相比,SNN提供了更好的生物真实性,具有达到更高的计算能力与能效的潜力,相应的,构建基于神经形态体系结构的新型计算系统也吸引了越来越多的研究兴趣。已经有一系列试图利用SNN计算潜力的研究工作,其中的代表是神经形态芯片研究,例如TrueNorth,BrainScaleS,SpiNNaker以及国内的天机芯片等。

SNN代表了一类计算模型,其主要计算特征包括异步、事件触发、细粒度并发处理等,因此从计算机系统软件角度来看,需要由相应的SNN描述语言、语言编译/解释器、后端的运行时系统等。具体的,运行时系统可以是软件(比如在传统通用处理器,包括通用图形处理器上的运行时系统,一般就是SNN模拟器),也可以是定制化硬件(神经形态芯片)。而针对后者,因为其会引入硬件特定的约束条件(如计算精度、数据表示精度等等),需要将上层的与具体硬件无关的神经网络转换为符合底层约束的(基本)等价网络。这一转换过程被称之为类脑神经网络编译(区别于上面提到的语言编译)——因其在系统中的位置与作用类似于传统编译器。

本文针对类脑神经网络计算系统,从系统软件角度(包括语言、工具链、运行时系统以及优化等)介绍、比较国内外相关工作,并给出一些趋势分析。同时,基于新型神经形态器件(如忆阻器)的类脑芯片也正成为研究热点,它们对于相关软件会有怎样不同的要求也会在本章相关部分被介绍。

图2  类脑神经网络计算系统结构图


4  AI for Systems:机器学习安全及其在系统安全中的应用

总体而言,AI安全包含两大类研究方向:AI系统本身的安全问题、基于AI的安全技术。前者关心AI系统脆弱性,如寻找对抗样本使AI系统运行出现异常;后者利用AI技术辅助解决现有的安全问题,如漏洞检测等。

4.1  面向AI系统安全的对抗学习技术

随着各种各样机器学习新技术的提出,机器学习新平台的流行,越来越多的开发人员开始通过机器学习拥抱人工智能,随之而来的是人工智能应用的爆发和广大用户受益于人工智能。人工智能特别是机器学习甚至开始被应用在了和安全密切相关的场景,例如人脸识别认证,自动驾驶,大数据风控等。机器学习在这些场景下能提供比人工更加好的识别精准度,节省人工成本,为人类带来便利。但可以想到的是,这些利用了机器学习的应用一旦被攻破,带来的后果也非常严重。

不巧的是,研究人员发现,只要在机器学习模型的输入上加载一点点噪声,机器学习模型的输出就会被改变。这种噪声可以小到人根本无法察觉。并且这种错误的输出并不是因为模型的准度不够高,因为即使是识别准度达到百分之九十九点几的机器学习模型,攻击者也可以百分之一百地生成这种噪声任意控制其输出。

不少研究人员对机器学习技术广泛应用的信心因此受到打击,因为大家担心机器学习会为黑客提供广阔的攻击面,带来严重的后果。例如,掌握对抗样本技术的攻击者可能在未来支持无人驾驶车的道路上涂画噪声,误导无人驾驶车的决策模型,导致车毁人亡的事故。又如,攻击者可能误导银行的风险控制模型,使得大量不良贷款获批,最终导致大量坏账,造成国家金融系统紊乱。  

对抗样本攻击的本质是解一个优化问题,即如何最小化噪声r的模,而保证机器学习模型的输出F(x+r)为攻击者的目标t,并且加上噪声的样本x+r不溢出值域范围。这个问题并没有直接的解析解,然而研究人员普遍利用梯度下降优化的方法得到了很好的较优数值解。

对抗样本攻击的研究现状 对深度学习模型的最新对抗样本攻击已经可以做到对不同的模型,应对不同的噪声衡量指标,以百分之一百的成功率发动攻击。来自加州大学伯克利分校的研究人员在2017年的安全顶级会议IEEE Oakland上发表文章展示了他们提出一组全新的对抗样本解法[101]。他们将上述优化问题的两个限制条件全部转化成优化目标项,使得优化器可以不用考虑限制条件而直接优化目标函数得到最优解。在他们的工作中,输出限制条件被转换成了损失函数,而值域限制被转换成了平滑截断函数包裹的变量。这样一来,当优化器将优化目标项降低到门限值以下时,目标输出限制就自然而然满足了,而值域限制条件因为平滑截断函数的存在而天然满足。这样巧妙构造的目标函数直接导致了公认的检验分类问题MNIST和CIFAR被百分之一百成功率攻破。

对抗样本的防御方案 研究者看到对抗样本攻击的灾难性后果,提出了许多种防御方案,但大多被证明并不有效。最早的防御包括对抗训练,防御蒸馏;最新的防御方案之一为加州大学戴维斯分校和上海科技大学的陈浩教授课题组提出的MagNet。对抗学习的思想为主动构建一个识别输入样本是否为对抗样本的分类器[102]。然而,研究表明攻击者同时误导两个分类器并不比只误导一个难[103],进而证明基于对抗训练是完全无效的。防御蒸馏思想为抹掉分类器内的梯度,导致攻击者无法利用梯度下降优化器求解对抗样本[104]。然而,加州大学伯克利分校的研究人员表明,即使在有防御蒸馏保护的前提下,攻击者照样可以通过转移学习生成有效的对抗样本[101]。陈浩教授提出的MagNet提出对抗样本和正常样本在被先压缩再还原过程中产生的误差有显著区别[105]。据此,陈教授设计了一个基于正常样本训练的自动编码器来分离这种误差,若一个样本通过自动编码器产生的误差超过一定门限,则可被判定为不来自和训练样本一样的分布,进而被判定为对抗样本。此外,就算误差没有超过这一门限,分离了误差之后的样本若导致分类器输出发生了变化,也可表征输入样本为对抗样本。

实际的对抗样本攻击 对抗样本攻击并不只停留在论文的阶段。最新的研究已经用对抗样本来攻击实际的系统,并且证明攻击成功率非常高,后果非常严重。来自卡内基梅隆大学的研究者发现,对抗样本可以被打印在眼镜框上,用来误导人脸识别系统[106]]。这种攻击手段一旦被不法分子掌握,即可用来攻击出入境,银行,监控等许多基于人脸识别和追踪的安保系统。复旦大学的研究者发现,对于人脸识别系统的攻击甚至可以发动于无形,只要攻击者利用人感知不到的红外光作为对抗样本的载体来发动攻击[107]。中国科学院信息工程研究所的研究人员发现,可以在音乐上进行小幅度修改,达到实际攻击基于深度学习的语音识别算法(例如科大讯飞等),实现人耳听起来是音乐但是语音识别系统识别出命令的效果[190]。

4.2  基于AI的安全技术

自二十一世纪以来,计算机的计算能力大幅提升,信息数据的爆炸式增长,以及基础理论的发展,使人工智能得到广泛的应用和发展。依靠人工智能发展的红利,计算机安全也得到了快速的提升和发展。人工智能中的技术和工具被广泛的应用在解决安全问题上,包括:漏洞检测、恶意代码检测和代码加固。

软件漏洞是在开发软件过程中由于开发者的疏忽或编程语言的自身局限性被植入的安全缺陷。这些缺陷往往能够被攻击者利用,从而削弱了软件系统的安全性,并可能给企业和个人带来巨大的经济损失[109]  [110]  。2017年5月爆发的勒索攻击“WannaCry”通过利用微软系统中的若干漏洞攻克了150多个国家的20多万台计算机设备,最终造成了接近40亿美元的经济损失[111]  。因此,及早的检测出软件存在的安全漏洞对软件安全有着极其重要的意义。

恶意代码,即恶意软件,是指未经过用户许可或在用户未察觉时,安装在目标计算机或终端上,并用于侵犯用户权益的软件。根据不同的攻击目标,恶意软件可以分为广告程序、间谍软件、木马程序、病毒、蠕虫、Rootkit等。相较于软件漏洞,恶意代码往往是由攻击者主动设计和编写的特定程序,通过钓鱼或通信渠道进行恶意传播。

代码加固指针对有安全隐患且在特定场合下可被攻击者利用的代码的修复过程。针对存在安全漏洞的软件进行代码变换和修复,或对二进制代码打补丁使攻击者无法通过这些漏洞发动攻击。根据不同的漏洞类型、代码环境以及安全等级需求,存在多种代码加固技术。例如针对缓冲区溢出漏洞,开发人员可以在编译中添加canary words和加入边界检查的代码,也可以对程序输入进行检查和过滤[114]   。


5  AI for Systems:基于AI的系统软件优化与缺陷检测

系统软件往往存在大量的人为设定规则,如CPU缓存加载与清除机制,以及基于启发的算法部件,如基于优先级的任务调度器。与此同时,AI算法多能对复杂的功能进行近似模拟。很自然地研究人员尝试将AI的研究成果应用到系统软件中,提升系统软件的性能表现、可靠性、可用性等指标。

5.1  基于日志挖掘的系统故障检测与诊断

在很多数据中心和云计算平台中,部署着大规模的软件系统。由于大规模软件系统具有规模大、逻辑复杂、并发性高、错误难以定位等特点,如何检测和诊断系统故障对系统开发者和维护者构成了极大的挑战。得益于软件系统开发的规范性要求,软件系统运行过程的很多状态信息都会被输出到日志文件中,日志文件对于理解系统状态和发现潜在的性能问题很有帮助。因此,如何从日志文件中挖掘出有价值的信息,以辅助系统故障的检测和诊断引发了很多工作的探索。

已有的基于日志挖掘的方法可以分为五类,分别为基于规则的方法[83]、基于日志统计特征的主成分分析方法[84][85][86]、基于贝叶斯网络的故障定位[87]、基于不变性挖掘的共现模式匹配方法[88][89]、基于深度学习的方法[90]。

基于规则的方法[83]首先人为给定规则集,然后根据规则集对日志进行匹配和规则推理,从而达到检测和诊断异常事件的目的。该类方法的缺点在于,领域知识的缺乏和事件之间复杂的关系导致规则集很难编写。另外,规则推理这一过程非常耗时,使得基于规则的方法不适用于大规模的日志。基于日志统计特征的主成分分析方法[84][85][86]结合日志和源代码,能够将非结构化数据转化成结构化数据,并构造得到日志的统计特征,然后利用主成分分析方法在线检测与诊断系统故障。基于贝叶斯网络的故障定位[87]通过构建故障推理贝叶斯网络,来推理得到每个模块包含故障的概率。基于不变性挖掘的共现模式匹配方法[88][89]根据程序执行流存在的不变性先验,挖掘不同事件共同出现的模式,然后通过检验共现模式是否满足条件来判断异常事件的发生。这种方法只能捕获事件之间的线性关系。基于深度学习的方法[90]利用日志中事件类型的信息和事件变量的信息,包括时间戳、事件变量值等,通过长短期记忆网络学习事件的非线性关系,并输出事件变量值,然后比较预测值跟输入值是否匹配来判断是否发生异常事件。该方法能实时接收用户的反馈从而修正模型,并能够在线更新模型。

5.2   基于机器学习的分布式资源分配

对于分布式计算任务,人们总是希望能够找到高效的计算资源分配(调度)方式,使得计算任务尽可能快速完成的同时,计算资源能够得到充分利用。

传统的方法采用硬编码策略或者启发式策略来进行计算资源分配。近年来,研究人员提出了基于机器学习(尤其是强化学习)的方法来进行计算资源分配, 让机器自己通过自我学习获得更好的资源分配策略。

Hongzi Mao 等人提出DeepRM[90],实现对集群中多任务和多种资源 (例如内存、I/O、CPU 等资源) 进行调度。DeepRM使用基于 PolicyGradient 的强化学习算法[91],使用神经网络作为决策器,以当前资源分配图和任务等待序列作为神经网络的输入。DeepRM取得了比非机器学习调度算法(例如 SJF 和 Tetris[92])更好的性能。

在神经网络的训练中,人们也使用深度强化学习方法对神经网络中各个节点进行计算资源 (CPU和多GPU) 的分配,从而最大程度减少神经网络的运行时间。Mirhoseini 等人[93]提出了基于 sequence-to-sequence 的深度强化学习模型来对网络中的节点进行人工分类,然后分配采样,最后通过最小化网络运行时间来更新分配模型。实验结果显示深度强化学习模型在一些著名的深度学习模型 (例如 Inception-V3、RNNLM、Neural Turing Machine) 上进行计算资源分配,效果比人工专家的分配方法、传统图节点分割分配方法和TensorFlow[94]内置的分配机制要好。该方法的缺点在于网络中的节点分类是人工分类。之后 Mirhoseini 提出一种改进方案[95],将节点的人工分类过程用一个神经网络来代替, 效果比之前的人工分类方法有明显提升,但同时也带来资源分配模型训练时间增长的缺点。Spotlight[96]将问题使用 MDP 形式化,并且使用了 PPO (Proximal Policy Optimization)[97]算法,显著缩短了分配网络的训练时长,同时对深度学习模型的计算分配结果也更为合理。

目前已有方法主要还是实验模拟,如何将其真正投入实际应用还需要进一步探索。

5.3   基于机器学习的索引构建

传统的索引构建方法,如B树、哈希表、布隆过滤器,目标都是将关键字映射到对应的位置,但都没有考虑具体的数据分布。基于机器学习的索引构建方法旨在利用实际的数据分布,将机器学习的方法引入到索引构建中,以提高索引性能。

已有基于机器学习的索引构建围绕三类索引任务展开,包括:基于B树的索引、基于哈希表的索引和基于布隆过滤器的索引。

基于B树的索引构建方法特点是记录位置的条目是排好序的。传统的B树可以看作是基于决策树的模型,该模型可以很好地利用cache来加速。论文[98]使用简单的神经网络模型和决策树模型来构造循环索引模型,相较于传统模型,循环索引模型能达到更好的索引效果。

论文[98]中还提出了基于机器学习的哈希表索引结构,使用了循环索引模型学习哈希函数,相较于传统的哈希函数,基于机器学习的哈希表索引结构可以达到更低的冲突率和更低的存储要求。但查询速度不如传统的哈希函数。

基于布隆过滤器的索引模型主要目标是判定查询关键字是否存在。论文[98]提出了可学习的布隆过滤器模型,可以达到更低的假正例率和更低的存储要求。论文[99]分析了可学习的布隆过滤器的性能与数据分布间的联系,指出了论文[98]中可学习的布隆过滤器的局限性。论文[100]改进了之前论文[98]中的可学习布隆过滤器,提出了一种夹心结构的布隆过滤器,提高了布隆过滤器的性能。


6  发展趋势与展望

分析当前AI与系统软件融合协同发展的挑战,并根据软硬件与AI技术演化进展分析可能的趋势,分析未来Systems+AI的可能的研究方向与研究问题。

6.1   Systems for AI:AI系统的扩展与优化技术

通过对AI系统扩展与优化技术国内外现状的分析,该领域存在以下技术趋势:更高效的AI系统、自动化AI系统、云端化AI系统,定制化AI系统和自主化AI系统。

更高效的AI系统,AI系统性能和扩展性还有很大提升空间,针对大规模数据的复杂深度学习网络的训练需要的计算资源成本和时间成本都还很高,虽然TensorFlow等平台的出现可以解决很多需求,对于单设备或多设备数据并行这种简单场景的支持已经非常优秀,但在模型更大或者神经网络拓扑更复杂时,通用框架的易用性和效率都大打折扣。TensorFlow等平台都还处于高速的发展阶段,软硬件结合,存储、网络、芯片等多层次结合的优化都是值得探索的方向。

自动化,基于大数据的机器学习过程包含复杂的数据处理、分析、模式提取和知识发现过程,基于现有的AI平台,学习曲线高、开发代价大,需要为领域数据科学家提供简单易用的“拼装式”机器学习分析环境,研究AutoML技术支持机器学习模型的自动生成和自动调参,实现AI智能分析一体化支撑。

云端化,指AI软件系统逐渐转向在线使用的方式,通过浏览器进行代码编辑、执行、可视化展现,算法、数据源以在线API形式提供,不需要本地进行软件的安装和维护,同时提供数据的在线管理。这需要在保障数据安全和隐私前提下,建立基于云模式的AI大数据挖掘分析工作环境。同时通过云平台强大的分布式计算引擎,支持大数据的高效分析处理。

定制化,指AI具有广泛应用领域,不同领域也都有各自的分析模式,一个通用的机器学习系统无法满足一个特定领域数据科学家个性化分析需求。在数据层面,不同科学家面向的数据类型不同;在算法模型领域,不同领域需要非常多通用算法库无法提供的领域算法;在可视化方面,不同领域需要不同的展示方式。因此一个理想的机器学习系统应该支持数据、模型和可视化视图多个方面的定制,支持每个领域数据科学家开发特有的组件。

自主化,从本文调研看绝大多数流行使用的AI系统均为国外开发者发布,因为其开源特性,国内的开发者可以应用这些系统开展AI的研究和应用。AI系统是十分关键的系统软件,目前国家十分重视核心关键软件的自主可控,因此亟待国内的研究团队和企业界用于研制具有自主知识产权的AI系统,并将优秀AI系统开源共享给社区,通过社区力量使其不断完善强大。

6.2   Systems for AI:类脑神经网络计算系统

在摩尔定律已接近尾声这一趋势下,需要融合材料、物理、微电子、生物(计算神经学)与计算机等多学科前沿进展,以新的计算器件、新的存储/存算器件和新的通信器件为基础,以新的计算原理、计算模型与应用为牵引,研发突破“冯.诺依曼”瓶颈的颠覆性计算机体系结构以及相应的软硬件系统,包括类脑计算(brain-inspired)等。

类脑计算经过几十年的发展,取得了令人欣喜的成果,但是仍受限于对复杂神经系统的认知。随着实验技术的进步与解剖学、生物学和生理学等相关领域研究的发展,必将对大脑的计算模式有更深、更多的了解。类脑计算将是未来很长一段时间科学技术研究的热点和前沿。

首先,从系统软件角度来看,为了在硬件层次提高芯片的性能,需要首先在软件层次进行仿真。所以需要开发一定的软件平台进行算法或模型的类脑计算仿真和模拟。如果能够在软件仿真方面发现算法或模型取得突破性进展,加上硬件器的加速,就可以促进芯片性能的提升。同时,软硬件协同设计方法将会推动类脑计算快速发展。再者,在计算模型方面SNN训练算法的理论发展还不够成熟,研究具有高效信息处理能力的基于完全时间编码的多层SNN,将为SNN在类脑计算领域中的应用提供有效的计算模型和理论基础。最后,类脑计算技术的发展将推动图像识别、语音识别、自然语言处理等前沿技术的突破,机器人视听感知和自主学习是很有希望的应用方向。

6.3   AI for Systems:基于AI的系统安全技术

进入二十一世纪,随着软件系统和网络基础设施的快速发展,其中的安全问题层出不穷,并有愈演愈烈的趋势,导致网络空间的安全形势越来越严峻。攻击者和防御者都在各自擅长的领域继续成长,并在多个技术领域展开竞争。此外,随着信息时代的继续发展,人工智能成为解决安全问题强有力的助推器。随着新兴领域的不断出现,如移动平台、物联网和工控系统,人工智能的发展和应用也面临了极大的挑战和机遇。本节将从解决这些安全问题的技术上的缺点和壁垒,结合当前大数据和人工智能领域的发展,提出以下几点发展趋势和展望,为未来的相关安全研究工作提供方向和方法指导。

领域内强智能的漏洞和恶意代码检测。虽然研究人员在漏洞检测和恶意代码检测中开展了诸多工作,并取得丰厚的成果。然而大部分的工作仍然面临了两方面的问题:第一,基于规则和漏洞签名的检测方法不具有通用性,只能对特定的漏洞类型有较好的检测效果,并且这样的方法无法对轻微的代码更动进行很好的漏洞检测;第二,目前的基于特征提取和机器学习进行漏洞检测和加固的技术往往受制于训练数据集的优劣,并且不恰当的特征提取容易造成过度拟合,弱化对新的软件漏洞的检测能力。因此如何构建一种特定领域的强智能是未来的发展趋势,如让机器能够识别恶意软件的变种,检测出零日漏洞和恶意代码等。

系统化和通用化的代码加固策略。目前的代码加固技术主要关注在安全补丁的生成,而忽视了动态修改的重要性;或者只关注在某一特定漏洞和攻击的加固,而失去通用性。在十几年的发展中,安全人员已经对成千上万的代码进行修改和修复,但仍未有比较成熟的系统和方法对这些有价值的数据进行系统化学习和利用。随着人工智能在知识获取和知识表达上的发展,相信未来会有大量工作通过学习已有的代码加固实例来总结和提取加固策略,并能够自动化的针对不同的软件系统,平台,运行环境等信息进行静态或动态的加固。

新兴领域带来的挑战和机遇。经过几十年的发展,安全社区已经衍生和发展出多种高效和精准的安全检测技术来检测漏洞、恶意代码和进行代码加固,并产生了众多相关的安全软件公司推动先进技术的实施和商业部署。然而,近几年移动设备,物联网和工控系统得到急速扩张和发展,不法分子已经开始将目标转移到这些领域来牟取利益。跟传统的软件系统相比,这几类领域采用许多的新的硬件设备、体系架构和编程语言,软件系统处在不同的网络或主机环境。因此,在进行相关安全检测和加固活动中,安全人员需要提出新的检测和加固技术来适应不同的应用领域。

人工智能鲁棒性的要求提升。随着人工智能在安全领域内的大量应用和良性发展,基于人工智能的安全产品持续为大家提供一个较为安全的网络环境。但是,过度的依赖人工智能就会放大人工智能自身的缺陷和弱点。例如基于机器学习的恶意代码检测技术存在被攻破的风险[190],这几类攻击除了能够极度降低检测准确度外,还能够窃取训练数据,导致安全系统的数据泄露。因此,人工智能安全性也将伴随着安全需求的增加而得到进一步发展。

大数据挖掘技术将进一步提升。在未来的漏洞、恶意代码检测和加固方面,不可避免的要利用到大数据和大数据挖掘技术。在数据挖掘过程中就会面临诸多挑战,如研究人员搜集的数据集内存在严重的类不平衡问题,并导致基于机器学习的模型的预测性能降低。安全数据抽象和表达方面的不足,使目前产生的数据无法有效和快速的利用到安全防护中。因此,如何构建安全知识系统用来辅助安全防护任务甚至在该知识系统中进行推理获取更多未知的安全知识,具有美好的发展和应用前景。

机器学习与边缘计算。在5G与物联网时代,将机器学习应用于边缘计算的设备具有众多意义。首先,机器学习技术可以用来识别持续升级改进的网络威胁。机器学习在边缘应用的另一种方式是用于环境和野生动物领域的管理。例如,森林管理行业已看到机器学习在预测和优化再造林目的树种选择方面的应用。此外,在油井或加油站等场景中,边缘机器学习正在应用于远程监控和预测性维护等。相比于将数据发送到云端进行计算,在边缘设备上进行机器学习不仅能够更好地保护数据隐私性,而且能够避免数据传输带来的额外延时。

6.4   AI and Systems: 面向AI系统安全的对抗学习技术

即使机器学习应用存在被对抗样本攻击的风险,其在精准度,实现难度方面都有无可比拟的优势。毫无疑问,即使在安全相关领域,机器学习也将继续并且长期发挥重要作用。考虑到对抗样本攻击带来的严重后果,可以预见的是,对抗样本的检测将会成为一个持续的研究方向和热点。

现阶段对抗样本检测手段大多基于黑盒假设,即寻找一种攻击者不知道的检测指标,用样本是否超标来判定其为对抗样本。而显然这种模型并不能在真实场景中取得好的防御效果,因为攻击者比防御者往往更了解防御技术。对有经验的攻击者来说,绕过这些防御技术并不是件难事。

基于白盒假设的对抗样本防御 下一阶段的对抗样本防御工作将会集中在白盒假设上,即提出一种检测指标,使得攻击者即使知道指标算法的情况也无法利用扰动干扰的检测指标,从而达到较好的防御效果。白盒假设下的检测方法是非常具有挑战性的,但只有白盒假设下的防御方法才能提供有效的安全性保障,从根本上较少对抗样本被生成的概率。

云平台上面向大数据的对抗样本防御 机器学习,特别是深度学习不可避免接收大数据和云平台的洗礼。如何结合云平台提供的海量计算能力,结合攻击者获取不到的海量数据设计对抗样本检测方案可能成为下一个热点。现在的对抗样本检测方法并没有利用到海量样本数据,很有可能在云平台上检验大量数据之后,可以得到攻击者不可绕过的检测指标。


7  结束语

AI当前方兴未艾,与系统软件的深入融合为AI提供了强大的算力与开发、调试与维护框架,推动了AI的发展。另一方面,如何将AI应用到系统软件从而提升性能与安全等也存在很大的潜力。本文对AI与系统软件的相互融合与促进的研究进展进行了分析,探索了二者融合的发展趋势,以期对在这两个领域工作的研究者与实践者提供参考。


致谢

本文是在CCF系统专委会的组织与指导下完成的。专委李宣东主任、王林章秘书长统筹了整个组稿过程,申富饶老师也对本文提供了宝贵材料与意见。CCF评审专家对本文提出了很多宝贵意见,对本文结构优化、调研方向与范围具有很大的帮助。

猜你喜欢

转载自blog.csdn.net/Leohfan/article/details/84036332