傳統上,針對特定的工作負載優化調度算法幾乎是不可能的。據麻省理工學院(MIT)官網稱,MIT研究人員開發的一個新系統自動“學習”如何在數千臺服務器上調度數據處理操作,幫助數據中心更高效地運行。
MIT的研究人員利用“強化學習”(RL:一種反復試驗的機器學習技術)來根據特定服務器集群中的特定工作負載調整調度決策的系統。他們構建了新的RL技術,可以在復雜的工作負載下進行培訓。在培訓中,系統嘗試了許多可能的方法來跨服務器分配傳入的工作負載,最終在利用計算資源和快速處理速度方面找到了最佳折衷。不需要人工干預,只需要簡單的指導。
與最優秀的手寫調度算法相比,該系統完成任務的速度快20%到30%,在高流量的時候快近一倍。該系統可以使數據中心以更快的速度處理相同的工作負載,使用更少的資源。
RL的調度
通常,數據處理作業進入以“節點”和“邊”圖表示的數據中心。每個節點代表一些需要完成的計算任務,其中節點越大,所需的計算能力就越大。連接節點的邊將連接的任務鏈接在一起。調度算法根據不同的策略為服務器分配節點。
但是傳統的RL系統不習慣處理這樣的動態圖。為了構建基于RL的調度程序,研究人員必須開發一個模型,該模型可以處理圖形結構作業,并可擴展到大量作業和服務器。
他們系統的“代理”是一種調度算法,它利用圖神經網絡,通常用于處理圖結構數據。為了提出一個適合于調度的圖神經網絡,他們實現了一個自定義組件,該組件聚合圖中不同路徑上的信息——比如快速估計完成圖中給定部分所需的計算量。這對于作業調度非常重要,因為“子”(下)節點在其“父”(上)節點完成之前不能開始執行,因此預測圖中不同路徑上的未來工作是做出良好調度決策的關鍵。
為了訓練RL系統,研究人員模擬了許多不同的圖序列,這些圖序列模擬進入數據中心的工作負載。然后“代理”決定如何沿著圖將每個節點分配給每個服務器。對于每一個決策,組件都根據它在特定任務上的表現來計算獎勵——比如最小化處理單個任務的平均時間。代理人會不斷改進自己的決定,直到獲得盡可能高的回報。
建立基準工作負載
然而,有一個問題是,一些工作負載序列比其他工作負載序列更難處理,因為它們有更大的任務或更復雜的結構。這些過程總是需要更長的時間來處理,因此,獎勵信號總是比簡單的信號要低。但這并不一定意味著系統性能很差:它可以很好地處理具有挑戰性的工作負載,但仍然比簡單的工作負載慢。困難的可變性使得模型很難決定哪些行為是好的,哪些是不好的。
為了解決這個問題,研究人員采用了一種叫做“基線化”的技術。該技術采用具有大量變量的場景的平均值,并將這些平均值用作比較未來結果的基線。在訓練期間,他們為每個輸入序列計算基線。然后,他們讓調度程序針對每個工作負載序列進行多次培訓。接下來,系統對針對相同輸入工作負載做出的所有決策進行平均性能評估。這個平均值是基線,然后模型可以將其未來的決策與之進行比較,以確定其決策是好是壞。他們將這種新技術稱為“依賴于輸入的基線化”。
研究人員說,這種創新適用于許多不同的計算機系統。他說:“這是在輸入過程影響環境的環境中進行強化學習的一般方法,希望每個培訓活動都考慮輸入過程的一個樣本。”“幾乎所有的計算機系統都要處理不斷變化的環境。”
目前,他們的模型是通過模擬來訓練的,這些模擬試圖實時重現傳入的在線流量。接下來,研究人員希望通過實時通信訓練該模型,這可能會導致服務器崩潰。因此,他們目前正在開發一種“安全網”,當系統即將崩潰時,它將停止工作。