インフラ
- リーグを訓練するために、多数のStarCraft II対戦を並行して実行し、それらのゲームのデータに基づいてエージェントのパラメータを更新する。
- これを管理するために、さまざまなタイプの分散ワーカーで非常にスケーラブルな訓練セットアップを開発した。
ハードウェア
訓練パイプライン
- アクターは、ネットワークを介して中央の128コアTPUラーナーワーカーに観測、アクション、および報酬のシーケンスを送信し、トレーニングエージェントのパラメーターを更新する。
- 受信したデータはメモリにバッファリングされ、2回再生される。
- ラーナーワーカーは、大きなバッチで同期更新を実行する。
- 各TPUコアは、4つのシーケンスのミニバッチを処理し、合計バッチサイズは512である。
- ラーナーは、毎秒約50,000エージェントステップを処理する。
- アクターは、ラーナーからのパラメーターのコピーを10秒ごとに更新する。
コーディネーター
- このアクターとラーナーのセットアップの12の個別のコピーをインスタンス化する:各StarCraft種族に対して、1つのメインエージェント、1つのメインエクスプロイト、2つのリーグエクスプロイトエージェント
- ある中央コーディネーターは、利得行列(payoff matrix)の推定値を維持し、要求に応じて新しい対戦をサンプリングし、メインおよびリーグのエクスプロイトをリセットする。
- 追加の評価ワーカー(CPUで実行)を使用して、利得(payoff)の見積もりを補完する。
- 訓練セットアップの概要については、拡張データの図6を参照。
感想
アクターは並列実行を行い、軌跡をラーナーに送信して、ラーナーは同期でパラメータの更新を行うという仕組みになっています。
A2Cの並列処理に近い構成だと思います。
アクターの推論は、1つのサーバ内の並列実行している対戦のステップをまとめてバッチで処理を行っています。
私が作成しているdlshogiの自己対局でも似たような処理を行っています。
リプレイバッファを使用していますが、再生回数は2回と少なめです。
50万ステップ分ごとにパラメータの更新を行っており、AlphaZeroに比べるとパラメータの更新頻度は高いようです。
(続く)
AlphaStarの論文を読む - TadaoYamaokaの開発日記
AlphaStarの論文を読む その2 - TadaoYamaokaの開発日記
AlphaStarの論文を読む その3 - TadaoYamaokaの開発日記
AlphaStarの論文を読む その4 - TadaoYamaokaの開発日記
AlphaStarの論文を読む その5(アーキテクチャ) - TadaoYamaokaの開発日記
AlphaStarの論文を読む その6(アーキテクチャその2) - TadaoYamaokaの開発日記
AlphaStarの論文を読む その7(アーキテクチャその3) - TadaoYamaokaの開発日記
AlphaStarの論文を読む その8(教師あり学習、強化学習) - TadaoYamaokaの開発日記
AlphaStarの論文を読む その9(マルチエージェント学習) - TadaoYamaokaの開発日記
AlphaStarの論文を読む その10(リーグ構成) - TadaoYamaokaの開発日記
AlphaStarの論文を読む その11(インフラ) - TadaoYamaokaの開発日記
AlphaStarの論文を読む その12(評価) - TadaoYamaokaの開発日記
AlphaStarの論文を読む その13(分析、AlphaStarの一般性) - TadaoYamaokaの開発日記
*1:[1704.04760] In-Datacenter Performance Analysis of a Tensor Processing Unit
*2:[1802.01561] IMPALA: Scalable Distributed Deep-RL with Importance Weighted Actor-Learner Architectures
*3:[1807.01281] Human-level performance in first-person multiplayer games with population-based deep reinforcement learning