鄭 瑩,段慶洋,林利祥,游新宇,徐躍東,王 新*
(1.復旦大學 計算機科學技術學院,上海 200433;2.復旦大學 信息科學與工程學院,上海 200433;3.上海市智能信息處理重點實驗室,上海 200433)
近幾年來, 深度學習(Deep Learning)在機器視覺、語音識別及自然語言處理等領域取得了巨大的成功。通過利用多層神經網絡對于觀測數據的分層特征表示及其非線性變換,抽取特征信息,以發現數據的特征規律[1]。強化學習(Reinforcement Learning)作為機器學習的另一個熱點,其基本思想是通過模仿人類或動物學習中的“嘗試與失敗” 機制,運用智能體在與環境的交互過程中獲得的獎勵來學習最佳決策行為。然而傳統的基于表格的強化學習訓練方法存在嚴重的維度災難(Curse of Dimension)問題,因而使用函數近似器的方法成為主流。隨著 AlphaGo的出現,深度神經網絡與強化學習相互融合,形成既具有強大感知能力,又具有決策能力的深度強化學習(Deep Reinforcement Learning,DRL)。
DRL目前已經被運用至計算機網絡的各個層次,例如網絡層的路由協議、傳輸層的擁塞控制協議、應用層的視頻流媒體和云計算資源分配等。在這些應用中,DRL呈現出兩大顯著的優勢。首先,DRL方法在原理上能夠有效地提升網絡系統的性能。網絡系統中的許多研究問題歸結到資源的優化分配上,而網絡系統的動態性和復雜性導致在具體的研究問題上往往難以建立精確的數學模型和設計高性能的算法。其次,DRL方法提供了一種端到端的設計模式,使得不同網絡系統中資源分配算法設計的邊界模糊化。現有的基于DRL的網絡系統,無論在所處層次和問題模型上差異多大,基本都采用通用的結構。網絡方面的任務主要包括輸入特征選擇、獎勵函數設置和輸出動作設計,人工智能方面的任務是采用標準的或者定制化的神經網絡結構和強化學習算法。因而,在這種狀態輸入至決策動作輸出的端到端設計模式下,網絡資源分配算法設計被極大地簡化,并且設計的經驗可以遷移至原本分野清晰的網絡系統中。
本文首先對DRL技術進行介紹,然后針對5個典型的計算機網絡應用,包括任務調度、視頻傳輸、路由選擇、TCP擁塞控制和緩存,詳細描述了這些應用使用DRL技術的動機、建模方法和測試效果,并介紹這些基于DRL的網絡系統面臨的挑戰。
深度學習在多個領域均取得了顯著的進步,如計算機視覺、機器翻譯等。深度學習的基礎模型為人工神經網絡(Artificial Neural Network,ANN)。全連接神經網絡(Fully Connected Neural Network,FCNN)是最簡單的神經網絡模型,通過對輸入數據的多次非線性變換,抽取特征進而產生輸出結果。用于處理圖像數據的卷積神經網絡(Convolutional Neural Network,CNN),通過權重共享機制可顯著降低參數數量,緩解圖片數據引起的參數過多問題。FCNN和CNN均為前饋神經網絡,即一個神經元的輸出只取決于當前時刻的輸入以及與該輸入相對應的權重參數,并不適用于處理時序數據。為解決這個問題,循環神經網絡(Recurrent Neural Network,RNN)應運而生,通過具有自反饋特征的神經元處理可變長的時間序列數據;長短期記憶網絡(Long Short Term Memory Network,LSTM)可用于解決簡單循環神經網絡中的長程依賴問題;此外,還有專門用于處理圖結構數據的圖神經網絡(Graph Neural Network,GNN)等。更多關于深度學習和神經網絡的介紹可見參考文獻[2]。
強化學習是智能體(Agent)和環境(Environment)的交互過程,該序貫決策過程可使用馬爾可夫決策過程(MDP)進行建模,一般使用五元組描述,其中S代表狀態空間,A代表動作空間,P為狀態轉移概率,p(s′|s,a)表示在狀態s下采取動作a隨后環境狀態轉移到s’的概率,R:S×A→為獎勵函數,γ∈[0,1]為折扣因子,反映了智能體對未來回報的重視程度。強化學習智能體的策略使用π:S×A→[0,1]表示,智能體根據策略π選擇動作。強化學習原理框圖如圖1所示。

圖1 強化學習原理框圖Fig.1 Framework of reinforcement learning
如圖1所示,一個典型的交互過程包括以下幾個過程:在每個時刻t,智能體首先觀測環境的狀態st∈S,隨后基于策略π(st)選擇動作at,動作at作用于環境導致環境狀態轉變到st+1,同時,智能體收到環境返還給的獎勵rt,智能體依據新的環境狀態和策略做出新的決策,該交互過程不斷重復。強化學習智能體的目標即為最大化累計獎勵的期望,當T=∞時,γ<1可防止目標函數需要計算無窮多的瞬時獎勵之和。
有3類標準的方法用于解決上述問題,包括動態規劃方法、蒙特卡洛(Monte Carlo)方法和時間差分(Temporal-Difference)方法[3]。
1.2.1 基于動態規劃求解強化學習問題
令Vπ(s)表示從狀態s開始,執行策略π能獲得的累計獎勵,根據貝爾曼方程:
Vπ(s)=π[rt+1+γVπ(st+1)|st=s]=
∑aπ(a|s)∑s′,rp(s′,r|s,a)[r+γvπ(s′)],
(1)
可以使用動態規劃的方法求解最優策略,其中關鍵的2個步驟是策略評估(Policy Evaluation)和策略改進(Policy Improvement)。策略評估基于貝爾曼方程計算當前策略下各個狀態的值函數,用于評價當前策略π的好壞,而策略改進則指明如何修改策略從而獲得更高的獎勵。令Qπ(s,a)代表在狀態s選擇a,隨后基于策略π進行動作選擇所能獲得的累計獎勵,策略改進的規則為選擇使累計獎勵最大的動作,即:
π′(s)=argmaxaQπ(s,a)=
argmaxaπ[rt+1+γVπ(st+1)|st=s,at=a]=
argmaxa∑s′,rp(s′,r|s,a)[r+γVπ(s′)]。
(2)
策略迭代即不斷重復策略評估和策略改進過程,從而收斂到最優策略?;趧討B規劃的方法雖然數學原理性較強,但是需要已知完整且精確的環境模型,因此稱之為基于模型(Model-based)的算法。由于實際的環境模型大多未知,基于動態規劃的方法適用范圍較窄。
1.2.2 基于蒙特卡洛方法求解強化學習問題
蒙特卡洛(Monte Carlo)方法不依賴于環境模型,只通過智能體和環境交互生成的軌跡數據以采樣平均的方式進行學習,其中軌跡數據包括環境狀態、選擇動作以及獲得獎勵。為了計算估計的值函數,蒙特卡洛方法要求智能體和環境的交互過程必須以回合(Episode)的形式進行。一個Episode是指從智能體開始和環境交互,直到停止此次交互的完整中間過程,在此過程中產生的軌跡數據可以表示為S1,A1,R1,S2,A2,R2,….ST,AT,RT,T為本次交互的截止時間。估計狀態St的累計獎勵可通過下式進行計算:
Gt=Rt+γRt+1+γ2Rt+2+…+γT-tRT。
(3)
針對參數的更新,蒙特卡洛方法仍然采取策略迭代的思想,當一個或多個 Episode結束時,對值函數進行更新,同時對策略進行改進,隨后根據新的策略繼續生成軌跡數據。值函數的更新是基于采樣平均的方法,針對蒙特卡洛采樣的多條軌跡數據,只有出現狀態St的軌跡數據才會被計算累計獎勵,使用多條軌跡數據求出的均值去更新值函數。增量式更新公式為:
V(st)←V(st)+α(Gt-V(st))。
(4)
當軌跡數據較多時,采樣平均的方法是對值函數的無偏估計。在實際應用中,由于動作值函數可以更確切地表示出策略,因此估計的是動作值函數,其計算方法和計算值函數的方法類似。
1.2.3 基于時間差分方法求解強化學習問題
蒙特卡洛方法雖然不需要精確的環境模型,并且實現方法簡單,但是對狀態值函數的更新必須要等待一個Episode結束。時間差分方法可以直接在每一步對值函數進行更新:
V(st)←V(st)+α[Rt+1+γV(st+1)-V(st)],
(5)
以上式進行更新的方法稱為TD(0),也稱為單步時間差分(One-step TD)。單步時間差分的2個代表性算法為SARSA和Q-learning算法。SARSA算法為同策略(On-policy)算法,其動作值函數的更新公式為:
Q(St,At)←Q(St,At)+α[Rt+1+
γQ(St+1,At+1)-Q(St,At)]。
(6)
Q-learning算法為離策略算法(Off-policy),其動作值函數的更新公式為:
Q(St,At)←Q(St,At)+
(7)
式中,On-policy是指SARSA算法在狀態St+1通過當前策略采取動作At;而Q-learning算法在更新時采用狀態St下對應的最大值函數作為目標,為Off-policy。
傳統的強化學習使用表格的方法表示策略π。然而當狀態-動作空間較大時,無法繼續使用基于表格的方法,此時可使用函數近似器去近似策略π,如圖2所示。當使用參數為θ的神經網絡去近似策略π時,稱之為DRL,并使用πθ表示策略。
由于大部分情況下外界環境的模型均是未知(Model-free)的,本節只介紹模型未知情況下如何使用DRL方法訓練智能體。

圖2 深度強化學習原理框圖Fig.2 Framework of deep reinforcement learning
1.3.1 基于值函數的深度強化學習方法
(1) 深度Q網絡
深度Q網絡(Deep Q-network,DQN)[4]是Q-learning算法的擴展,使用神經網絡去近似動作值函數,優化目標即最小化損失函數:
Li(θi)=πθi[(yi-Q(s,a;θi))2],
(8)



(9)
Q網絡參數θ的更新可使用標準的隨機梯度下降。
(2) 深度雙Q網絡

(10)
(3) 基于優先采樣的深度雙Q網絡
DQN使用經驗回放機制打破數據之間的關聯性,然而隨機采樣軌跡數據進行訓練的方式并不能反映不同樣本的重要性。此外,在回放池容量有限的情況下,存在樣本還未被采樣就丟棄的現象。為解決這個問題,Schaul等人[6]提出了基于優先采樣的深度雙Q網絡(Double Deep Q-network with Proportional Prioritization),使用樣本的時間差分偏差(TD-error)作為判斷優先級的標準,對于偏差為δi的樣本,其采樣概率的計算公式為:
(11)
式中,pi為通過樣本偏差計算出的等級。
此外,還有其他針對DQN進行改進的工作,Wang等人[7]提出了Dueling Nerwork,通過將動作值函數拆分為值函數和優勢函數相加的方式,解決在某些狀態下選擇不同動作影響較小的問題,從而提升訓練效率。Hausknecht等人[8]基于RNN提出DRQN來處理歷史狀態信息。
1.3.2 基于策略梯度的深度強化學習方法
上節中基于值函數的方法通過Q網絡輸出在給定輸入狀態下針對各個動作的估計的動作值函數,只適用于解決離散動作空間的問題。在本節中介紹的基于策略梯度的方法不僅可以解決離散動作的問題,還可以解決連續動作空間的問題。
基于策略的方法使用參數為θ的神經網絡直接表示策略,稱之為策略網絡。針對離散動作的情況,神經網絡直接輸出概率分布,指明了選擇各個動作的概率;針對連續動作的情況,神經網絡可輸出選擇動作的正態分布均值和方差,并依據該分布去采樣連續的動作值。在Model-free情況下,使用蒙特卡洛(Monte Carlo)采樣方法進行數據的采集,智能體和環境的交互必須是以Episode的方式進行的,這種方法是為了更好地計算某個(狀態,動作)數據對的累計獎勵。直接對目標函數計算梯度得到:
(12)
典型的基于策略梯度的算法REINFORCE[9]通過下式進行神經網絡參數更新:
θi←θi+α∑tθiln(πθi(st,at))vt,
(13)
式中,vt可直接選取為Qπθi(s,a)。然而,由于參數的更新是依賴于蒙特卡洛采樣的結果,因此方差較大,可使用優勢函數(Advantage Function)Aπθi(s,a)作為vt從而降低方差,Aπθi(s,a)=Qπθi(s,a)-b,b是一個基線(Baseline),有多種選取的方法,簡單的方法即為選取多次采樣的均值,此時可直接認為b是一個常數。
1.3.3 混合值函數和策略梯度的方法
(1) 行動者-評論家算法及其改進
上文提到基于策略梯度的方法在進行參數更新時,為降低訓練的方差,需要選擇一個合適的基線,當使用迭代過程中動態改變的值函數作為基線,這就是行動者-評論家(Actor-critic)算法[10]。Actor-Critic算法是基于值函數的方法和基于策略梯度方法的融合,共包括兩個神經網絡,其中Actor網絡用于動作決策,Critic作為附加模塊專門用于計算基線的取值;與此同時,Critic網絡也隨著迭代次數的增加不斷進行自我更新。令Actor網絡的神經網絡參數為θai,Critic網絡的神經網絡參數為θvi。Actor網絡參數的更新公式為:
θai←θai+α∑tθailn(πθai(st,at))vt,
(14)
Critic網絡輸出對當前狀態的值函數的估計值,參數更新公式為:
Vπθvi(st;θvi))2。
(15)
注意Actor網絡和Critic網絡除輸出層外均采用相同的神經網絡結構。
Mnih等人提出的A3C算法[11]是輕量級的異步Actor-Critic算法,利用多個智能體在多個線程和各自的環境進行交互,從而產生軌跡數據;每個線程的智能體基于自身存儲的軌跡數據進行參數更新,一個中心智能體負責收集多個線程并生成全局的網絡參數,隨后分發給各個智能體。這種方式成功打破了數據相關性,并且解決了經驗回放機制只能使用離策略(Off-policy)的局限性。
(2) 信賴域策略優化算法及其改進
策略梯度方法存在高方差的問題,并且算法的性能對超參的設置較敏感。信賴域策略優化算法(Trust Region Policy Gradient,TRPO)[12]解決的問題是如何合理地選擇步長從而使得回報函數單調遞增。它將優化的損失函數修改為:

(16)
式中,Aθ(st,at)=θ[Rt|st,at]-Vθ(st)。近端策略優化(Proximal Policy Optimization,PPO)算法[13]可看作是TRPO算法的近似版本,它將TRPO的約束項作為正則項添加到損失函數中,降低了TRPO算法的實現復雜性,應用性更廣。此外,Heess等人[14]提出了適用于大規模訓練的分布式近端策略優化算法。
(3) 深度確定性策略梯度算法及其改進
盡管PPO算法的學習效率很高,但是PPO算法使用的隨機策略在動作空間維度較大時,需要采集大量的樣本,才能對當前的策略進行合理的評估。其中隨機策略只針對某一個輸入狀態,策略網絡輸出的是選擇動作的概率分布。為解決這個問題,Lillicrap等人[15]提出深度確定性策略梯度算法(Deep Deterministic Policy Gradient,DDPG),DDPG為確定性策略,即策略網絡直接輸出具體的選定動作。
DDPG仍然采用Actor網絡用于輸出動作,Critic網絡用于輸出對值函數的估計。為了保證算法一定程度的探索過程,DDPG給輸出動作添加了額外的噪聲Nt:
at=π(st;θ)+Nt。
(17)
此外,為了打破數據之間的相關性,DDPG也采用經驗回放機制和額外設立的目標網絡。DDPG實現連續控制需要訓練2個網絡,而Gu等人提出的NAF[16],將動作值函數分解為狀態值函數和優勢值函數,只需要訓練一個模型。更多關于DRL的技術介紹見文獻[17-18]。
本文主要介紹DRL在5個典型的網絡系統中的應用,包括任務及數據流調度、視頻傳輸、路由選擇、TCP擁塞控制以及緩存問題。
任務調度是計算機網絡中的一個典型應用,如圖3所示。互聯網上的用戶源源不斷地產生計算任務,從普通的網頁瀏覽到對計算量需求較高的大數據分析以及深度學習計算任務等,這些任務會上傳到云數據中心由計算機集群進行處理。任務調度算法在這個過程中起著至關重要的作用,一個高效的任務調度算法可以合理利用計算資源,根據用戶的不同需求進行優化,從而在保證用戶滿意度的同時降低數據中心的開銷。最優的調度策略與任務負載和環境條件(如任務到達的數據分布)有關。盡管具體的應用場景以及假設有所不同,但是目前的解決方法基本上是針對某種特定的任務負載以及任務到達的分布,建立理論模型并設計特定的任務調度算法,且為了達到較好的性能常常需要在實際環境下進行詳盡的測試與修正。當這些環境條件發生改變時,可能需要重復上述流程重新設計算法。近年來出現了許多使用DRL技術實現自動化的任務調度算法設計。

圖3 云數據中心任務調度原理圖Fig.3 Framework of job scheduling in cloud data center
2.1.1 面向獨立任務的調度
MIT的工作DeepRM[19]最早將DRL應用到數據中心任務調度中,DeepRM是一個簡化的集群多資源任務調度器,稱之為DRL智能體。在離散的時間片,任務以設定好的分布在線到達從而形成任務隊列,其中每個任務請求一定時間長度的CPU和內存資源。在每個時間片,DeepRM觀測系統狀態,包括CPU和內存的占用情況以及任務隊列中任務的資源請求狀況,并根據系統狀態和策略網絡進行決策,策略網絡為使用同全連接神經網絡近似的強化學習策略,決策內容為調度當前任務隊列內的一個或多個任務到相應的CPU以及內存的待執行隊列中。DeepRM每做出一個決策,將收到系統返還的獎勵信號,由于最終的優化目標設定為最小化平均每個任務的完成時間與請求時間的比值,因此將單步獎勵信號設置為:
(18)
式中,J代表當前決策時間點和上一個決策時間點之間的系統內所有任務,Tj為任務j的請求時間。DeepRM使用帶有基線的REINFORCE算法進行訓練。實驗結果顯示DeepRM的性能超過目前基于領域知識的傳統算法,且在重負載的情況下效果更明顯。
DeepRM假設所有資源均在一個統一的資源池中,然而在實際情況下,常常需要不同物理位置的數據中心進行跨區域的任務調度,因此Chen的工作[20]將DeepRM擴展到更復雜的情況,即多資源池的情況。針對智能體的輸入狀態,除了考慮任務隊列中任務的請求資源狀況外,它將單個機器的CPU和內存占用狀況拓展到兩個機器的CPU和內存的占用狀況,動作空間擴大一倍。實驗結果顯示,經過拓展后的DeepRM仍然取得了比傳統任務調度算法(如最短任務優先算法)更好的性能。
Chen的工作[20]存在的問題是,由于輸入狀態要考慮所有資源池(機器)的資源占用情況,而神經網絡的輸入必須是固定維度的,限制了它只能應用到資源池數量較少的場景。為解決這個問題,Li等人提出了DeepJS[21],DeepJS仍然是一個基于DRL的任務調度系統,不同之處在于DeepJS以裝箱問題為原型,優化目標是最小化Makespan,其中Makespan定義為最后一個任務的完成時間。DeepJS基于神經網絡計算不同的(任務,機器)數據對的適應度(Fitness),在分配任務時,將任務分配到適應度最高的機器,由于此時神經網絡的輸入狀態只需要考慮某一特定的機器的資源占用狀況和新到達的任務的請求資源狀況,因而可以固定輸入的維度。這種方法的可擴展性較高,不再受限于輸入維度的限制。
2.1.2 面向關聯任務的調度
上一節的討論并沒有考慮任務之間的關聯性,然而在實際的大規模并行化任務處理平臺,如Spark,經常需要處理有關聯性的任務,即多個任務之間的執行順序具有關聯關系,當關聯任務對資源的需求不同時,使得求解最優策略變得更加困難,是公認的NP-難問題[22-23]。
Spear[24]結合蒙特卡洛樹搜索(MCTS)和DRL技術實現對關聯任務的調度,任務之間的關聯關系被建模為有向無環圖(DAG),一個完整的任務對應一個DAG,一個DAG內有多個節點,稱之為子任務,子任務之間的關聯關系通過有向邊表示。在普通的MCTS中,擴展和模擬的過程會隨機選擇動作,為更有效地探索狀態空間,Spear在擴展和模擬的步驟中使用DRL智能體協助探索。DRL智能體的輸入狀態包括系統資源的占用狀況、隊列中有限任務個數對資源的請求狀況、每個節點的孩子節點個數、有關運行時間以及任務負載的關鍵路徑信息,輸出動作為選擇一個隊列中的任務去調度或者空動作引發時間前進一步。為最小化Makespan,Spear在只有選擇空動作引發時間前進時才會獲得一個獎勵,其數值為-1,由此將累計獎勵和優化目標進行關聯。實驗測試時將Spear與多個傳統算法進行對比,包括Graphene,Tetris,SJF,結果顯示Spear取得了更低的Makespan時間,主要原因是Spear考慮了更多的特征。
Mao等人提出的Decima[25]是另一個基于DRL實現關聯任務調度的系統。Decima仿照Spark平臺的設置,考慮了更為復雜的情況,一個完整的任務對應一個DAG。一個DAG內有多個節點(子任務),每個節點內有多個可并行處理的任務。為了提升系統的可擴展性,Decima使用了圖神經網絡來應對不同類型的DAG。具體來講,Decima首先對DAG中的每個節點進行編碼,使用的信息為所有孩子節點的編碼向量和當前節點的特征向量。其次,Decima為每個DAG新增了一個全局節點,該全局節點將該DAG內所有節點視為孩子節點,對該全局節點進行編碼得到DAG級別的全局節點向量。除此之外,Decima將所有DAG的全局節點視為子節點得到最終的編碼向量。注意以上所有的編碼過程都是通過圖神經網絡完成的。在智能體需要做出決策時,Decima針對當前所有可調度的節點,基于上述的各類編碼向量計算調度分數,并依此得到調度決策和分配的處理器數量。為了最小化平均任務完成時間,Decima將獎勵信號設置為前后兩次相鄰決策時間點內系統存在的任務數量與該時間差的乘積?;赟park平臺的測試結果顯示,在一個具有25個節點的集群上,即使針對性能最優的加權公平(Weighted Fair)傳統算法,Decima仍降低了約21%的平均任務完成時間。
除了任務執行先后順序的依賴關系外,大規模并行任務的調度也是需要解決的重要問題。由于動作空間的大小會隨著任務數量和執行任務的服務器的數量呈現指數型增長,文獻[27]在異構服務器的場景下提出了基于多任務深度強化學習(Multi-task Learning)的調度算法進行高效調度并行任務,其中異構服務器指不同服務器具有不同的CPU核數量以及主頻。每個在線到達的任務包含多個可并行執行的子任務。訓練算法使用A3C,多任務學習的思想體現在針對每個任務的子任務均設置一個Actor網絡,多個子任務共享一個Critic網絡,其中各個子任務的Actor網絡的前3個全連接層共享模型參數,與此同時每個子任務獨占隨后的一個全連接層以及一個輸出層,這種架構成功將動作空間的大小由NM降為MN,增加了算法的可擴展性。
2.1.3 面向計算和節能的聯合調度
隨著深度學習的發展,數據中心也出現了更多運行機器學習、大數據分析等對計算量需求較大的應用,導致數據中心消耗的電量逐年增長。研究表明,由于計算而消耗的數據中心電量約占比56%,冷卻系統消耗的電量占比達到30%[28]。因此如何同時實現合理的任務調度,從而高效利用計算資源以及降低冷卻系統的電量消耗是一類重要問題。目前,聯合考慮上述兩條因素進行優化的方法大多依賴于靜態的或不恰當的動態模型,不能很好地解決上述問題。
DeepEE[29]利用DRL技術處理動態多變的系統狀態,如動態變化的工作負載和環境溫度。由于優化計算資源(任務調度)為離散動作,而優化冷卻策略需要做出調整氣流速率的連續動作,因此DeepEE將策略梯度和DQN進行結合,策略網絡輸出調整氣流速率的連續動作,該連續動作也將作為DQN中Q網絡(Q-network)輸入狀態的一部分,依據Q-network的輸出可確定將任務調度到哪臺服務器執行的連續動作。與此同時,DeepEE也采用了兩級時間的控制方法,即增加一個時間標志變量去解決優化計算和冷卻策略需要不同時間粒度的問題。
DeepEE假設機架內所有的服務器都是同構的,Deep-EAS[30]則是針對異構服務器利用DRL技術進行高效計算和節約能量的聯合優化。除此之外,文獻[31]提出使用分層架構去解決任務調度和能量管理的問題,包括全局層面和本地層面。全局層面使用DRL技術進行任務調度,并使用自編碼器和權重共享機制去加速訓練;本地層面使用LSTM神經網絡進行負載預測,并使用無模型的強化學習進行能量管理。針對Google的真實數據進行測試,結果顯示該分層的架構可以保證在相同延遲的基礎上降低能量消耗。
針對一些精心設計的數據中心,電量有效利用率(PUE)已經降到了較低的水平,此時不必再考慮冷卻系統等附加設備對電量的消耗,而如何合理地進行任務調度從而高效利用計算資源成為關鍵問題。目前已有方法的邏輯多是遷移虛擬機以搶先執行計算量小的任務,然而當前數據中心出現了大量強計算需求的任務時,如大規模數據分析、深度學習等,導致前人的調度算法仍有一定的提升空間。文獻[32]專門針對強計算需求的任務,利用DRL技術進行自動化的任務調度。仿真數據顯示,針對具有1 152個處理器的新加坡國立超算中心(NSCC),訓練一個任務調度的DRL智能體需要消耗高達40天的時間。為解決這一問題,文獻[32]提出了離線訓練DRL智能體的方法。它首先使用從真實數據中心收集的任務到達信息和服務器的計算信息預訓練了一個基于LSTM神經網絡的計算模型,利用該計算模型輸出服務器的電量消耗、溫度等近似信息,DRL智能體則基于這些近似信息進行離線訓練。針對NSCC的真實任務到達數據的測試結果顯示,DRL智能體節約了近10%的能源消耗,并降低了3℃的處理器溫度。
2.1.4 面向數據中心網絡流的調度
數據中心網絡流調度技術是指合理調度由數據中心應用產生的數據流,從而有效改善數據中心的網絡流傳輸和優化用戶體驗[33]。一條數據流是指發送端和接收端之間跨過網絡傳輸的一個應用數據單元[34]。數據中心的數據流可分為兩種:一種為單獨的數據流,另一種是一組有關聯關系的網絡流組(Coflow)。針對數據中心網絡流調度問題,通常需要專家花費較長的時間去設計依賴于負載和環境條件的啟發式算法。然而當環境條件改變時,如流大小的分布發生變化,啟發式算法性能會出現明顯下降,需要重新花費時間和人力成本設計新的啟發式算法。
針對單獨的數據流,Auto[35]利用DRL技術進行自動化的數據中心網絡流調度。數據中心的數據流呈現明顯的長尾分布,大部分數據流均為短流,但傳輸的數據量主要由小部分的長流決定。針對上述數據流的統計特征,Auto采用了具有外圍系統和中心系統的二級架構,其中外圍系統直接部署在終端服務器,采用多級隊列的方式進行短流本地快速決策。每一個到達的數據流首先進入最高級別的隊列,當轉發的數據量超過一定閾值時,則自動被降低到更低級別的隊列中,而判斷數據流優先級的閾值則每隔一段時間由中心系統的DRL智能體(sRLA)決定。除此之外,中心系統還有另一個智能體(lRLA)負責只針對長流的決策,包括確定優先級、速率和路徑。sRLA智能體接收固定數量的已完成的短流信息作為輸入狀態,輸出動作為區分各個隊列的判斷閾值,獎勵信號設置為前后兩個時間段內的數據流完成時間。lRLA智能體接受固定數量活躍的和已完成的長流信息作為輸入狀態,獎勵信號設置為前后2次決策時間段內吞吐量的比值。在一個具有32個服務器的小型數據中心對Auto的測試結果顯示,相比于目前已有算法,Auto降低了48.14%的平均流完成時間。
針對Coflow的調度問題,DeepWeave[36]使用DRL技術產生Coflow的調度策略,將一個任務產生的Coflow建模為一個DAG。DeepWeave的輸入狀態為Coflow中每個數據流信息和DAG的形狀。智能體主要包括3個部分,首先使用圖神經網絡模塊提取DAG中的特征信息,然后策略網絡模塊接收這些特征信息并輸出一個優先級列表,最后策略轉化模塊負責將優先級列表轉化為具體的調度決策。實驗結果顯示DeepWeave在任務完成時間指標上實現了1.7倍的加速。
目前視頻傳輸所消耗的流量已占據互聯網流量的絕大部分。流媒體系統分為服務器端和客戶端,服務器端主要存儲媒體描述文件(.mpd文件)和視頻塊(Chunk)文件。媒體描述文件包含視頻的基本信息,包括各個視頻塊文件請求的路徑模板、可請求碼率等;視頻塊文件是服務器端將一段完整的視頻切成若干秒(一般為2~10 s)后保存的不同清晰度的視頻文件版本。當客戶端需要觀看視頻時,會先向服務器請求并解析媒體描述文件,隨后開始不斷地向服務器請求不同碼率的視頻塊文件。當服務器端收到客戶端的請求后開始向客戶端傳輸視頻塊文件,客戶端在播放器上進行播放。為了保證在復雜的網絡環境中盡可能地提升用戶的觀看體驗,客戶端的自適應比特率選擇算法(ABR)需要實時地進行視頻塊碼率的選擇,以保證用戶的觀看體驗。ABR算法需要考慮避免視頻卡頓、碼率波動過于頻繁等因素。如何根據網絡帶寬的變化而實時地進行恰當的碼率決策是非常復雜和值得研究的問題。

圖4 基于HTTP的視頻傳輸原理圖Fig.4 Framework of HTTP adaptive video streaming
在流媒體系統中,碼率決策的傳統經典算法有很多,例如Huang等人提出的BBA(Buffer Based Approach)[37]便是客戶端在進行碼率決策時,根據當前的緩存長度來選擇下一個視頻塊的碼率大小。除了基于當前緩存長度做碼率決策外,Liu等[38]人提出可以根據前幾個時刻的網絡吞吐量來預測下一個時刻的吞吐量,從而進行碼率決策。傳統算法雖然相對容易實現,也在大多數網絡情況下可行,但是固定的參數與固定的決策方式并不適應于所有的網絡環境。BBA算法對緩存上下界的不恰當設置可能導致有些網絡環境中的卡頓及碼率頻繁波動,影響用戶觀看體驗。因此,結合DRL的視頻碼率決策方法應運而生,通過對DRL的模型進行各種網絡帶寬環境的訓練,使訓練出的模型在視頻播放過程中做出更加正確與恰當的碼率決策。
2.2.1 視頻點播
視頻點播(Video on Demand,VoD)是流媒體應用中最為常見的應用,服務器端將用戶可以點播的視頻制成不同碼率的視頻塊并存儲,客戶端不斷請求已經存儲好的視頻塊,在播放器進行拼裝與播放。
2013年,Claeys等人[39]提出了一種基于Q-learning的HAS(Http Adaptive Streaming)客戶端,與現有的傳統啟發式算法相比,Q-learning的方法訓練出的決策模型可以讓客戶端根據當前網絡環境動態地做出相應的碼率決策。實驗結果表明,結合Q-learning的決策算法比傳統算法的觀看體驗(Quality of Experience,QoE)提升9.7%。但基于Q-Learning進行模型訓練,存在對環境的變化反應較慢的問題,針對一個給定狀態,當一個動作對應的Q值相比于其他動作較低時,該動作被選擇的概率較低,導致該動作的信息獲取變慢,造成該動作對應的Q值修改速度慢。在低學習率的情況下,上述問題尤為明顯。針對這個問題,Claeys等人[40]又提出了一種頻率調整Q-Learning算法(Frequency Adjusted Q-Learning Approach),對模型的更新方式進行了修改,這樣的改進有效避免了模型中Q值低的動作不易被選擇的問題,加快模型的更新,進一步提升模型的性能。Martin等人[41-42]于2016年提出基于Q-Learing自適應方法DASH-QL來提升視頻播放的QoE。該系統考慮的網絡狀態包括當前緩存長度、當前預測帶寬和上一個視頻塊質量,并依據這些狀態信息決策下一時刻的視頻碼率。實驗結果表明,DASH-QL取得了更高的QoE,且收斂速度更快。
Q-Learning算法在處理連續狀態空間時,只能將狀態變量的連續取值進行大致的切分。當進行相對細致的切分時,會導致維度爆炸問題,并且在實際測試環境中很難把每個區間都不斷地遍歷,增加了訓練DRL智能體的難度。為解決這個問題,Gadaleta等人[43]提出用基于DQN的機器學習框架,通過神經網絡近似動作值函數,并使用經驗回放機制加速模型收斂。系統狀態包括前一個視頻質量qt-1、當前緩存長度Bt以及下一個可選取的視頻塊特征等,結合當前視頻質量qt來選擇下一時刻請求的視頻塊碼率。Gadaleta等人在仿真和真實環境都進行了系統部署,實驗結果顯示D-Dash在各種帶寬條件下對QoE都有提升,并且D-Dash框架收斂速度更快。
Mao等人于2017年提出Pensieve[44],該模型通過客戶端視頻播放器獲取過去8個歷史時刻信息,據此生成系統狀態,包括下載每個視頻塊的平均吞吐量、下載每個視頻塊所花的時間、當前緩存長度、上一個請求片段的碼率、剩余未下載的視頻塊數量以及可供下載的視頻碼率。Pensieve基于系統狀態選擇下一個視頻塊的請求碼率,實驗結果顯示Pensieve比傳統算法實現了更高的QoE。
為了將Pensieve在實時運行過程中的計算開銷降低,并進一步提升Pensieve模型的性能,2020年Huang等人將DRL與傳統算法BBA進行結合,提出了Stick網絡[45]。Stick將原本Pensieve的離散動作修改為連續動作,即 BBA決策的上下邊界??蛻舳送ㄟ^修改后BBA算法的上下邊界和當前緩存長度去選擇請求的下一個視頻塊碼率。Huang等人同時又提出一個輕量級的Trigger網絡,用來決策當前情況是否需要調用Stick網絡來對BBA的上下邊界進行調整,以減少頻繁使用Stick算法帶來的計算開銷。Huang等人先在仿真系統上進行了驗證,并在以Dash.js為基礎的真實系統上進行了部署。實驗結果表明,相比于原本的Pensieve模型,Stick+Trigger網絡模型可以提升9.41%的性能,并減少88%的計算開銷。
受Pensieve[44]模型的啟發,Guan等人[46]于2020年提出Perm模型,運用DRL技術優化視頻點播在多徑傳輸情況下的用戶體驗。Perm在Pensieve原有的架構中加入了一個新的Actor網絡負責流量在各條路徑上的分配,原有的Actor網絡依舊負責下一個視頻塊的碼率選擇,Critic網絡負責協助優化兩個Actor網絡的參數。因為流量分配的動作為連續取值,Perm使用DDPG方法進行訓練。他們在仿真系統和真實系統中都進行了系統的部署,兩條傳輸路徑分別為4G與WiFi。與傳統多徑算法和單條路徑的流媒體系統相比,QoE與QoS(Quality of Service)提升了10%~15%。
2.2.2 360全景視頻傳輸
隨著全景攝像機和頭戴式設備的發展,360全景視頻形式逐漸流行。而完整的360全景視頻的傳輸通常需要極大的帶寬支持,可通過視角分塊(Tile)的方法解決。為了保證用戶的QoE,需要對用戶的視角進行預測,并在視角區域內為用戶分配盡可能多的帶寬去下載更清晰的視頻。
Zhang等人[47]于2019年提出結合LSTM神經網絡的Actor-Critic模型的DRL360流媒體框架??蛻舳藢⒅案鱾€時間點上網絡的帶寬和視角范圍作為LSTM網絡的輸入,LSTM網絡預測下一時刻的帶寬和視角位置。隨后,將LSTM網絡預測的帶寬和視角位置,結合當前視頻緩存長度以及保存的下一時刻可獲取的各個視頻塊大小,作為Actor-Critic模型的輸入,讓其決策下一時刻在預測視角范圍內所有Tile的碼率。他們將DRL360部署在真實系統上并與已有的算法進行比較。實驗結果表明,在多種帶寬環境下,DRL360平均提升了系統20%~30%的QoE。
由于360視頻的決策是指數級的決策空間,因此直接同時對360視頻的每個Tile都做決策是非常困難的。假設有N個Tile,每個Tile都有k個碼率,則動作空間共有Nk個決策。DRL360模型為了避免這個問題,碼率決策只是做了預測視角范圍內的視頻塊碼率決策,并沒有考慮所有Tile的視頻塊決策。Fu等學者[48]為解決這個問題,提出基于序列化的ABR 360視頻決策模型,將其命名為360SRL。假設360視頻被分為N個Tile,每個Tile處都有k種碼率可以選擇。他們的模型通過連續做N次視頻塊碼率決策,將Nk的動作空間降低到每次動作空間只有k,但連續做N次決策,從而可以對360度視頻的所有Tile做出碼率決策。在決策過程中,360SRL根據當前網絡的狀態去輪番選擇每個Tile下一時刻的碼率,系統狀態包括過去m個時間點下載視頻塊的平均吞吐量、此處Tile可選擇的視頻塊大小、上一時刻該位置Tile在視角范圍的預測概率、播放緩存長度、此處Tile出現在視角范圍內的預測概率,以及上一時刻選擇的所有Tile的視頻塊總大小。360SRL使用DQN網絡來訓練模型。仿真系統實驗表明,360SRL相較于傳統360視頻算法,對平均QoE的提升達到了約12%。
2.2.3直播
實時的視頻流傳輸(Live Streaming)也是如今流媒體應用中一個重要研究領域。由于觀看直播視頻的用戶一般期望客戶端播放視頻的時延較小,因此直播系統的碼率選擇問題比點播更加困難,視頻的卡頓、碼率的切換和緩存長度都會導致用戶體驗的下降。
Hooft等人于2015年[49]提出引入強化學習的方法,在直播系統中對兩個傳統啟發式方法(MSS和QoE-RAHAS)做參數優化,以提高這兩個方法的性能。他們通過強化學習感知網絡的帶寬特性,提高客戶端對網絡帶寬的預測能力。在直播系統中,獎勵函數也被重新定義,緩存的長度作為一項線性的懲罰。Hooft等人使用Q-Leaning模型訓練,模型考慮的狀態包括當前可用帶寬和當前帶寬變化劇烈程度。隨后使用兩個啟發式模型去決策下一時刻選擇的視頻碼率,再通過獎勵函數去修改兩個啟發式算法中的參數。NS-3仿真平臺下的實驗表明,使用強化學習方法優化傳統啟發式方法的參數后,可以使MSS算法與QoE-RAHAS算法得到一定程度的改進,在保證視頻質量相對較好的情況下,時延分別減少2.5%與8.3%。
Huang等人[50]提出,視頻的碼率并不能總是精準地反映視頻質量。視頻質量和編碼方式與圖像各種特征都息息相關,應該用更科學準確的方法為視頻質量打分,然后據此進行直播碼率的選擇。為解決這個問題,Huang等人[50]提出視頻質量感知碼率控制(Video Quality Aware Rate Control,QARC)系統。該系統中視頻質量預測網絡 (Video Quality Prediction Network,VQPN)設計結合了Netflix提出的VMAF( Video Multi-method Assessment Fusion)評價標準,可以根據之前時刻及當前時刻的網絡狀態和視頻幀等特征預測下一時刻的視頻質量。系統中的視頻質量強化學習選擇網絡(Video Quality Reinforcement Learning,VQRL)為A3C架構,通過綜合考慮下一時刻的視頻質量、當前的網絡狀態等各個特征,決定下一時刻選取的直播碼率。在仿真環境下將QARC和目前多個現有多個算法的對比結果顯示,QARC對平均視頻質量提升最高可達18%~25%,并且減少了23%~45%的平均延時。
隨著互聯網的高速發展,網絡規模不斷擴大,傳輸數據量也不斷增加。傳統的路由算法路由策略較為固定,且很難感知實時的網絡狀況,易造成較大的傳輸時延和網絡資源的浪費。DRL提供了一種解決路由問題的新手段,無需對網絡環境進行建模,通過智能體與網絡環境的不斷交互,即可實現端到端的智能路由算法。圖5為基于DRL的路由算法框架圖。路由決策控制器為強化學習智能體,通過觀測實時網絡環境獲取相應狀態信息,經過神經網絡處理后得到路由決策,進而執行數據包的傳輸。DRL在路由問題中的應用主要包含數據包路由和域內流量規劃兩類問題:在數據包路由問題中,狀態信息一般為數據包目的節點,路由決策為數據包下一跳節點,優化目標為降低數據包平均傳輸時延;在域內路由規劃問題中,狀態信息一般為流量需求矩陣,路由決策為數據流鏈路分配比,優化目標為平衡鏈路負載。

圖5 基于DRL的路由算法框架圖Fig.5 Framework of DRL-based routing algorithm
2.3.1 數據包路由
Boyan 等人[51]首次將強化學習應用于數據包路由問題中,提出了動態的路由轉發策略Q-routing算法,以最小化數據包的平均傳輸時延。各路由節點均視為獨立的智能體,并擁有獨立的Q值表用于存儲各狀態動作值函數,以此作為節點間傳輸時間的估計。Q-routing算法中的狀態空間為數據包的目的節點編號,動作空間為各路由器的相鄰節點,獎勵為數據包的鏈路傳輸時延和排隊時延。各路由器基于Q-learning算法進行訓練,當數據包從當前節點傳輸至所選動作相應節點后,當前節點將收到包含對應獎勵的反饋信息,進而完成Q值表的更新。在與最短路徑算法的對比實驗中,Q-routing算法能實現較低的數據包傳輸時延,并能適應動態的網絡環境。然而,Q-routing算法在網絡負載較大時無法及時調整路由轉發策略,且對于網絡負載變化適應較緩慢。為解決上述問題,Choi等人[52]提出了PQ-routing算法,利用歷史的路由信息來預測鏈路流量;Kumar等人[53]提出了DRQ-routing算法,利用前向和后向探索信息來學習更優的路由決策。
Mukhutdinov等人[56]基于多智能體DQN算法,設計了動態的數據包路由算法DQN-routing,以降低數據包的傳輸時延。在多智能體強化學習中,各路由器被視為獨立的智能體,且擁有獨立的神經網絡用于路由決策。各智能體僅可觀測到局部狀態信息,其中包含數據包的目的節點編號、當前路由器編號及其相鄰節點編號。此外,動作空間和獎勵函數與Q-routing算法[51]一致。各智能體的神經網絡參數全局共享,且其更新方式保持全局同步性,但在決策過程中保持獨立性,即各智能體的路由決策無需其他智能體的參與。在仿真實驗中,相比于基于鏈路狀態的路由算法和Q-routing算法,DQN-routing算法在動態變化的網絡負載下均能達到最低的數據包傳輸時延。
由于在集中式強化學習中,參數聚合和參數分發過程會造成巨大的帶寬消耗,進而影響網絡中數據包的傳輸。為了解決該問題,You等人[57]將完全分布式多智能體強化學習應用于數據包路由問題中,以最小化數據包平均傳輸時延為目標,設計了端到端的動態數據包路由算法DQRC。各路由器視為獨立的智能體,均擁有獨特的神經網絡用于參數更新和動作選擇,且其學習過程和決策過程均為分布式。DQRC使用LSTM神經網絡處理時序相關的輸入信息。與Q-routing算法[51]輸入信息僅包含數據包目的節點編號不同,DQRC算法加入了歷史決策、隊列中未來數據包目的節點以及相鄰節點隊列長度等狀態信息,以便于智能體學習到自適應的數據包路由轉發策略。在北美AT&T網絡[58]拓撲的仿真環境中,DQRC算法在優越性和穩定性上均優于Q-routing,Backpressure[59]等對比算法。此外,DQRC算法對于神經網絡結構和相鄰節點信息交互間隔具有較強的魯棒性。
不同于以上數據包路由算法以降低數據包傳輸時延為優化目標,Ali等人[60]基于DDQN強化學習算法[61],設計了分層數據包路由算法DDQN-routing,以平衡網絡鏈路負載。該算法以節點間鏈路傳輸時延為分類標準,將網絡中的節點分為多個類別,且各類別均擁有一個“隊長節點”以輔助源節點的路由決策。“隊長節點”僅可觀測到局部信息,其中包括鏈路利用率、鏈路傳輸時延和隊列排隊時延。此外,獎勵函數包含全局獎勵和局部獎勵兩部分,其中前者與源節點對于已選鏈路的滿意度有關,后者與已選鏈路的傳輸時延、排隊時延和丟包率有關。為了解決DQN算法中的過估計問題,DDQN-routing算法構建了兩個神經網絡,分別用于選擇貪婪策略和評估動作優劣,并引入了優先經驗回放算法,以最大化利用經驗回放池中的采樣數據。在仿真實驗中,DDQN-routing算法能適應動態的數據包請求和較大的網絡拓撲,并能有效地利用鏈路資源和平衡鏈路負載。
2.3.2 域內流量規劃
Xu等人[62]將DRL應用于域內流量工程(Traffic Engineering,TE)問題中,并提出了經驗驅動的域內流量工程方案DRL-TE??紤]到直接應用DDPG算法無法達到良好的性能表現,作者提出了兩種改進措施。一是TE-aware探索機制,即以的概率選擇基準TE方案(如最短路徑算法等),以1-的概率選擇神經網絡的輸出方案,以達到加速智能體學習的效果;二是優先經驗回放算法,即以時序差分數值作為樣本選取概率的基準,進而高效利用經驗回放池中的環境轉移樣本。強化學習狀態空間包含吞吐量和時延兩部分,動作空間為數據鏈路分配比,獎勵設置為系統效用函數。在NS-3的仿真實驗平臺上[63],DRL-TE相比于最短路徑、負載均衡等算法能達到更短的時延和更大的網絡吞吐量。
Stampa等人[54]將DRL應用于軟件定義網絡(Software-Defined Network,SDN)中并提出了SDN-routing算法,以優化數據流傳輸時延。基于單智能體強化學習算法DDPG[15],SDN-routing算法將SDN控制器視為集中式智能體,該智能體能夠觀測網絡的全局信息,并控制網絡中各路由器的數據流分配決策。其中,強化學習狀態空間為網絡流量需求矩陣,代表各源點-終點對間的帶寬需求;動作空間為數據流的鏈路分配比;獎勵設置為數據流傳輸時延。智能體的訓練過程和決策過程均為集中式,即允許各路由器間交互環境轉變信息和神經網絡參數信息。在仿真實驗中,SDN-routing算法在各流量等級下性能表現均優于比較算法。
Valadarsky等人[55]考慮了與SDN-routing[54]相似的路由問題,考慮到監督學習無法準確估計未來的網絡流量需求,基于TRPO算法訓練端到端學習的智能體,以平衡網絡鏈路負載。由于原始問題中動作空間過大,強化學習算法難以收斂。Valadarsky等人將輸出神經元個數由|E||V|2減少為|E|(其中,|V|代表網絡拓撲中路由節點數目,|E|代表鏈路數目),并采用Softmin算法計算數據流鏈路分配比。智能體以歷史流量需求矩陣作為狀態信息,并以歷史鏈路利用率與最優鏈路利用率的比值作為獎勵,基于TRPO算法進行強化學習訓練。在仿真實驗中,Valadarsky等人基于稀疏/非稀疏的重力/雙峰模型生成不同類型的流量需求矩陣來驗證算法性能。相比于比較算法,作者提出的算法能取得最高的網絡鏈路利用率,并在性能表現上接近最優路由規劃。
Yu等人[64]基于DDPG算法設計了通用的SDN路由優化算法DROM。強化學習狀態空間為當前網絡負載的流量需求矩陣,動作空間為鏈路的權重,獎勵函數為預設的系統效用函數(如時延、吞吐量等)。Yu等人采用Sprint network骨干網絡[65]作為網絡拓撲,并基于重力模型生成多個流量需求矩陣。在不同的網絡負載下,DROM收斂效果穩定,并相比于OSPF算法能實現更低的傳輸時延。
Sun等人[66]結合RNN和DDPG算法,設計SDN路由優化算法TIDE,以處理具有時間序列特性的網絡狀態。算法架構分為三層,由下到上分別是數據層實現數據流的傳輸、控制層收集網絡狀態和傳遞路由決策、AI決策層實現路由策略的生成更新。算法循環由三部分組成,分別為狀態與獎勵的收集、策略執行和策略提升。強化學習狀態空間為網絡狀態矩陣,動作空間為鏈路權重矩陣,獎勵函數為可自定義的QoS函數(即為時延、吞吐量、丟包率的加權和)。智能體以RNN作為決策神經網絡,以提取時序相關的網絡狀態中的特征信息。Sun等人在網絡拓撲中部署真實的終端、服務器和路由器,以驗證算法的有效性。在不同的網絡負載下,TIDE相比于最短路徑算法能實現更低的傳輸時延,且算法復雜度低、計算速度快。
TCP是有連接的可靠數據傳輸協議。擁塞控制是TCP的核心部分,直接影響著TCP的傳輸性能。如圖6所示,在傳統方法中,部署于TCP數據發送端的擁塞控制算法通過發送數據包而獲得關于網絡狀況的反饋信息。基于這些反饋信息,擁塞控制算法調節擁塞控制窗口或者數據發送速率,從而避免網絡擁塞,提高數據傳輸效率。擁塞控制算法需要在保證高帶寬利用率、低時延的同時,也能夠保證算法的公平性和穩定性。目前互聯網中使用比較廣泛的傳統擁塞控制算法是Cubic[67]和 BBR[68]。

圖6 TCP擁塞控制原理框圖Fig.6 Framework of TCP congestion control
強化學習應用于TCP擁塞控制的相關研究工作很早就已經開始了,例如文獻[69-70]。隨著深度神經網絡的引入,基于DRL的擁塞控制得到了學術界更多的關注。本節把基于DRL的擁塞控制研究工作粗略地分為如下三類:面向TCP整體性能的擁塞控制、針對特定傳輸問題的擁塞控制和與傳統算法相結合的擁塞控制。
2.4.1 面向TCP整體性能的擁塞控制
這類研究工作的特點是,拋棄傳統擁塞控制決策機制,讓DRL的決策網絡來選擇擁塞控制的調節動作。這些工作的目的是提高傳統互聯網架構中TCP數據傳輸的整體性能,例如高吞吐量和低時延,并盡可能保證一定的公平性和魯棒性。因此這些較早期的工作更加注重于如何選擇強化學習的狀態、動作、獎勵函數及訓練算法等。
Li等人[71]在2018年提出了基于Q-learning的自適應擁塞控制算法QTCP,其強化學習框架包含連續的狀態空間。這些狀態分別是發送包的平均間隔時間、接收到ACK包的平均間隔時間和平均RTT。動作空間則為離散的,分別為對擁塞窗口增加10 Byte、減小1 Byte和保持不變。QTCP的效用函數定義為:
U=a·log(throughput)-b·log(RTT),
(19)
之后根據當前時間段的效用函數相對于前一時間段是否升高而選擇一個正值或負值常數作為當前時間步的獎勵。在多種網絡場景下,QTCP表現出優于TCP NewReno的性能。
Yan等人[72]在2018年提出了基于模仿學習的擁塞控制算法Indigo。Indigo的離線訓練在可重復實驗的仿真器Pantheon[72]中開展,因此可以獲取網絡場景信息作為專家知識,從而使用模仿學習作為其訓練算法。Indigo使用單層的LSTM網絡作為決策網絡,并且采用連續的狀態空間,包括排隊延遲的指數加權移動平均值、發送速率的指數加權移動平均值、接收速率的指數加權移動平均值、當前擁塞窗口的大小以及前一步采取的動作。其動作為離散的5個動作,它們分別是對擁塞窗口進行“/2”,“-10”,“+0”,“+10”,“×2”操作。Indigo在訓練過的場景中表現出優越的性能。但是由于需要針對每個訓練場景精心選擇專家知識,Indigo只能在有限的網絡場景中訓練。
Jay等人[73]在2019年提出了基于DRL的擁塞控制算法Aurora。Aurora的輸入狀態包括延遲梯度、延遲比和發送比率。Aurora把神經網絡的輸入狀態設置為當前時刻之前10個時間片的狀態組合,從而獲取更充分的歷史信息。此外,Aurora也改變了之前基于離散動作的速率調節方式,而是用如下的公式去連續地調節發送速率。
(20)
式中,xt為數據包的發送速率,at為神經網絡的輸出,α為常數。Aurora的決策網絡為兩層全連接神經網絡。Aurora使用PPO算法進行訓練。將Aurora與TCP Cubic和TCP BBR等算法進行對比,發現Aurora在固定帶寬和動態帶寬的單鏈路網絡場景下,都表現出超過傳統算法的性能。
2.4.2 針對特定傳輸問題的擁塞控制
本節的關注點為,在設計DRL算法時,如何有效結合互聯網中TCP數據傳輸的網絡特征或流量特征,或者如何解決強化學習過程與擁塞控制過程的不匹配問題。這部分所要介紹的工作包括:針對短流的DRL算法、融合多流TCP的DRL算法,以及兩個關于解決延遲問題的工作。
Nie等人[74]對百度移動搜索服務的數據流進行測量,發現超過80%的TCP數據流都在算法的慢啟動階段便已經傳輸完成。因此對于這些數據流來說,決定其帶寬利用率等性能的關鍵要素是初始擁塞窗口,而不是擁塞控制算法的速率調節機制。基于這樣的網絡流特征,他們在2019年提出TCP-RL[74]來動態地選擇初始擁塞窗口。TCP-RL把初始擁塞窗口的選擇看做一個多臂老虎機問題,并用折扣UCB算法對其進行訓練。而在速率調節階段,TCP-RL并未使用DRL的神經網絡來直接產生調節動作,而是使用神經網絡的輸出來選擇現存的14個擁塞控制算法之一,作為當前時間段的調節算法。研究人員把TCP-RL的初始擁塞窗口選擇機制部署在百度移動搜索服務的一個數據中心。超過一年的測量顯示,TCP-RL可以提高23%的平均TCP響應時間。
多路徑TCP允許數據發送端連接多個路徑來最大化帶寬資源利用率。Xu等人[75]于2019年提出了基于DRL的多路徑TCP擁塞控制算法——DRL-CC。這一算法選擇LSTM網絡作為DRL的決策網絡,并使用Actor-critic算法進行訓練。每個TCP子流計算一個時間片的發送速率、有效吞吐量、平均RTT、平均RTT偏差和擁塞窗口作為當前時間片的狀態。所有TCP子流的過去N個時間片的所有狀態組合在一起作為DRL的輸入狀態。在每個決策的時間點,DRL-CC只對一個子流產生一個連續的調節動作。Xu等人將DRL-CC部署在Linux內核的多流TCP協議中,并在簡單的鏈路設置中測試其與其他常見的多路徑TCP擁塞控制算法。實驗表明,DRL-CC在不犧牲公平性的情況下取得了更高的吞吐量。類似的基于DRL的多路徑TCP擁塞控制算法還有Li等人在2019年提出的基于Q-learning的SmartCC[76]。
Xiao等人[77]認為,對于擁塞控制問題來說,數據發送端執行動作后,需要經過特定的時間延遲之后才能得到對應的獎勵和下一個狀態。而數據發送端強化學習時間步長的長度并不與這個時間延遲一致。為了盡快適應網絡變化情況,時間步長被設置得更小。因此這并不是一個標準的強化學習過程。Xiao等人提出的Drinc[77]使用特殊的緩存回放機制來解決這個延遲問題,即每個時間步得到的(狀態,動作,獎勵)數據對都會保存在緩存中,并設定當前時間步測量的RTT作為前面所述的時間延遲的一個估計,然后根據這個延遲估計在緩存中重新組合成合理的數據對(狀態,動作,獎勵,下一個狀態)來用于訓練。除此之外,Drinc選擇使用連續的64個時間片的狀態組合作為神經網絡的輸入狀態,并且使用節點更多、結構更復雜(包括全連接層、LSTM層、卷積層、池化層等)的神經網絡作為決策網絡。有研究人員提出基于DRL的擁塞控制算法無法部署的主要障礙是,神經網絡做出決策需要一定的時間,而在這個時間內不能處理的網絡擁塞控制請求。為解決這個問題,Sivakumar等人提出MVFST-RL[78],并在QUIC[79]中實現并訓練。MVFST-RL使用異步的強化學習訓練方法,并用Off-policy的方法來修正。
2.4.3 與傳統算法相結合的擁塞控制
純數據驅動的DRL擁塞控制算法面臨低穩定性、低適應性的問題。傳統擁塞控制算法經過數年的實際部署和運行,已經證明了它們的穩定性。近期的研究工作已經開始在DRL擁塞控制算法的設計中融入傳統擁塞控制算法(Cubic,BBR等)的領域知識。例如,借助傳統擁塞控制算法來加速訓練DRL智能體,或是用DRL直接對傳統擁塞控制算法的決策機制進行改進和優化。前文提到的TCP-RL調節機制設計已經用到了類似的思想。
傳統基于擁塞的算法,例如Cubic等只有在路由器的緩存過大時才會降低擁塞控制窗口,即它們調節的擁塞窗口與最優的相比通常較大。因此,Abbasloo等人提出DeepCC[80],用DRL給傳統擁塞算法的調解結果制定一個最大值,來優化傳統算法。仿真結果顯示,DeepCC可以在不犧牲帶寬利用率的情況下,提高傳統算法的平均RTT。
Emara 等人于2020年提出的Eagle[81],借助BBR算法的專家知識來優化訓練的DRL擁塞控制算法。首先Eagle參照BBR的狀態設計,為基于DRL的調節機制也設計了類似的指數啟動、排空隊列和帶寬探測三個不同的狀態階段。其次,在神經網絡的訓練過程中,Eagle使用一個同步BBR算法來周期性地產生一些調節動作投入訓練中,從而加速訓練過程,優化動作選擇策略。實驗結果顯示,Eagle的性能優于其他經典算法,但并沒有明顯優于BBR。
Abbasloo等人提出了基于Cubic和DRL的混合算法[82]。他們首先測試了單純基于DRL的擁塞控制算法和Cubic在動態鏈路的性能表現,發現這些基于DRL的算法存在收斂速度慢等問題。同時考慮計算量等問題,Abbasloo等人認為Cubic用低計算量便實現了在時間域中精細的調節。因此在這一混合算法中,DRL在每個固定時間周期中收集信息,然后計算出一個基礎擁塞控制窗口,之后在下一個時間周期中,Cubic基于這個擁塞控制窗口數值根據自身的控制邏輯進行調節。本文的這個時間周期被設定為20 ms,當然也存在更優的動態調節時間周期的機制。實驗表明,DRL在這個混合算法中可以幫助Cubic更快地適應網絡帶寬變化。
在互聯網內容分發服務中,很小一部分網頁、文件或視頻被大量用戶訪問,而絕大部分互聯網內容卻極少被重復訪問,即內容的熱度呈現“扭曲”特性。熱度的差異導致移動互聯網的數據流量呈現很大的冗余性,特別是當網絡帶寬成為瓶頸時,互聯網的內容分發服務質量顯著降低。隨著存儲技術的進步,磁盤存儲系統容量越來越大,單位存儲容量的價格顯著降低,這為網絡緩存(Cache)技術提供了重要前提。網絡內緩存技術將用戶訪問過的部分視頻段存儲在網絡邊緣,使得這些視頻段的后續請求本地化,降低了服務器端的流量和內容傳輸的時間延遲,提高了網絡服務性能。緩存技術的最重要性能指標是用戶請求的命中率。命中率越高,能夠節約的帶寬需求越大,相應的內容傳輸延遲可能會越小。
緩存研究的核心問題是“存儲什么內容”。 廣義來說,內容緩存的策略分為“被動式(Reactive)”和“主動式(Proactive)”兩類。被動式內容緩存是被動地根據用戶產生的請求做出相應的決策,即依據預先規定的緩存機制,決定文件的存入與移除,其關注的核心是緩存內容的替換策略(Cache Replacement Policy)。緩存中的數據如何更新需要考慮以下要素:文件最近一次被請求的時間、文件的大小以及文件被請求的頻次。常用的被動式緩存替換策略有“最近最少使用(Least Recently Used,LRU)”“先入先出(First In First Out,FIFO)”“后入先出(Last In First Out,LIFO)”“隨機替換(Random Replacement,RR)”“最低使用頻率(Least Frequently Used,LFU)”以及“生存時間(Time-to-Live,TTL)”等。主動式緩存策略是在對用戶需求進行預測的基礎上,主動進行緩存內容的推送與更新。本節聚焦于介紹互聯網中常用的被動式緩存替換策略的DRL算法設計。
DeepCache[84]的模型包括兩部分:基于LSTM 編碼器模型的目標特征預測器和緩存替換管理模塊。其目標在于提前預測出到達請求的目標特征,自動學習到達流量模式的變化(特別是爆發式和非穩態的流量),預測流行度變化等。DeepCache采用LSTM神經網絡,將視頻流行度預測視作一個Seq2seq問題。輸入輸出均為3D張量,即輸入中的元素為所有個體目標在一個時間窗口內的概率,輸入維度是個體目標的數量,輸出為未來若干個時間單位內所有個體目標的概率分布。在合成的訪問請求數據實驗上,DeepCache表現出比LRU和LFU顯著優越的性能。
RL-Cache[85]研究采用DRL設計緩存接納策略,即當一個沒有被緩存的請求到達時,是否要將該請求內容接納至緩存中,緩存的剔除策略依舊采用LRU。本文將緩存接納問題建模成無模型的強化學習問題,采用前饋神經網絡(FNN)結合蒙特卡洛采樣及隨機優化來求解。對于每一個輸入目標,狀態特征為該目標的大小、出現頻率、最近一次請求時間間隔、指數平滑后的請求時間間隔、自上次訪問該目標以來的其他目標訪問次數、該訪問次數的指數平滑、該目標的訪問頻次與目標大小的比值、訪問頻次和目標大小的乘積。在訓練過程中,為了使訓練的開銷保持在較低水平,RL-Cache從第一個請求開始,然后每次向后滑動K個請求。
Kirilin 等人[86]提出使用前饋神經網絡預測內容流行度,并運用最小堆去實現LFU的緩存替換策略。輸入特征向量為一個內容在過去K個時間片內的被請求概率。實驗結果表明,基于FNN的Cache性能優于LRU和LFU,并且FNN的性能優于兩種LSTM流行度預測算法。然后,Kirilin的進一步研究表明,當使用更為簡單的線性估計方法時,緩存性能下降很小,這使得深度學習用于緩存算法設計受到一定程度的質疑。
Wang 等人[87]提出采用純強化學習設計緩存算法。輸入狀態為一個四元組:到達請求的大小、上次該內容被請求的時間間隔、該目標迄今為止的訪問次數和剩余的緩存大小比例。所采用的訓練方法為標準的A2C強化學習算法。強化學習的輸出動作為是否接納一個未在緩存的新請求。獎勵為自上次決策以來總的命中字節數。其研究重點在于利用欠采樣的方法將強化學習緩存策略應用至大型緩存系統中。具體方法是按照1/K的比例從數據集采樣數據,欠采樣的方法是對目標的ID進行隨機的哈希,同時將緩存容量縮小K倍。數據驅動的實驗結果表明,欠采樣的強化學習緩存策略與原來的強化學習緩存策略性能接近。
Zhong 等人[87]設計了基于DRL的緩存替換策略。該DRL模型的神經網絡為雙側全連接結構,強化學習模型基于Wolpertinger策略,包括3個部分:Actor網絡、K最近鄰算法(KNN)和Critic網絡,訓練的方法為DDPG。采用Wolpertinger架構的原因是,作為在線算法,該架構能夠適應數據的變化規律;Actor網絡能夠避免考慮一個非常巨大的動作空間,而Critic網絡能夠糾正演員網絡(actor network)的決策,并且KNN方法能夠拓展動作的選擇范圍。Zhong等人假設文件數量是固定的,并且每個文件的大小相同。其狀態空間包含緩存內容在短期、中期和長期時間內總的請求數量,獎勵設置為緩存短期命中率和長期命中率的加權和,動作空間是使用當前請求內容替換某個已緩存內容。
盡管這些基于DRL的方法在計算機網絡的各個領域均取得了較好的性能,但仍沒有替換傳統算法實現大規模的實際部署。針對基于專家知識的“白盒”算法,其內部的工作原理和判定邏輯清晰透明,一旦算法出錯網絡工程師可以立即進行修正。針對基于DRL的“黑盒”算法,在智能體和環境的交互過程中,給定一個輸入狀態,通過策略網絡或Q網絡的輸出來確定決策動作,其中策略網絡和Q網絡的本質都是神經網絡,而一個神經網絡通常由成千上萬的參數經過非線性激活函數組成。這種給定輸入即生成輸出的黑盒行為以及復雜的神經網絡結構帶來了新的挑戰,包括算法的可解釋性、算法的魯棒性以及同領域知識的有效融合問題,下面將分別對這幾點進行敘述。
針對基于神經網絡的計算機網絡系統的可解釋性,Zheng等人[88]于2018年使用基于隱含層神經元最大激活的方式去分析神經網絡在執行任務調度時對任務請求時長的敏感程度。但是,計算機網絡的工程師更傾向于直接使用簡單的邏輯規則去表示神經網絡,而不是去分析其復雜的激活規律。為了讓網絡工程師可以更直接地對這些基于神經網絡的系統進行調試、修正和部署,Meng等人于2019年提出了PiTree[89],將基于DRL的視頻傳輸系統Pensieve轉換為決策樹。Meng等人于2020年又提出了通用性更強的Metis[90],對于搭建在客戶端的小型系統,如Pensieve[44]和Aurora[73],Metis通過將神經網絡轉化成決策樹的方式提供可解釋性;對于進行規??刂频拇笮拖到y,如Decima[25],Meitis可將其轉化為超圖(Hypergraph)。實驗結果顯示,Metis可以在不降低系統性能的條件下提供更高程度的可解釋性。然而,Metis目前還不能解決對于RNN這種復雜神經網絡結構,而且決策樹的構建仍需要消耗大量的時間,如何簡單高效地提供通用性神經網絡的可解釋性仍然是一個待解決的關鍵問題。
除了缺乏可解釋性外,基于DRL的計算機網絡系統也存在魯棒性的問題。由于計算機網絡環境的多變性,環境條件經常會發生變化。如在任務調度過程中任務的到達分布發生改變,文獻[91]指出此時基于DRL的負載均衡(Load Balance)系統的性能出現了大幅度下降,該解決方法是使用一個性能更穩定的傳統算法作為后盾,當發現DRL智能體的性能出現下降時,則使用傳統算法替代智能體進行決策。但處在輸入驅動的計算機網絡環境中,如何準確判斷性能是否真的出現下降,以及能否直接訓練一個可以容忍環境變化和通用的智能體仍是待解決的問題。
對于網絡系統來說,領域知識是許多年的研究積累,是非常充沛的。它們可以幫助DRL算法變得更加可靠,降低模型推斷的復雜度而不損害其性能。然而,目前的“黑盒模式”在將網絡系統狀態和決策編碼成輸入和輸出后,DRL的訓練和決策與領域知識往往無關。
上一節中提到的使用傳統算法作為DRL智能體的后盾,本質上是希望能將領域知識和智能體進行融合。這些領域知識雖然可通過智能體無盡地探索與試錯得到,但是直接高效地融合領域知識可以使智能體獲取更快的訓練速度和更高的性能表現。針對這個研究領域目前已有了一些初步的成果,Eagle[81]借助BBR算法的領域知識來優化訓練的DRL擁塞控制算法,它使用一個同步BBR算法來周期性地產生一些調節動作投入訓練中,從而加速訓練過程,優化動作選擇策略。然而,從諸多文章的實驗測試結果可以看出,DRL智能體的性能是超過傳統算法的,在訓練的起始階段,融入傳統算法的建議可以加速訓練速度,但是過多融入傳統算法的建議勢必會對智能體的性能帶來負面影響,如何合理地掌握傳統算法的參與程度也是需要解決的問題。
由于DRL可以避免對網絡環境進行不準確的建模,且智能體與環境的自主交互過程可以節省網絡專家對基于規則算法的頻繁參數配置,近年來DRL在計算機網絡中的應用不勝枚舉。本文首先對DRL技術原理進行介紹,詳細闡述了多種典型的神經網絡結構、傳統的以表格形式求解強化學習問題的方法以及廣泛應用的DRL算法;其次,針對目前使用DRL技術的典型網絡系統進行了全面的綜述,包括任務和數據流調度、視頻傳輸、路由選擇、TCP擁塞控制和網絡緩存;最后,指出了目前這些使用DRL的計算機網絡系統面臨的新挑戰,包括可解釋性問題、魯棒性問題以及同領域知識進行融合的問題,并給出了在這些問題上已有的工作進展。