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 许可证下发布。