Sigcomm'18
AuTO: Scaling Deep Reinforcement Learning for Datacenter-Scale Automatic Traffic Optimization
問題
主要問題:流量算法的配置周期長,人工配置難且繁復。人工配置的時間成本大,人為錯誤導致的性能降低。
要計算MLFQ的閾值參數是很麻煩的事情,先前有人構建了一個數學模型來優化這個閾值,在幾個星期或者幾個月更新一次閾值,更新周期過長。
可以使用DRL(Deep Reinforcement Learning)的方法根據環境自動配置(決策)算法參數,減少人工配置的時間成本,減少人為錯誤導致的性能降低。
基於主流框架TensorFlow或是pytorch等框架的的DRL難以掌控TO(traffic optimization)的小流(速度過快)
使用DRL優化時遇見的問題:DRL配置TO時,由於小流通過速度大於配置下發的速度,所以來不及下發配置。
解決方法
優化的算法:采用 Multi-Level Feedback Queueing(MLFQ)來管理流。第一級別的隊列為小流,所有流初始化為小流。當流的大小超過閾值時,判定為大流,在隊列中被降級到第二隊列。可以有k個隊列,按照流的不同級別分在不同的隊列當中。
決策參數:基於比特數和閾值來對每個流做出決策,判定流屬於第幾級別的隊列。
評價參數:當一次流處理完成時,計算一個比率,比率為本次的吞吐量與前一次的吞吐量之比。 吞吐量Sizef(流長)與FCT(Flow completion time)之比。
使用DRL優化:使用強化學習優化閾值。根據結果反饋調整閾值的設定。
狀態和獎勵返回是隨機的馬爾科夫過程
模型選擇
公式一
公式一的改進:公式二
算法主要使用公式二
算法
論文從強化學習的算法PG講到DPG再講到DDPG,最后使用了DDPG。
經過查詢資料,DDPG使用了深度神經網絡,並且針對的是決策值為連續的情況,而參數值的變化又是連續的,所以使用DDPG較為合適且有效。
當一次流處理完成時,計算一個比率,比率為本次的吞吐量與前一次的吞吐量之比。 吞吐量Sizef(流長)與FCT(Flow completion time)之比。
框架構建
模型組成:
- 邊緣系統
- 中心系統
邊緣系統
有一個MLFQ,首級隊列為小流,當流超過閾值,判定為大流,在隊列中被降級。
邊緣系統分為增強模塊和探測模塊。
- 探測模塊:獲取流的狀態信息(包括所有流的大小和處理完成的時間)
- 增強模塊:獲取中心系統的action,執行操作。
中心系統
其中的DRL有兩個agent:
- sRLA(short Reinforcement Learning Agent): 優化小流閾值
- lRLA(long Reinforcement Learning Agent):優化大流,速率、路由、優先級