MVFST-RL: An Asynchronous RL Framework for Congestion Control with Delayed Actions を読んでみました

facebook AI researchが発表した強化学習の手法を輻輳制御に適用する論文を読んでみました。

非同期に行動の決定を実行することで帯域を有効に使えるようにした論文です。ただし、複数のネットワークを一緒に学習させると高いスループットが出せないという課題があります。

先行研究では、次の行動の決定のために処理がブロック(同期実行)されるので、アクションを決めるまでに遅延が発生していました。

Figure 1では、同期実行される場合と非同期実行される場合の送信できる層データ量の違いを表しています。

f:id:neko--suki:20200112134125p:plain:w300
Figure 1

この例では、AWS CaliforniaからMexicoを再現するエミュレーターで60秒間に送信したデータ量の累積をプロットしています。 強化過学習のエージェントが、100ms毎に次のアクションを決定するという設定で非同期、ブロッキングする時間が25msec、ブロッキングする時間が50msecの場合の3つの合計データ送信量を比較しています。 25msecブロッキングする場合と50msecブロッキングする場合は、ブロッキング無しでデータを送信する場合と比べてそれぞれ1.1%と11.4%送信できるデータ量が減ってしまいます。

このように、次の行動を決めるまでの時間をブロッキングすると帯域を有効に使えないという問題が起きてしまいました。

そこで、本論文では非同期に行動を実行できるようにします。

100msecに固定された時間間隔で行動を決める処理が実行されるとします。非同期で行動しようとするとある時刻 t における行動  a_tは、次の行動を決めるためにかかる遅延  δ msec後に実行されます。

Figure 2 (a)は δ =30msecの時の例を表しています。

f:id:neko--suki:20200112134558p:plain
Figure 2

非同期実行にすると送信者は、 [t, t+δ] の間に  a  t-1の行動に従ってデータを送信し続けます。したがって、次の状態  s 
 t+1 は、 s_t a_t だけではなく、 a  t-1 にも依存します。

これに対応するために、状態空間に最後にとった行動も追加します。状態を拡張して、( s_t,  a  t-1, ... ,  a  t-k) を状態とします。ちなみに、拡張前の状態  s_t には、ACKパケットから算出したRTT,キューイング遅延、送信したパケット量などの情報が含まれています。具体的な状態は論文のAppendix A.1に書かれています。

行動は、cwndのサイズを{cwnd, cwnd/2, cwnd-10, cwnd+10, cwnd × 2} に変更するとします。

また報酬は、 throughtput (Mbit/s) - β × delay (msec)としています。論文の評価では、β=0.2としているようです。

実際の実験・評価に使われたMVFST-RLは、以下の3つを統合したものになっています。

実験結果

レーニング方法は強化学習の知見がないので論文を直接見ていただければと思います。

Figure 3(a)でNepal→AWS Indiaをエミュレーションした環境でスループットと遅延を計測しています。

f:id:neko--suki:20200112140029p:plain

本論文で提案している手法のmvfst-rl はスループットが0.5Mbit/s を上回る高い位置に位置しています。さらに、Cubic, Copa, NewRenoと同程度の遅延を達成しています。 また学習ベースの手法である、TaoVAを上回るスループットを出しています。

Figure 3(b)では別の設定(論文中では、test against a network emulator unseen と書かれている)で評価しているようです。ここでも他の手法を上回る結果になっています。

f:id:neko--suki:20200112140043p:plain

このようにこの論文で提案している手法では高いスループットを得ています。

しかし、一般化には課題があるそうです。複数のネットワークで一緒トレーニングさせると、あまり良い結果が出なかったそうです。

参考資料