DI-Star: Eine groß angelegte KI-verteilte Trainingsplattform, die speziell für StarCraft II entwickelt wurde. Wir haben bereits Großmeister-KI trainiert!Dieses Projekt enthält:
Spielen Sie Demo und Testcode (versuchen Sie es mit unserem Agenten!)
Erste Version des vortrainierten SL- und RL-Agenten (nur Zerg vs. Zerg)
Schulungskodex für überwachtes Lernen und verstärkendes Lernen (aktualisiert am 31.01.2022)
Trainingsbasis mit begrenzter Ressource (ein PC) und Trainingsanleitung hier (Neu! aktualisiert am 24.04.2022)
Agenten kämpften mit Harstem (YouTube) (aktualisiert am 01.04.2022)
Stärkere vorab trainierte RL-Agenten (WIP)
Software unter Windows testen | 对战软件下载
Bitte markieren Sie uns (klicken Sie auf die Schaltfläche oben rechts auf dieser Seite), damit DI-Star-Agenten schneller erwachsen werden :)
Umgebungsanforderung:
Hinweis: Für Linux gibt es keine Einzelhandelsversion. Bitte befolgen Sie die Anweisungen hier
Fügen Sie den SC2-Installationspfad zu den Umgebungsvariablen SC2PATH
hinzu (überspringen Sie dies, wenn Sie den Standardinstallationspfad unter MacOS oder Windows verwenden, der C:Program Files (x86)StarCraft II
oder /Applications/StarCraft II
ist):
Geben Sie unter MacOS oder Linux Folgendes in das Terminal ein:
export SC2PATH= < sc2/installation/path >
Unter Windows:
SC2PATH
als sc2-Installationsort fest.git clone https://github.com/opendilab/DI-star.git
cd DI-star
pip install -e .
Pytorch Version 1.7.1 und CUDA werden empfohlen. Befolgen Sie die Anweisungen auf der offiziellen Pytorch-Website
Hinweis: Für eine ordentliche Leistung im Echtzeit-Agententest ist eine GPU erforderlich. Sie können Pytorch auch ohne Cuda verwenden, aber aufgrund der Inferenzlatenz auf der CPU ist die Leistung nicht garantiert. Stellen Sie vor dem Test sicher, dass Sie SC2 auf die niedrigste Bildqualität eingestellt haben.
Doppelklicken Sie auf die Datei data/replays/replay_4.10.0.SC2Replay. StarCraftII Version 4.10.0 wird automatisch heruntergeladen.
Hinweis: Wir haben unsere Modelle mit den Versionen 4.8.2 bis 4.9.3 trainiert. Patch 5.0.9 wurde am 15. März 2022 veröffentlicht. Einige Änderungen haben große Auswirkungen auf die Leistung, daher fixieren wir unsere Version in der Evaluierung auf 4.10.0.
python -m distar.bin.download_model --name rl_model
Hinweis: Geben Sie rl_model
oder sl_model
nach --name
an, um das Reinforcement-Learning-Modell oder das überwachte Modell herunterzuladen.
Modellliste:
sl_model
: Training mit menschlichen Wiederholungen, die Fähigkeiten sind denen von Diamantspielern ebenbürtig.rl_model
: Wird standardmäßig verwendet, Training mit Verstärkungslernen, Fähigkeit entspricht Meister oder Großmeister.Abathur
: eines der Modelle des verstärkenden Lernens, spielt gerne Mutalisk.Brakk
: eines der verstärkten Lernmodelle, mag Lingbane Rush.Dehaka
: eines der Modelle des verstärkenden Lernens, spielt gern Kakerlakenverwüster.Zagara
: eines der verstärkten Lernmodelle, mag Kakerlakenrausch. Mit dem angegebenen Modell bieten wir mit unserem Agenten mehrere Tests an.
python -m distar.bin.play
Es führt 2 StarCraftII-Instanzen aus. Der erste wird von unserem RL-Agenten kontrolliert. Der menschliche Spieler kann auf der zweiten Seite wie ein normales Spiel im Vollbildmodus spielen.
Notiz:
--cpu
hinzu, wenn Sie diese nicht haben.--model1 <model_name>
anpython -m distar.bin.play --game_type agent_vs_agent
Es führt zwei StarCraftII-Instanzen aus, die beide von unserem RL-Agenten gesteuert werden. Geben Sie einen anderen Modellpfad mit dem Argument --model1 <model_name> --model2 <model_name>
an
python -m distar.bin.play --game_type agent_vs_bot
Der RL-Agent spielt gegen den integrierten Elite-Bot.
Es ist notwendig, verschiedene Agenten innerhalb einer Codebasis zu erstellen und sie dennoch gegeneinander spielen zu lassen. Wir implementieren dies, indem wir Akteur und Umgebung zu gemeinsamen Komponenten machen und alles, was mit dem Agenten zu tun hat, in einem Verzeichnis ablegen. Ein Beispiel hierfür ist der Agent namens default unter distar/agent. Jedes Skript verwendet standardmäßig einen relativen Import, wodurch es als Ganzes überall hin portierbar ist.
Wenn Sie einen neuen Agenten mit oder ohne unseren Standardagenten erstellen möchten, befolgen Sie die Anweisungen hier
Wenn Sie einen neuen Agenten mit unserem Framework schulen möchten, befolgen Sie die nachstehenden Anweisungen. Hier finden Sie eine Anleitung mit weiteren Details zur gesamten Schulungspipeline.
Für die Replay-Dekodierung ist der StarCraftII-Client erforderlich. Befolgen Sie die obigen Anweisungen.
python -m distar.bin.sl_train --data < path >
Der Pfad kann entweder ein Verzeichnis mit Wiedergaben sein oder eine Datei enthält in jeder Zeile einen Wiedergabepfad.
Optional könnte die Trennung von Wiedergabedecodierung und Modelltraining effizienter sein. Führen Sie die drei Skripte in verschiedenen Terminals aus:
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 >
Für verteiltes Training:
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 >
Hier ist ein Beispiel für ein Training auf einer Maschine mit 4 GPUs im Remote-Modus:
# 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 >
Beim Reinforcement Learning wird das überwachte Modell als Ausgangsmodell verwendet. Bitte laden Sie es zuerst herunter. Der StarCraftII-Client ist ebenfalls erforderlich.
python -m disatr.bin.rl_train
python -m disatr.bin.rl_train --task selfplay
Für das RL-Training werden vier Komponenten verwendet, genau wie das SL-Training, sie können durch unterschiedliche Prozesse ausgeführt werden:
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
Verteiltes Training wird ebenso unterstützt wie das SL-Training.
Slack: Link
Discord-Server: Link
@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 wurde unter der Apache 2.0-Lizenz veröffentlicht.