DI-star: StarCraft II 用に特別に開発された大規模なゲーム AI 分散トレーニング プラットフォーム。私たちはすでにグランドマスター AI を訓練しました!このプロジェクトには以下が含まれます:
デモをプレイしてコードをテストします (エージェントと一緒に試してみてください!)
事前トレーニングされた SL および RL エージェントの最初のバージョン (Zerg 対 Zerg のみ)
教師あり学習と強化学習の学習コード(2022-01-31更新)
限られたリソース (1 台の PC) でのトレーニング ベースラインとトレーニング ガイダンスはこちら(新規! 2022 年 4 月 24 日更新)
エージェントとハーステムの戦い (YouTube) (2022-04-01 更新)
より強力な事前トレーニング済み RL エージェント(WIP)
Windows でのソフトウェアのテスト | 对战软件ダウンロード
DI スター エージェントがより早く成長できるよう、スターを付けてください (このページの右上にあるボタンをクリック)。
環境要件:
注: Linux には製品版はありません。ここの手順に従ってください。
SC2 インストール パスを環境変数SC2PATH
に追加します (MacOS または Windows でデフォルトのインストール パス ( C:Program Files (x86)StarCraft II
または/Applications/StarCraft II
) を使用する場合は、これをスキップします)。
MacOS または Linux では、ターミナルに次のように入力します。
export SC2PATH= < sc2/installation/path >
Windows の場合:
SC2PATH
sc2 のインストール場所として設定します。git clone https://github.com/opendilab/DI-star.git
cd DI-star
pip install -e .
Pytorch バージョン 1.7.1 および CUDA が推奨されます。pytorch 公式サイトの指示に従ってください。
注: リアルタイム エージェント テストで適切なパフォーマンスを得るには GPU が必要です。cuda なしで pytorch を使用することもできますが、CPU での推論レイテンシのためパフォーマンスは保証されません。テストする前に、必ず SC2 を最低画質に設定してください。
ファイル data/replays/replay_4.10.0.SC2Replay をダブルクリックすると、StarCraftII バージョン 4.10.0 が自動的にダウンロードされます。
注: モデルは 4.8.2 から 4.9.3 のバージョンでトレーニングしました。パッチ 5.0.9 は 2022 年 3 月 15 日に公開されました。一部の変更はパフォーマンスに大きな影響を与えるため、評価版ではバージョンを 4.10.0 に修正します。
python -m distar.bin.download_model --name rl_model
注: 強化学習モデルまたは教師ありモデルをダウンロードするには、 --name
の後にrl_model
またはsl_model
指定します。
モデルリスト:
sl_model
: 人間のリプレイを使用したトレーニング。スキルはダイヤモンド プレーヤーと同等です。rl_model
: デフォルトとして使用され、強化学習によるトレーニング、スキルはマスターまたはグランドマスターと同等です。Abathur
: 強化学習モデルの 1 つで、ミュータリスクをプレイするのが好きです。Brakk
: 強化学習モデルの 1 つで、リングベイン ラッシュと同様です。Dehaka
: 強化学習モデルの 1 つで、ローチ ラベジャーをプレイするのが好きです。Zagara
: 強化学習モデルの 1 つ、ゴキブリ ラッシュのようなもの。 指定されたモデルを使用して、エージェントによる複数のテストを提供します。
python -m distar.bin.play
2 つの StarCraftII インスタンスを実行します。 1 つ目は RL エージェントによって制御されます。人間のプレイヤーは、通常のゲームと同様に、2 番目のゲームを全画面でプレイできます。
注記:
--cpu
を追加します。--model1 <model_name>
を使用して他のモデル (教師ありモデルなど) を指定します。python -m distar.bin.play --game_type agent_vs_agent
2 つの StarCraftII インスタンスを実行します。両方とも RL エージェントによって制御され、引数--model1 <model_name> --model2 <model_name>
で他のモデル パスを指定します。
python -m distar.bin.play --game_type agent_vs_bot
RL エージェントは組み込みのエリート ボットと対戦します。
1 つのコード ベース内でさまざまなエージェントを構築し、それらを互いに対戦させることができる必要があります。これを実装するには、アクターと環境を共通コンポーネントとして作成し、エージェントに関連するものをすべて 1 つのディレクトリにまとめます。 distar/agent の下にあるデフォルトと呼ばれるエージェントはこの例です。デフォルトのすべてのスクリプトは相対インポートを使用するため、部分全体としてどこにでも移植できます。
デフォルトのエージェントを使用して、またはデフォルトのエージェントを使用せずに新しいエージェントを作成する場合は、ここの手順に従ってください。
当社のフレームワークを使用して新しいエージェントをトレーニングする場合は、以下の手順に従ってください。トレーニング パイプライン全体の詳細を示すガイダンスがここにあります。
StarCraftII クライアントはリプレイ デコードに必要です。上記の手順に従ってください。
python -m distar.bin.sl_train --data < path >
path は、リプレイのあるディレクトリ、または各行にリプレイ パスが含まれるファイルのいずれかです。
オプションで、リプレイのデコードとモデルのトレーニングを分離すると、3 つのスクリプトを異なる端末で実行することがより効率的になる可能性があります。
python -m distar.bin.sl_train --type coordinator
python -m distar.bin.sl_train --type learner --remote
python -m distar.bin.sl_train --type replay_actor --data < path >
分散トレーニングの場合:
python -m distar.bin.sl_train --init_method < init_method > --rank < rank > --world_size < world_size >
or
python -m distar.bin.sl_train --type coordinator
python -m distar.bin.sl_train --type learner --remote --init_method < init_method > --rank < rank > --world_size < world_size >
python -m distar.bin.sl_train --type replay_actor --data < path >
以下は、リモート モードで 4 GPU を備えたマシンでのトレーニングの例です。
# Run the following scripts in different terminals (windows).
python -m distar.bin.sl_train --type coordinator
# Assume 4 GPUs are on the same machine.
# If your GPUs are on different machines, you need to configure the init_mehod's IP for each machine.
python -m distar.bin.sl_train --type learner --remote --init_method tcp://127.0.0.1 --rank 0 --world_size 4
python -m distar.bin.sl_train --type learner --remote --init_method tcp://127.0.0.1 --rank 1 --world_size 4
python -m distar.bin.sl_train --type learner --remote --init_method tcp://127.0.0.1 --rank 2 --world_size 4
python -m distar.bin.sl_train --type learner --remote --init_method tcp://127.0.0.1 --rank 3 --world_size 4
python -m distar.bin.sl_train --type replay_actor --data < path >
強化学習では教師ありモデルを初期モデルとして使用します。最初にダウンロードしてください。StarCraftII クライアントも必要です。
python -m disatr.bin.rl_train
python -m disatr.bin.rl_train --task selfplay
RL トレーニングには 4 つのコンポーネントが使用され、SL トレーニングと同様に、異なるプロセスを通じて実行できます。
python -m distar.bin.rl_train --type league --task selfplay
python -m distar.bin.rl_train --type coordinator
python -m distar.bin.rl_train --type learner
python -m distar.bin.rl_train --type actor
SLトレーニングと同様に分散トレーニングもサポートされています。
スラック: リンク
Discordサーバー:リンク
@misc{distar,
title={DI-star: An Open-sourse Reinforcement Learning Framework for StarCraftII},
author={DI-star Contributors},
publisher = {GitHub},
howpublished = { url {https://github.com/opendilab/DI-star}},
year={2021},
}
DI-star は Apache 2.0 ライセンスに基づいてリリースされました。