1. 程式人生 > >AI與系統軟體的深度融合研究進展與趨勢

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:機器學習系統的支撐、拓展與優化技術

機器學習系統為機器學習模型訓練、推斷以及部署等任務提供支援。本節將分別介紹當前主流的通用機器學習系統、主流深度學習框架系統、及機器學習流式實時擴充套件技術、針對特定任務定製的機器學習系統、機器學習系統自動化構建技術、新興機器學習系統以及機器學習系統優化技術等。

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評審專家對本文提出了很多寶貴意見,對本文結構優化、調研方向與範圍具有很大的幫助。