ICSE 2021:微軟亞洲研究院精選論文,洞察軟件工程前沿研究
編者按:作為軟件工程領域的頂級會議,ICSE (International Conference on Software Engineering) 今年共接收了138篇論文,錄取率為22.44%。微軟亞洲研究院有多篇論文被收錄,今天為大家介紹其中的4篇,研究主題包括:故障分析、逆向工程、配置空間、云計算系統、黑盒后門攻擊、深度學習等等。
AutoCCAG:生成約束覆蓋陣列的自動化方法
論文鏈接:
https://www.microsoft.com/en-us/research/publication/autoccag-an-automated-approach-toconstrained-covering-array-generation/
現如今,伴隨著軟件定制化需求的不斷增長,開發高度可配置的軟件系統在學術界和工業界也都得到了廣泛的關注。高度可配置的系統提供了很多選項,用戶可以通過調節這些選項來輕松自定義系統。但是,由于所有可能的配置總數會隨著選項數量的增加呈指數級增長,“一不小心”還可能因為某些特定的(不合法的)配置導致系統故障,所以測試一個高度可配置系統所有的可能配置(即所有可能的選項組合)代價極高。
例如,假設一個軟件系統有15個選項,每個選項有3個可能的取值,那么在最壞情況下這個系統會有超過一千萬種可能的配置(3^15=14,348,907)。因此,這個領域迫切需要更實用并且更高效的測試方法。
組合交互性測試(Combinatorial Interaction Testing, CIT)是一種有效的用于測試高度可配置系統的測試方法。相比較于測試所有可能的配置,CIT 僅需測試少量的配置,大大減少了測試所需的代價。CIT 方法能夠生成一個覆蓋陣列(Covering Array, CA)。一個 t-way CA 可覆蓋所有可能的 t 個不同選項之間取值的合法組合(t被稱為覆蓋強度)。所以約束覆蓋陣列生成(Constrained Covering Array Generation, CCAG)的問題表述是:在給定硬約束的情況下,找到一個最小的約束覆蓋陣列(Constrained Covering Array, CCA)。CCAG 已經被證明是一個 NP-hard 優化問題,因此理論上求解 CCAG 問題,非常困難。
已有的 CCAG 方法(如貪心算法、約束編碼算法以及元啟發式算法)通常只能有效求解 2-way CCAG 和 3-way CCAG,但求解 t-way CCAG(t>=4)仍然是一個技術上的挑戰。而有效地求解 t-way CCAG(t>=4)非常重要。例如,有文獻表明,在測試交通系統時,3-way CCAG 只能檢測74%的故障,然而 4-way CCAG 和 5-way CCAG 則可以分別檢測89%和100%的故障。
對此,微軟亞洲研究院的研究員們提出了一個生成約束覆蓋陣列的自動化方法 AutoCCAG。AutoCCAG 采用了先進的自動算法配置技術(Automated Algorithm Configuration)和自動算法選擇技術(Automated Algorithm Selection),可以更加有效地求解 4-way CCAG 和 5-way CCAG 問題。
圖1: AutoCCAG 架構圖
AutoCCAG 包括三個組件:1)配置優化器(Configuration Optimizer),2)有效配置生成器(Promising Configuration Generator),3)配置調度規劃器(Configuration Scheduling Planner)。
AutoCCAG 的架構如圖1所示。給定一個可配置的 CCAG 算法 a,AutoCCAG 的配置優化器會采用自動算法配置技術用于確定算法 a 的優化參數;然后 AutoCCAG 的有效配置生成器的會生成算法 a 的多個配置并且使得這些配置之間有很強的互補性;之后,AutoCCAG 的配置調度規劃器會采用自動算法選擇技術構造一個關于算法 a 的配置調度規劃。最終,AutoCCAG 通過采用該配置調度規劃用來求解給定的 CCAG 問題實例,并且生成相應的約束覆蓋陣列。
研究員們將 AutoCCAG 與多種先進的 CCAG 求解算法進行了實驗對比(相關實驗結果請見表1、2)。實驗結果表明,相比較于已有的 CCAG 求解算法,AutoCCAG 在求解 4-way CCAG 以及 5-way CCAG 問題上都展現出了更好的求解性能。
表1: 不同方法在求解 4-way CCAG 問題上的性能對比
表2: 不同方法在求解 5-way CCAG 問題上的性能對比
DeepPayload:用逆向工程技術對深度學習模型進行黑盒后門攻擊
論文地址:
https://arxiv.org/pdf/2101.06896.pdf
如今深度神經網絡(DNN)已經被越來越多地應用于安全攸關的移動/邊緣端場景中,例如身份認證、自動駕駛、智能安防等,這使得模型的安全性顯得愈發重要。目前,神經網絡模型運行時,會面對兩類攻擊——對抗樣本攻擊(adversarial attack)、后門攻擊(backdoor attack)等。其中,后門攻擊是指,在模型中植入一些隱藏的邏輯,且在特殊條件下才會觸發。顯然,后門攻擊的存在會導致模型預測結果被“操縱”。例如,一個被植入后門的圖片分類模型,可能在當輸入的圖片有一個特殊標識的時候,將圖片識別為某個特定的類別,而當輸入圖片沒有特殊標識的時候則正常工作。
有兩種應對后門攻擊的主流方法:1. 通過數據投毒(data poisoning)向訓練數據中加入異常的樣本,從而讓模型在訓練之后“自帶”后門邏輯;2. 對模型內部的神經元進行分析,自動生成后門觸發標識,以及生成后門的訓練數據。
但以上方法存在兩個“致命”的缺點,使其在移動/邊緣端場景中并不適用:1. 大多數部署在移動/邊緣端應用中的模型,其存在形式都近似于黑盒,例如 .pb, .tflite, .onnx 格式等,其具體功能具有不確定性,所以對模型進行二次訓練較為困難;2. 這類方法大多只能實現數字世界的攻擊,其后門觸發標識往往是對圖片中某些特定像素進行直接修改,而對于部署在物理世界的模型,卻很難做到對輸入進行像素級的控制。因此,要想達成物理世界的攻擊,就需要使得后門可以被物理世界真實的物體觸發。
在傳統軟件中,后門攻擊往往是通過一系列逆向工程的方法達成,例如通過將程序二進制文件反匯編(disassemble)、植入惡意代碼(malicious payload)、重新匯編(reassemble)等過程。這樣的做法不需要了解目標程序的具體功能就可以進行大范圍的攻擊。
因此,微軟亞洲研究院的研究員們開始思考,類似的逆向工程思路能否用于黑盒神經網絡模型的攻擊?答案是肯定的,類似于傳統軟件,模型也可以被反匯編成數據流圖的形式。與代碼數據流圖不同,模型數據流圖中的節點是基本的數學操作(如卷積、激活等),邊是數據張量(tensor)的流動,所以可通過直接對數據流圖進行修改植入后門邏輯。
研究員提出的 DeepPayload 方法的具體思路是:在模型中自動加入一個旁路。首先通過一個輕量級的觸發檢測模型(trigger detector)檢測輸入中是否存在后門觸發標識,然后將檢測結果輸入一個條件選擇模塊(conditional module),該模塊可以在后門觸發標識存在概率小于一定閾值時選擇輸出原始模型的預測結果,而在觸發標識存在概率大于閾值時輸出攻擊者指定的結果。在沒有關于模型所在環境數據分布的先驗知識的情況下,攻擊者可以通過使用數據增強的方法,模擬出觸發標識在圖片不同位置、角度、大小、光照條件下的情形,進而在增強之后的數據上訓練,使得模型能在不同背景環境下檢測到觸發標識。另外,條件選擇模塊是由 ReLU、Mask、Sum 等神經網絡基礎操作符構成,實現了與傳統程序中 if-else 語句等價的邏輯。
圖2:基于逆向工程的后門攻擊原理示例
為了驗證 DeepPayload 方法的有效性,研究員們使用從30個用戶處收集的真實場景圖片對攻擊方法進行了評估,實現證明該方法能夠以93.5%的準確率觸發后門。同時,植入的后門對模型的延遲、準確率影響都很?。?.3%~3.1%)。
通過分析116個包含深度學習模型的安卓應用,研究員們還發現其中54個應用可以被該方法成功攻擊。這些應用的領域包括:支付、商業、教育等等,有的下載量達到了千萬級別。這表明目前開發者對模型保護的意識還相對薄弱,希望這項工作能喚起廣大開發者和市場監管者對軟件中神經網絡模型的保護意識。
COT:利用服務關系挖掘、加速大規模云系統故障分析
論文地址:
https://arxiv.org/pdf/2103.03649.pdf
隨著云計算系統的快速發展,越來越多的企業選擇將它們的服務遷移到云計算平臺上。因此,大規模云計算平臺,如微軟 Azure 云計算平臺等,在支撐著數量龐大的云計算服務與終端用戶的同時,保障其高可用性十分關鍵。
然而,盡管云服務提供商們在保障其云服務可靠性上都投入巨大,但云平臺仍然會面臨各種故障(Incidents)。其中有一類故障稱之為 Outage,其特征是:可能會對云平臺中多個互相依賴的服務產生嚴重影響,并導致故障傳遞至面向用戶的服務中。顯然,Outage 一方面會影響用戶的使用體驗,另一方面也會帶來巨大的經濟損失。
圖3 :Outage 生命周期
在現有基于服務分層抽象、虛擬化等技術的 Devops 工業實踐中,由于 Outage 會從多個服務(如用戶直接使用的服務)的報告中同時得知,尋找 Outage 原因的過程會涉及大量診斷與跨團隊溝通,所以這個過程十分耗時。對此,微軟亞洲研究院的研究員們設計實現了 COT(Correlation-based Outage Triage),通過挖掘歷史 Outage 診斷記錄中的有用信息,加速 Outage 根因定位的過程。
COT 的思路是,對于歷史上的每一個 Outage,研究員們都挖掘與該 Outage 相關的故障之間的關聯信息,并以服務為單位,將故障之間的關聯信息進行聚合,然后,以 Outage 中服務之間的故障關聯為特征,以 Outage 的根因服務為標簽,訓練機器學習模型。在新的 Outage 發生后,研究員們可以通過歷史故障的關聯信息,快速找到與該 Outage 相關的故障,并用相同的方法對這些故障進行聚合與特征提取,再利用先前訓練好的機器學習模型來預測其根因服務。
圖4:COT 方法概覽
研究員們將 COT 與當前研究中最先進的方法(DeepCT)進行了對比測量。COT 在不同時間窗口設置下,可以實現 82.1% ~ 83.5% 的預測準確率,相較于 DeepCT 的準確率高出 28.0%~29.7%。同時 COT 的執行十分高效,其預測 Outage 根因服務的時間開銷可控制在一分鐘以內。
現在,COT 已經部署于微軟 Azure 云計算平臺的生產環境中,輔助工程師加速 Outage 的分析過程。另外,針對 Outage 所構建的服務之間的故障關聯,COT 也為工程師理解故障在服務之間的傳遞模式提供了重要的參考依據。
DnnSAT:用于深度學習模型資源導向的配置空間約簡
論文地址:
https://www.microsoft.com/en-us/research/publication/resource-guided-configuration-space-reduction-for-deep-learning-models/
許多傳統的軟件系統,例如編譯器和 Web 服務器,都提供了大量的配置選項(configuration option),通過不同的選項組合來滿足不同條件下的系統質量(例如吞吐量)要求。與傳統的可配置軟件系統類似,語音識別、聊天機器人和游戲等部署深度學習技術的現代軟件系統,也為開發人員提供了兩大類的多種模型配置選項——超參選項(如批處理大小和學習率)以及網絡結構選項(如網絡層數和每層的類型)。
由于模型的選項眾多,組合而成的模型配置(model configuration)數量呈指數方式增長,從而導致手工調參方式低效、繁瑣且易出錯。盡管有大量的自動化機器學習(AutoML)工具可供使用,也能通過提交成百上千的訓練任務搜索優質的模型配置,但依然無法解決配置空間的指數爆炸問題。
微軟亞洲研究院的研究員們認為,約簡模型的配置空間是快速搜尋最優模型配置以及整體提升深度學習開發效率的有效途徑。其理由為:由于資源方面的限制,不滿足資源需求約束的模型配置會造成訓練任務的失敗或產出不符合要求的模型,從而浪費系統資源、降低生產力。例如某個批處理大小為256的 PyTorch ResNet-50 訓練任務在 NVIDIA Tesla P100 GPU 上觸發了 out-of-GPU-memory 的異常。這是因為該任務需要 22GB 顯存,但是 P100 GPU 只有 16GB。此外,AutoML 工具的使用還會“放大”這些故障的危害,因為其它使用相同批處理大小的上百個訓練任務都可能把顯存耗盡。
如何有效地約簡模型的配置空間?微軟亞洲研究院的研究員們提出了 DnnSAT,一種資源導向的配置空間約簡方法。DnnSAT 能夠幫助開發人員和 AutoML 工具提前去除不滿足資源需求約束的模型配置,從而節省出可觀的系統資源用于搜尋更多的模型配置。
實現 DnnSAT 方法的具體思路是,把配置空間的約簡歸約成約束滿足問題(constraint satisfaction problem),提供一個統一的、解析的代價模型來構建關于模型權重大小(model weight size)、浮點操作數目(number of floating-point operations)、模型推理時間(model inference time)和 GPU 顯存消耗(GPU memory consumption)的常用約束,并調用微軟 Z3 SMT (satisfiability modulo theories)solver 獲得所有可滿足的模型配置。對于模型的任一系統質量屬性(quality attribute),DnnSAT 方法都可以定義一組約束,從而進一步約簡模型的配置空間。(本論文僅討論了資源需求的約束。)
圖5:DnnSAT 的工作流程
在圖5 DnnSAT 的工作流程中,可以看到工具的輸入是模型文件、模型配置信息和約束設置。DnnSAT 首先加載了模型文件以構建出相應的計算圖(computation graph),再根據操作符(operator)的實際執行順序遍歷此圖,隨后使用預建的操作符代價函數逐步創建模型的資源使用函數(該函數以超參和網絡結構為參數,使用 SMT LIB 格式描述),最后將資源使用函數和用戶設置的資源上下界交由微軟 Z3 SMT solver 求解。
研究員們設計了多項實驗用于來驗證 DnnSAT 對 AutoML 算法的加速效果、配置空間約簡效率以及約束求解速度。首先,在公開的 AutoML 基準測試——HPOBench 和 NAS-Bench-101 中,DnnSAT 明顯地加速了隨機、演化、Hyperband 以及強化學習等多種代表性超參數與模型結構搜索的算法,獲得1.19—3.95倍的加速比。此外,DnnSAT 還顯著地約簡了 VGG-16 和基于 LSTM 的 Seq2Seq 這兩種典型深度學習模型的配置空間。例如,在多種 GPU 顯存容量的實驗約束下,VGG-16 模型的配置空間約簡為原有的42.1%~84.3%;在不同批推理時間上界的實驗約束下,Seq2Seq 模型的配置空間約簡為原有的33.2%~74.1%;越嚴格的約束條件會產生更明顯的約簡效果。最后,為了加快約束求解速度,DnnSAT 實現了并行求解、微小配置空間和區間過濾的優化策略,從而獲得了數量級的求解加速效果。研究員們相信,DnnSAT 可以讓 AutoML 技術在資源受限的實際環境中更加高效和實用。
*博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。