DI-star : une plate-forme de formation distribuée par IA de jeu à grande échelle spécialement développée pour StarCraft II. Nous avons déjà formé un grand maître AI! Ce projet contient :
Jouez à la démo et testez le code (essayez de jouer avec notre agent !)
Première version d'agent SL et RL pré-entraîné (uniquement Zerg vs Zerg)
Code de formation en apprentissage supervisé et apprentissage par renforcement (mis à jour d'ici le 31/01/2022)
Base de formation avec des ressources limitées (un PC) et conseils de formation ici (Nouveau ! mis à jour le 2022-04-24)
Les agents se sont battus avec Harstem (YouTube) (mis à jour le 01/04/2022)
Agents RL pré-formés (WIP) plus forts
Logiciel de test sous Windows | 对战软件下载
Veuillez nous mettre en vedette (cliquez sur le bouton en haut à droite de cette page) pour aider les agents DI-star à grandir plus rapidement :)
Exigence d'environnement :
Remarque : Il n'existe pas de version commerciale sous Linux, veuillez suivre les instructions ici
Ajoutez le chemin d'installation de SC2 aux variables d'environnement SC2PATH
(ignorez ceci si vous utilisez le chemin d'installation par défaut sous MacOS ou Windows, qui est C:Program Files (x86)StarCraft II
ou /Applications/StarCraft II
) :
Sous MacOS ou Linux, saisissez ceci dans le terminal :
export SC2PATH= < sc2/installation/path >
Sous Windows :
SC2PATH
comme emplacement d'installation sc2.git clone https://github.com/opendilab/DI-star.git
cd DI-star
pip install -e .
Pytorch version 1.7.1 et CUDA sont recommandés, suivez les instructions du site officiel de pytorch
Remarque : le GPU est nécessaire pour des performances décentes dans le test d'agent en temps réel, vous pouvez également utiliser pytorch sans cuda, mais aucune performance n'est garantie en raison de la latence d'inférence sur le processeur. Assurez-vous de régler SC2 sur la qualité d'image la plus basse avant de tester.
Double-cliquez sur le fichier data/replays/replay_4.10.0.SC2Replay, StarCraftII version 4.10.0 sera automatiquement téléchargé.
Remarque : Nous avons entraîné nos modèles avec les versions 4.8.2 à 4.9.3. Le patch 5.0.9 est sorti le 15 mars 2022. Certains changements ont un impact énorme sur les performances, nous corrigeons donc notre version à 4.10.0 en évaluation.
python -m distar.bin.download_model --name rl_model
Remarque : Spécifiez rl_model
ou sl_model
après --name
pour télécharger le modèle d'apprentissage par renforcement ou le modèle supervisé.
Liste des modèles :
sl_model
: entraînement avec des replays humains, la compétence est égale à celle des joueurs de diamant.rl_model
: utilisé par défaut, entraînement avec apprentissage par renforcement, la compétence est égale à maître ou grand maître.Abathur
: l'un des modèles d'apprentissage par renforcement, aime jouer au mutalisk.Brakk
: un des modèles d'apprentissage par renforcement, comme Lingbane Rush.Dehaka
: l'un des modèles d'apprentissage par renforcement, aime jouer au ravageur de cafards.Zagara
: un des modèles d'apprentissage par renforcement, aime le cafard. Avec le modèle donné, nous proposons plusieurs tests avec notre agent.
python -m distar.bin.play
Il exécute 2 instances StarCraftII. Le premier est contrôlé par notre agent RL. Le joueur humain peut jouer sur le second en plein écran comme dans un jeu normal.
Note:
--cpu
si vous ne les avez pas.--model1 <model_name>
python -m distar.bin.play --game_type agent_vs_agent
Il exécute 2 instances StarCraftII toutes deux contrôlées par notre agent RL, spécifiez un autre chemin de modèle avec l'argument --model1 <model_name> --model2 <model_name>
python -m distar.bin.play --game_type agent_vs_bot
L'agent RL joue contre un bot d'élite intégré.
Il est nécessaire de construire différents agents au sein d’une même base de code tout en étant capable de les faire jouer les uns contre les autres. Nous implémentons cela en faisant de l'acteur et de l'environnement des composants communs et en mettant tout ce qui concerne l'agent dans un seul répertoire. L'agent appelé default sous distar/agent en est un exemple. Chaque script par défaut utilise l'importation relative, ce qui les rend portables n'importe où dans leur ensemble.
Si vous souhaitez créer un nouvel agent avec/sans notre agent par défaut, suivez les instructions ici
Si vous souhaitez former un nouvel agent avec notre framework, suivez les instructions ci-dessous et voici un guide avec plus de détails sur l'ensemble du pipeline de formation.
Le client StarCraftII est requis pour le décodage en relecture, suivez les instructions ci-dessus.
python -m distar.bin.sl_train --data < path >
path peut être soit un répertoire avec des replays, soit un fichier incluant un chemin de replay à chaque ligne.
En option, séparer le décodage en relecture et la formation du modèle pourrait être plus efficace, exécutez les trois scripts dans différents terminaux :
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 >
Pour une formation distribuée :
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 >
Voici un exemple de formation sur une machine avec 4 GPU en mode distant :
# 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 >
L'apprentissage par renforcement utilisera le modèle supervisé comme modèle initial, veuillez d'abord le télécharger, le client StarCraftII est également requis.
python -m disatr.bin.rl_train
python -m disatr.bin.rl_train --task selfplay
Quatre composants sont utilisés pour la formation RL, tout comme la formation SL, ils peuvent être exécutés via différents processus :
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
La formation distribuée est également prise en charge comme la formation SL.
Slack : lien
Serveur Discord : lien
@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 publié sous la licence Apache 2.0.