DI-star: 스타크래프트 II용으로 특별히 개발된 대규모 게임 AI 분산 훈련 플랫폼입니다. 우리는 이미 그랜드 마스터 AI를 교육했습니다! 이 프로젝트에는 다음이 포함됩니다.
데모 및 테스트 코드 플레이(에이전트와 함께 플레이해보세요!)
사전 훈련된 SL 및 RL 에이전트의 첫 번째 버전(Zerg 대 Zerg만 해당)
지도 학습 및 강화 학습의 훈련 코드 (2022-01-31 업데이트)
제한된 리소스(PC 1대)를 사용한 교육 기준 및 교육 지침은 여기에 있습니다 (신규! 2022-04-24 업데이트됨)
하스템과 싸운 요원들(유튜브) (2022-04-01 업데이트)
더욱 강력한 사전 훈련된 RL 에이전트 (WIP)
Windows에서 소프트웨어 테스트 | 对战软件下载
DI스타 에이전트가 더 빠르게 성장할 수 있도록 별표(페이지 오른쪽 상단 버튼 클릭)를 눌러주세요 :)
환경 요구사항:
참고: Linux에는 일반 정품 버전이 없습니다. 여기의 지침을 따르십시오.
환경 변수 SC2PATH
에 SC2 설치 경로를 추가합니다(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
: 강화 학습 모델 중 하나이며 뮤탈리스크 게임을 좋아합니다.Brakk
: 강화 학습 모델 중 하나이며 Lingbane Rush를 좋아합니다.Dehaka
: 강화 학습 모델 중 하나이며 바퀴벌레 놀이를 좋아합니다.Zagara
: 강화 학습 모델 중 하나이며 바퀴벌레를 좋아합니다. 주어진 모델을 사용하여 에이전트를 통해 여러 테스트를 제공합니다.
python -m distar.bin.play
2개의 StarCraftII 인스턴스를 실행합니다. 첫 번째는 RL 에이전트에 의해 제어됩니다. 인간 플레이어는 두 번째 게임에서 일반 게임처럼 전체 화면으로 플레이할 수 있습니다.
메모:
--cpu
추가하세요.--model1 <model_name>
인수를 사용하여 다른 모델(예: 지도 모델)을 지정하세요.python -m distar.bin.play --game_type agent_vs_agent
RL 에이전트에 의해 제어되는 2개의 StarCraftII 인스턴스를 실행하고 --model1 <model_name> --model2 <model_name>
인수를 사용하여 다른 모델 경로를 지정합니다.
python -m distar.bin.play --game_type agent_vs_bot
RL 에이전트는 내장된 엘리트 봇과 대결합니다.
하나의 코드 기반 내에서 다양한 에이전트를 구축하고 서로 대결할 수 있어야 합니다. 행위자와 환경을 공통 구성 요소로 만들고 에이전트와 관련된 모든 것을 하나의 디렉터리에 배치하여 이를 구현합니다. distar/agent 아래의 default라는 에이전트가 이에 대한 예입니다. 기본 아래의 모든 스크립트는 상대 가져오기를 사용하므로 전체 부분을 어디든 이식할 수 있습니다.
기본 에이전트를 사용하거나 사용하지 않고 새 에이전트를 생성하려면 여기 지침을 따르세요.
프레임워크를 사용하여 새 에이전트를 교육하려면 아래 지침을 따르세요. 전체 교육 파이프라인에 대한 자세한 내용이 포함된 지침은 다음과 같습니다.
리플레이 디코딩을 위해서는 StarCraftII 클라이언트가 필요합니다. 위의 지침을 따르세요.
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 >
강화 학습은 지도 모델을 초기 모델로 사용합니다. 먼저 다운로드하세요. StarCraftII 클라이언트도 필요합니다.
python -m disatr.bin.rl_train
python -m disatr.bin.rl_train --task selfplay
SL 훈련과 마찬가지로 RL 훈련에는 네 가지 구성 요소가 사용되며 서로 다른 프로세스를 통해 실행될 수 있습니다.
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},
}
Apache 2.0 라이센스에 따라 출시된 DI-star.