DI-star:專為星海爭霸II開發的大型遊戲AI分散式訓練平台。我們已經訓練出了AI大師!
玩演示和測試程式碼(嘗試和我們的代理一起玩!)
第一個版本的預訓練 SL 和 RL 代理(僅限 Zerg 與 Zerg)
監督學習和強化學習訓練代碼(2022-01-31更新)
有限資源(一台 PC)的訓練基線和訓練指南(新!更新於 2022-04-24)
特工與 Harstem 作戰 (YouTube) (更新於 2022-04-01)
更強大的預訓練強化學習智能體(WIP)
在 Windows 上測試軟體 | 對戰軟體下載
請為我們star(點擊本頁右上角按鈕),幫助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,會自動下載星海爭霸II版本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
:預設使用,透過強化學習進行訓練,skill 等於 master 或 grandmaster。Abathur
:強化學習模型之一,喜歡玩飛龍。Brakk
:強化學習模式之一,喜歡 lingbane rush。Dehaka
:強化學習模式之一,喜歡玩蟑螂掠奪者。Zagara
:強化學習模型之一,喜歡 roach rush。 對於給定的模型,我們與代理一起提供多項測試。
python -m distar.bin.play
它運行 2 個 StarCraftII 實例。第一個由我們的 RL 代理控制。人類玩家可以像普通遊戲一樣全螢幕玩第二個遊戲。
筆記:
--cpu
。--model1 <model_name>
指定其他模型(例如監督模型)python -m distar.bin.play --game_type agent_vs_agent
它運行 2 個 StarCraftII 實例,均由我們的 RL Agent 控制,使用參數指定其他模型路徑--model1 <model_name> --model2 <model_name>
python -m distar.bin.play --game_type agent_vs_bot
強化學習代理與內建的精英機器人對戰。
有必要在一個程式碼庫中建立不同的代理,並且仍然能夠使它們相互對抗。我們透過將參與者和環境作為公共組件並將與代理相關的所有內容放入目錄中來實現這一點。 distar/agent 下名為 default 的代理程式就是一個例子。預設情況下的每個腳本都使用相對導入,這使得它們可以作為一個整體移植到任何地方。
如果您想使用/不使用我們的預設代理建立新代理,請按照此處的說明進行操作
如果您想使用我們的框架訓練新代理,請按照以下說明進行操作,這裡是包含整個訓練流程的更多詳細資訊的指南。
回放解碼需要星海爭霸II客戶端,請按照上面的說明進行操作。
python -m distar.bin.sl_train --data < path >
路徑可以是帶有重播的目錄,也可以是每行包含重播路徑的檔案。
或者,將重播解碼和模型訓練分開可能會更有效,在不同的終端中執行三個腳本:
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 >
強化學習將使用監督模型作為初始模型,請先下載,還需要星海爭霸II客戶端。
python -m disatr.bin.rl_train
python -m disatr.bin.rl_train --task selfplay
RL 訓練使用四個元件,就像 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 訓練。
鬆弛:連結
不和諧伺服器:連結
@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 授權下發布。