唐楚哲 王肇國 陳海波
(上海交通大學軟件學院 上海 200240)
(領域操作系統教育部工程研究中心(上海交通大學)上海 200240)
隨著信息技術的發展,操作系統、數據庫系統等系統軟件已廣泛應用于醫療、工業、軍事、航空航天和能源等關鍵領域以及人們的日常生活中,是現代社會不可或缺的基礎設施.同時,伴隨著人工智能、大數據、云計算等新技術的進步,以及可編程存儲器、RDMA(remote direct memory access)網絡硬件、可編程交換機等新硬件的涌現,為充分利用硬件支撐上層應用,系統軟件的設計與實現不斷面臨著與時俱進的新要求.這不僅是對系統軟件實踐者的挑戰,也為系統軟件研究帶來新的機遇.
與此同時,機器學習方法近年來取得了令人矚目的進展.2015 年,微軟的研究人員使用深度殘差網絡(deep residual network,ResNet)在ImageNet 測試集中達到超越人類表現[1];2016 年,DeepMind 的研究人員使用深度強化學習(deep reinforcement learning,DRL)訓練出AlphaGo 模型并擊敗了圍棋世界冠軍李世石[2-3];2018—2020 年,OpenAI 的研究人員基于Transformer模型架構[4]提出GPT 系列模型[5-7],并于2022 年向公眾發布ChatGPT 模型,ChatGPT 憑借其優秀的對話與推理能力引起社會各界廣泛的關注與討論.
面對構建復雜系統軟件的迫切需求和機器學習方法的快速發展,一些系統研究人員開始思考并嘗試回答:能否使用機器學習方法來賦能系統軟件?近年來,研究領域中出現不少應用機器學習方法于系統軟件的嘗試,并受到研究人員與從業者的共同關注.值此之際,本文將討論使用機器學習方法賦能系統軟件的機遇與挑戰,介紹將機器學習方法應用于索引結構、鍵值存儲系統、并發控制協議等方面的實踐,總結經驗與教訓,并回顧國內外相關研究,希望為嘗試應用機器學習方法的系統軟件研究人員與從業者提供參考與幫助.
隨著軟硬件環境的不斷演變,系統軟件的設計與實現日益復雜.圖靈獎得主Lampson[8-9]曾指出,系統軟件不僅需要充分利用底層硬件資源為上層應用提供及時與高效的服務,同時還需要保證系統的穩定性和可靠性,并能夠快速適應需求與環境的變化.這些要求為機器學習方法在系統軟件中發揮作用帶來了新的機遇.例如,可以使用機器學習方法來優化系統資源的利用和分配,以及實現自適應的系統配置和調整,從而提高系統軟件的性能和可靠性.同時,機器學習方法也可以對系統軟件產生的大量運行數據進行分析和挖掘,以優化系統軟件的運行效率和性能,從而滿足不斷增長的應用需求.
然而,機器學習方法賦能系統軟件面臨4 點挑戰:
1)面臨設計面向系統軟件定制化模型的挑戰.系統軟件往往有復雜的架構與多樣化的功能,以及與常見的機器學習任務所不同的優化目標,因此需要為具體系統和應用場景設計定制化的機器學習模型,以有效地進行優化.因此,系統研究人員需要深入了解系統軟件的工作原理和性能瓶頸,并具備機器學習領域的專業知識和經驗,才能設計出合適的模型.
2)面臨獲取足量且高質量訓練數據的挑戰.系統軟件所使用的模型訓練數據往往需要從系統運行過程中收集而來,但系統的每次運行往往會消耗大量時間與計算資源,而只能產生少量的訓練數據,這給獲取訓練數據帶來了成本和效率方面的挑戰.此外,為滿足系統軟件對穩定性與可靠性的高要求,訓練數據往往需要覆蓋各種可能的工作負載和異常情況,從而保證訓練出的模型具有較好的魯棒性和泛化能力,這進一步增加訓練數據的獲取難度.
3)面臨降低模型開銷對系統性能影響的挑戰.與數據分析等其他應用機器學習方法的場景不同,系統軟件對實時性和并發度有極高的要求,因此對于模型執行的效率和響應時間要求非常高.然而,由于神經網絡等機器學習模型通常需要大量的計算資源和時間來執行,這會導致模型的執行開銷影響系統軟件的性能.尤其是在嵌入式設備和邊緣設備等資源受限的環境中,模型執行開銷甚至可能大于使用機器學習方法帶來的提升,進而對系統軟件造成負面影響.
4)面臨消除模型誤差對系統正確性影響的挑戰.對于系統軟件而言,始終保證系統行為的正確性至關重要.然而,機器學習模型產生的結果總是伴隨著誤差,難以提供精確度保證.因此,如何在使用模型輸出時避免產生錯誤的系統行為也是應用機器學習方法所面臨的重大挑戰.
在系統軟件實踐者的視角下,機器學習方法可以被簡單地看作一種函數近似器[10].因此,任何能夠被表示為某種函數形式的系統組件都可以被機器學習模型近似擬合.以數據庫查詢優化器為例,它的功能可以總結為將輸入查詢語句進行優化并輸出具體的查詢執行計劃.因此,一個以查詢語句抽象語法樹(abstract syntax tree,AST)和數據庫內部統計信息為輸入,輸出物理執行計劃的函數就可以表達查詢優化器這一系統組件.通過收集系統運行時查詢優化器的真實輸入輸出以構建訓練數據集,這樣就使得采用機器學習方法替換這一組件成為可能.盡管模型會產生誤差,但這邁出了用機器學習方法優化關鍵系統軟件組件的第一步.
下一個問題隨之而來:哪些函數適合被機器學習方法所近似擬合呢?本節通過介紹上海交通大學并行與分布式系統研究所及相關合作者將機器學習方法應用于系統軟件的3 個具體案例來探討這個問題.本文旨在拋磚引玉,而非給出一個通用的答案.
索引結構是包括存儲系統在內的許多系統軟件中重要的組成部分,它們可以顯著提高數據檢索的速度和效率,減少系統資源的消耗,從而提升整個系統的性能.常見的索引結構包括B+樹、哈希表及其變種等.索引結構本質上是一類記錄數據存儲位置并提供查找能力的數據結構,因此可以用一個以查詢鍵(key)為輸入,輸出數據位置的函數來表示其功能.因此,如圖1 所示,用機器學習方法替代傳統索引結構的核心在于使用機器學習模型來近似擬合這一函數.
使用機器學習方法近似擬合索引結構函數存在3 個難點:1)機器學習模型必須具有高效的執行速度.因為訪問索引結構是存儲系統查詢處理關鍵路徑的組成部分,機器學習模型推理時間必須是微秒級別才能避免對系統性能造成負面影響.2)使用模型后,查詢結果必須始終準確.用戶期望索引結構查詢時返回且只返回匹配查詢鍵數據的存儲位置,遺漏數據或返回錯誤數據位置都會嚴重影響系統的可靠性.3)模型必須能夠快速適應數據更新.插入、刪除等操作會改變索引結構對查詢鍵的輸出,進而改變模型所近似擬合的函數.如果不能及時更新模型以適應更新后的函數,系統正確性仍無法得到保障.

Fig.1 Illustration of replacing index structures with machine learning models圖 1 機器學習模型代替索引結構的示意圖
對于第1 個難點,首先對導致模型執行效率低的原因進行分析.我們發現,模型執行效率低往往是由于使用深度神經網絡(deep neural network,DNN)等復雜模型導致,而之所以需要使用復雜模型則是因為所需近似擬合的函數本身較為復雜,需要高容量(capacity)的模型才能夠提供足夠的精度.因此,解決模型執行效率問題的核心在于簡化所需近似擬合函數的復雜度.如圖2 所示,索引函數復雜是因為被索引數據往往是隨機分散在存儲介質的不同位置上,從而導致索引結構所代表的查詢鍵與數據位置間的映射缺乏規律.因此,只需要將數據進行排序,并使其連續存放于存儲介質中,那么模型所需近似擬合的函數將單調遞增,從而使用簡單的線性模型就可以較好地對其進行近似.這一思想最初由Kraska 等人[11]提出,并進一步構建了遞歸模型索引(recursive model index,RMI)架構來索引數據.

Fig.2 Sorting data and storing date continuously simplify the approximated function圖 2 將數據排序并連續存放可簡化被擬合函數
對于第2 個難點,需要為模型誤差設計一個后備機制(fallback mechanism).具體而言,盡管模型預測的數據位置可能存在誤差,但通常情況下預測位置與數據真實位置差距并不大.考慮到數據本身已經被排序并連續地存放于存儲介質中,可以從預測位置出發進行指數搜索(exponential search),通過將當前位置數據與用戶給定查詢鍵進行比較,最終定位到數據真實位置.指數搜索的復雜度為O(log(n)),其中n為模型預測誤差.因此,有了這樣的后備機制,只需盡可能提高模型精度以減少指數搜索開銷,而不用擔心輸出錯誤的查詢結果.
對于第3 個難點,發現直觀的數據更新適應方案要么嚴重影響系統性能,要么會導致索引結構數據一致性問題.為了簡化索引函數并使用指數搜索來確定數據真實位置,被索引數據需要排序并連續地存儲,因此每次數據插入與刪除將會涉及到大量數據的移動操作.就算使用內存作為存儲介質,這一過程仍可消耗數秒時間來完成.同時,數據位置發生改變時,模型也需要及時更新,以保證查詢誤差始終處于較低狀態,這進一步加大了應對數據更新的開銷.對于這一問題,直觀的解決方法是為數據修改設計單獨的緩存,緩存足夠大時在后臺異步地完成數據移動與模型更新操作.盡管這些操作耗費的時間未減少,但它們不再阻塞正常的索引查詢與更新.
如圖3 所示,當后臺線程將數據從舊索引的數據數組和緩存拷貝至新索引的數據數組時,前臺線程仍然可以對舊索引進行更新操作.由于后臺線程此時仍未完成新索引的構建,新索引的數據數組無法暴露給前臺線程,因此當前臺線程對已被拷貝至新索引的數據進行更新時,拷貝后的數據并不會被正確更新.這會導致數據一致性問題,即在后臺線程完成新索引構建后,舊索引將被回收,導致用戶成功完成的更新消失.為了解決這個問題,我們提出了兩階段壓縮(two-phase compaction)方法來正確進行新索引構建.簡單來說,將后臺線程構建新索引的過程分為2 個階段:歸并(merge)階段和拷貝(copy)階段.在歸并階段,后臺線程將舊索引的數據數組和緩存中的數據按照查詢鍵進行歸并排序,并將指向它們的指針存入新索引的數據數組中.完成歸并階段后,我們使用RCU(read-copy-update)機制將所有前臺線程的索引視圖遷移至新構建的索引,進入拷貝階段將新索引的數據數組中的指針替換為其所引用的具體數據.使用兩階段壓縮技術后,只有當所有前臺線程均停止通過舊索引修改數據,才會執行數據拷貝,從而避免了直接拷貝數據后被前臺線程修改導致的數據不一致問題.
如圖4 所示,我們的測試表明,將機器學習方法應用于索引結構來構建的XIndex 索引結構[12-14],不僅擁有超越傳統索引結構的查詢性能,而且在讀寫負載下具有優秀的可擴展性.

Fig.3 Updating indexes with two-phase compaction avoids data consistency issue圖 3 通過兩階段壓縮更新索引可避免數據一致性問題

Fig.4 XIndex achieves good scalability in a TPC-C style workload and outperforms state-of-the-art baselines圖 4 在類TPC-C 負載下XIndex 可擴展性良好且性能優于現有系統
鍵值存儲系統是一類重要的系統軟件,它們能夠快速地存儲和檢索大量的鍵值對數據.許多大型分布式系統(如分布式數據庫)均使用鍵值存儲系統作為存儲模塊并在其上構建更為復雜的功能.

Fig.5 Architectures of RDMA-based key-value stores圖 5 RDMA 鍵值存儲系統架構
對于鍵值存儲系統,數據索引效率是決定其性能的關鍵.如圖5 所示,傳統客戶端服務器模式的鍵值存儲系統中,客戶端與服務器以遠程過程調用(remote procedure call,RPC)的方式進行通信.客戶端向服務器發送的讀寫請求需經由服務器端CPU 進行處理后再將結果返回給客戶端.隨著近年來RDMA技術的發展,客戶端與服務器間網絡通信能力不斷提升[15].然而服務器端CPU 處理能力卻未能獲得相匹配的提高,因此這類架構的鍵值存儲系統中服務器端CPU 處理請求的性能逐漸成為整個系統的瓶頸.與此同時,RDMA 技術允許客戶端直接對服務器端內存進行訪問而不需服務器端CPU 的參與,這使另一種直接由客戶端驅動數據查詢的架構成為可能.在這種架構下客戶端將代替原服務器端CPU 完成對服務器端所管理的數據進行訪問.然而,服務器端數據往往以樹狀結構進行組織,以提供按順序掃描的功能.若簡單地讓客戶端復刻服務器端CPU 進行的查詢過程,那對樹狀數據結構每一層的訪問都將需要一次網絡往返(network roundtrip).這不僅會大大增加查詢操作所需的時間,還會加劇對網絡帶寬資源的消耗.
怎樣設計鍵值存儲系統才能充分發揮RDMA 技術帶來的卓越硬件性能成為我們思考的一個問題.我們發現,在客戶端對服務器端索引結構進行緩存可以有效減少查詢時的網絡往返,但這種方法會對客戶端造成極大的內存空間開銷,并在讀寫負載下導致大量緩存失效(cache invalidation)和緩存未命中(cache miss),引起系統性能下降.
為此,我們提出使用機器學習方法替代客戶端的索引結構緩存,并稱其為學習緩存(learned cache).正如2.1 節所提到,機器學習方法可以有效替代傳統索引結構,通過模型計算來替代傳統索引結構中逐層訪問過程,在提供高效查詢性能的同時大幅度減少索引結構所需內存空間.實現這一想法最大的難點來自于真實負載下數據的動態變化.我們在XIndex 中使用緩存來應對刪除和插入操作,但這種思想難以用于RDMA 鍵值存儲系統.首先,服務器端引入額外的緩存結構會導致客戶端查詢時額外的網絡往返,從而嚴重增加查詢延遲.其次,對寫操作有較好支持的緩存結構通常也是樹狀的,很難在客戶端緩存這樣快速變化的緩存結構.最后,對數據和模型的重構會中斷客戶端發起的RDMA 遠程訪問,并導致客戶端的學習緩存完全失效.
為解決這些問題,我們提出了一種混合的系統架構并構建了原型系統XStore[16,17].如圖6 所示,該架構保留了服務器端的B+樹索引結構以處理動態工作負載,并在客戶端上使用學習緩存來處理靜態工作負載.對于get(),scan()等只讀請求,客戶端首先使用學習緩存預測查詢鍵的位置范圍,然后通過一次RDMA 讀操作獲取這個范圍的數據.最后,客戶端在本地獲取的數據范圍內搜索找到數據的實際位置,并使用另一次RDMA 讀操作獲取完整數據.對于update(),insert(),delete()等寫操作,客戶端將使用傳統RPC 的方式將請求發給服務器.服務器首先通過遍歷B+樹索引確定查詢鍵的位置,然后插入新的鍵值對.系統將在后臺重新訓練被更新樹節點所對應的模型,客戶端會根據需求獨立地從服務器端獲取新的學習緩存.

Fig.6 The architecture of XStore圖 6 XStore 系統架構
如圖7 所示,測試表明XStore 能夠在只讀負載下每秒處理8 000 萬次請求,在讀寫負載下每秒處理5 300萬次請求,相比于當前最先進的RDMA 鍵值存儲系統分別實現了高達5.9 倍和3.5 倍的提升.

Fig.7 XStore outperforms state-of-the-art baselines in both read-only workload and read-write workload圖 7 在只讀和讀寫負載下XStore 性能均優于現有系統
并發控制協議是并發系統高效執行用戶請求并保證執行結果正確的關鍵組件.在數據庫系統中并發控制協議是保證用戶事務隔離性(isolation)的核心,它通過協調并發事務中各個操作的執行,來保證高效的事務執行與正確的事務語義,例如可串行化(serializability).目前,為了最大化并發系統的性能,研究人員通常會針對具體應用負載場景手動設計并發控制協議.但是,當工作負載發生變化時,原有的針對性并發控制協議優化將難以發揮作用,甚至低于其他簡單的經典算法.
能否利用機器學習方法的適應能力來構建能夠適配各種工作負載的并發控制協議是我們思考的一個問題.首先,需要尋找能夠表示并發控制協議的函數抽象.受到強化學習的啟發,我們發現盡管目前存在多種風格的并發控制協議,但它們都可以被簡單地視為一個以事務當前執行狀態為輸入,并輸出這個事務下一個行動(action)的函數.這為我們應用機器學習方法構建并發控制協議奠定了基礎.
使用機器學習方法近似擬合這個函數存在3 個難點:1)如何表示事務的執行狀態.選擇合適的表示方式需要考慮模型的執行開銷、收集訓練數據的日志開銷,以及不同表示方式所對應的狀態空間大小等.因此需要一個足夠精煉的表示方式以避免潛在的性能問題.2)如何定義并表示事務的行動.類似于執行狀態表示方式,事務行動的定義與表示需要足夠精煉.此外,事務行動的定義與表示還需要覆蓋現有并發控制協議所提供的行動,以保證我們學習的并發控制協議能夠擬合現有算法.3)如何保證近似擬合得到的并發控制協議的正確性.例如保證被協調的事務執行結果可串行化.
對于第1 個難點,我們希望狀態表示方式能夠區分出需要不同行動的事務狀態.經過探索,發現使用由事務類型和操作ID 組成的元組是一個足夠簡單并能夠精確區分事務執行所需執行的不同操作的表達方式.例如,在TPC-C 負載中,可以通過New-Order事務類型及其第2 個操作來表示當前事務執行狀態.
對于第2 個難點,我們希望行動的定義和表示能夠足夠細粒度地控制并發事務的交錯執行,并且能夠對大部分現有并發控制協議進行編碼.經過分析發現,行動定義應包括以下決定:是否需要等待以及等待多久、選取數據的哪個版本來完成讀操作、是否將未提交的臟寫(dirty write)變得可見、立即對事務執行進行驗證還是在提交前再驗證等.最終,將這些可能的行動以類似獨熱編碼(one-hot encoding)的方式構建了行動空間.
至此,我們將學習的并發控制協議表示為由事務狀態和行動構成的二維表格形式(見圖8),使用遺傳算法在不同工作負載下學習適配當前負載的并發控制策略(見圖9),并構建了原型系統Polyjuice[18].
對于第3 個難點,我們使用數據庫系統中常見的事務執行驗證機制作為機器學習并發控制協議的后備機制,從而保證無論模型產生了怎樣的并發控制策略,都只有在符合用戶指定事務語義的執行結果時才能提交.具體而言,我們使用了一個類似于Silo數據庫的驗證機制[19].
經測試,我們發現Polyjuice 能在不同的工作負載下實現高于針對這些負載進行優化的并發控制協議的性能,如圖10 所示.仔細觀察Polyjuice 的事務協調策略,我們發現通過遺傳算法學習,Polyjuice 能夠輸出現有并發控制協議無法做到的更高效的事務交錯執行方式,如圖11 所示.這進一步證明了機器學習方法在為系統軟件探索策略空間方面的巨大潛力.

Fig.9 Polyjuice uses the evolutionary algorithm to train concurrency control policies for specific workloads圖 9 Polyjuice 用遺傳算法為特定工作負載訓練并發控制策略

Fig.10 Polyjuice outperforms existing concurrency control protocols under different workloads圖 10 不同工作負載下Polyjuice 都能優于現有并發控制協議

Fig.11 Polyjuice can interleave transactions more efficiently in the TPC-C workload圖 11 Polyjuice 能更高效地交錯執行TPC-C 負載的事務
將機器學習方法應用到系統軟件的設計與實現中存在諸多挑戰.本節將介紹在實踐中應對這些挑戰的經驗與教訓,希望能對未來機器學習方法賦能系統軟件起到借鑒作用.
首先,我們認為部署在系統軟件中的機器學習模型應該盡可能地簡單.模型執行往往是系統關鍵路徑的一部分,使用簡單模型可以有效避免機器學習方法引入過多額外開銷.為了使簡單模型有限的近似能力在系統軟件中發揮作用,我們需要使用簡單的問題表述(problem formulation),從而使簡單模型成為可選項.以機器學習數據索引為例,我們曾嘗試使用神經網絡模型來替代線性模型,但神經網絡模型不僅收斂過程存在不確定性,而且它們的訓練和推斷時間相比于線性模型高了1 個數量級,無法用于數據索引.以機器學習并發控制為例,我們曾嘗試使用深度強化學習方法來學習并發控制策略.然而,強化學習智能體(agent)的收斂過程同樣具有極大不確定性,并且經常收斂于非最優點,其性能低于遺傳算法學得的策略.因為使用真實數據庫系統運行工作負載來獲得強化學習所需要的環境反饋開銷巨大,難以收集更多訓練數據來進一步探索強化學習方法的可行性,而是轉而使用遺傳算法.
其次,我們認為應用機器學習方法時總是需要設計相應的后備機制.機器學習模型無法保證完全精確,也難以對其誤差范圍提供確切保證,而系統軟件往往需要提供正確性保證,特別是對查詢優化器這類本身解決優化問題的系統組件而言更是如此.因此,我們認為將不精確的機器學習模型與糾正誤差的后備機制相結合是機器學習方法賦能系統軟件的一種潛在范式.以機器學習數據索引為例,為解決模型輸出的數據位置誤差,使用了指數搜索方法來探尋數據的正確位置.這一后備機制的開銷與模型誤差成正比,因此當模型精度足夠高時,并不需要為后備機制付出額外開銷.以機器學習并發控制為例,我們復用了Silo 中為樂觀并發控制(optimistic concurrency control,OCC)設計的驗證方法來保證提交事務的正確性.事務驗證機制原本就是許多并發控制協議所必需的一部分,僅對Silo 驗證機制進行極少修改,從而在保證所學并發控制策略正確性的同時避免引入大量開銷.
最后,我們認為系統軟件實踐者應在引入機器學習方法的同時繼續加深對目標系統的理解.對系統功能進行建模并非易事,它不比模型調優簡單,而往往需要我們對系統有了深入理解后才能凝練出合適的學習任務.因此,當我們發現模型難以達到預期效果時,不妨回過頭審視自身對系統的理解以及對問題的表述.以機器學習數據索引為例,我們通過將數據排序并連續存儲以簡化所需近似擬合的索引函數,進而使用線性模型完成擬合.以機器學習并發控制為例,我們將大部分精力耗費在探尋簡單并具備足夠表達能力的事務狀態與行動編碼方法,而非嘗試不同的模型架構與訓練方法.只有深入理解和分析并發控制協議優化的相關研究,我們才能獲得最終有效的編碼方式,應用機器學習方法才能有所成效.
機器學習方法賦能系統軟件是近期新興的研究方向,國內外研究人員均開展了相關工作.本節對國內外相關研究進行簡要回顧.
自2018 年麻省理工學院和谷歌的研究人員提出學習索引結構(learned index structure)[11]以來,機器學習方法賦能系統軟件這一研究方向已引起了系統研究領域的廣泛關注.麻省理工學院的研究人員隨后在數據查詢執行[20-21]和查詢優化[22-23]方面進一步嘗試應用機器學習方法,并提出SageDB 數據庫學術原型,將多種基于機器學習方法的數據庫組件結合來實現數據分布、工作負載和硬件環境自適應[24-25].在國內方面,上海交通大學的研究人員提出了支持動態負載的高可擴展學習索引結構[12-14],華中科技大學的研究人員則進一步改進了學習索引結構的可擴展性[26].
學習索引結構的提出進一步啟發了機器學習方法在存儲系統中的應用.威斯康星大學和微軟的研究人員提出使用學習索引結構優化日志結構合并樹(log-structured merge-tree,LSM tree)的查詢性能[27].在國內方面,上海交通大學的研究人員提出了一種基于學習緩存與傳統B+樹混合架構的RDMA 鍵值存儲系統[16-17],華中科技大學的研究人員則基于學習索引結構構建了面向分離內存(disaggregated memory)場景下的RDMA 鍵值存儲系統[28].此外,針對機器學習方法在數據庫系統中的應用,中國人民大學的研究人員開展了系統性調研并指出數個重要研究問題與潛在挑戰[29].
機器學習方法為系統軟件的優化和改進提供了新的思路與手段.實踐表明,機器學習方法在優化關鍵系統組件方面極具潛力.然而,應用機器學習方法并非易事,實踐者將面臨定制學習任務與模型、獲取訓練數據、處理模型開銷和誤差等方面的新挑戰.回顧在這一方向上的實踐經驗,我們發現簡單地將現有方法應用到系統組件中的效果往往不盡如人意,我們不僅需要同時具備系統和機器學習知識,還需要不斷調整系統設計和機器學習算法.為了應對這些挑戰,我們從模型設計、系統集成和實踐者自身知識儲備等方面總結了經驗與教訓.
目前,機器學習方法賦能系統軟件仍是一個具有較高門檻的研究方向.一方面,系統研究本身需要大量工程開發并依賴過往經驗積累;另一方面,從系統軟件實踐者的角度來看,機器學習方法更像黑盒工具,難以明確該如何恰當地應用它們.為了促進這一方向的研究,我們建議:
1)建立系統研究人員和機器學習專家之間的協作關系,共同探索如何用機器學習方法賦能系統軟件.
2)以可組合可重用的思想構建系統原型,以便于降低引入與分析機器學習模型難度,更有利于基于過往研究成果與系統代碼開展新的研究.
3)探索面向系統軟件的模型優化技術,以獲得更加適配系統軟件運行限制的模型,包括但不限于縮短訓練時間、減小內存占用和保證模型精度等方面.
機器學習方法賦能系統軟件的研究方興未艾.隨著技術的不斷進步和應用場景的不斷擴展,我們相信機器學習方法在系統軟件方面的應用前景將會更加廣闊,在實際場景中發揮越來越大的作用.
作者貢獻聲明:唐楚哲負責文獻調研和整理,并撰寫前言與第2 節和第4 節;王肇國負責撰寫論文其余部分;陳海波負責確立論文框架、提出指導意見并修改論文.