DI-star: una plataforma de entrenamiento distribuida de IA para juegos a gran escala especialmente desarrollada para StarCraft II. ¡Ya hemos entrenado a la IA del gran maestro! Este proyecto contiene:
Juega demo y prueba el código (¡prueba a jugar con nuestro agente!)
Primera versión del agente SL y RL previamente entrenado (solo Zerg vs Zerg)
Código de formación de Aprendizaje Supervisado y Aprendizaje por Refuerzo (actualizado el 31-01-2022)
Línea base de capacitación con recursos limitados (una PC) y orientación de capacitación aquí (¡Nuevo! actualizado el 24 de abril de 2022)
Los agentes pelearon con Harstem (YouTube) (actualizado el 1 de abril de 2022)
Agentes RL pre-entrenados (WIP) más fuertes
Software de prueba en Windows | 对战软件下载
Por favor, destaque (haga clic en el botón en la parte superior derecha de esta página) para ayudar a los agentes DI-star a crecer más rápido :)
Requisito ambiental:
Nota: No existe una versión comercial para Linux, siga las instrucciones aquí
Agregue la ruta de instalación de SC2 a las variables de entorno SC2PATH
(omita esto si usa la ruta de instalación predeterminada en MacOS o Windows, que es C:Program Files (x86)StarCraft II
o /Applications/StarCraft II
):
En MacOS o Linux, ingrese esto en la terminal:
export SC2PATH= < sc2/installation/path >
En Windows:
SC2PATH
como la ubicación de instalación de sc2.git clone https://github.com/opendilab/DI-star.git
cd DI-star
pip install -e .
Se recomienda Pytorch versión 1.7.1 y CUDA. Siga las instrucciones del sitio oficial de pytorch.
Nota: La GPU es necesaria para un rendimiento decente en la prueba del agente en tiempo real; también puede usar pytorch sin cuda, pero no se garantiza el rendimiento debido a la latencia de inferencia en la CPU. Asegúrese de configurar SC2 con la calidad de imagen más baja antes de realizar la prueba.
Haga doble clic en el archivo data/replays/replay_4.10.0.SC2Replay, StarCraftII versión 4.10.0 se descargará automáticamente.
Nota: Entrenamos nuestros modelos con versiones de 4.8.2 a 4.9.3. El parche 5.0.9 salió el 15 de marzo de 2022. Algunos cambios tienen un gran impacto en el rendimiento, por lo que fijamos nuestra versión en 4.10.0 en evaluación.
python -m distar.bin.download_model --name rl_model
Nota: Especifique rl_model
o sl_model
después de --name
para descargar el modelo de aprendizaje por refuerzo o el modelo supervisado.
Lista de modelos:
sl_model
: entrenamiento con repeticiones humanas, la habilidad es igual a la de los jugadores de diamante.rl_model
: usado por defecto, entrenamiento con aprendizaje por refuerzo, la habilidad es igual a maestro o gran maestro.Abathur
: uno de los modelos de aprendizaje por refuerzo, le gusta jugar al mutalisco.Brakk
: uno de los modelos de aprendizaje por refuerzo, le gusta el lingbane rush.Dehaka
: uno de los modelos de aprendizaje por refuerzo, le gusta jugar al devastador de cucarachas.Zagara
: uno de los modelos de aprendizaje por refuerzo, le gusta la fiebre de las cucarachas. Con el modelo dado, proporcionamos múltiples pruebas con nuestro agente.
python -m distar.bin.play
Ejecuta 2 instancias de StarCraftII. El primero está controlado por nuestro agente RL. El jugador humano puede jugar en el segundo en pantalla completa como un juego normal.
Nota:
--cpu
si no los tiene.--model1 <model_name>
python -m distar.bin.play --game_type agent_vs_agent
Ejecuta 2 instancias de StarCraftII, ambas controladas por nuestro Agente RL, especifique otra ruta de modelo con el argumento --model1 <model_name> --model2 <model_name>
python -m distar.bin.play --game_type agent_vs_bot
El agente de RL juega contra un robot de élite integrado.
Es necesario crear diferentes agentes dentro de una base de código y aún poder hacerlos jugar entre sí. Implementamos esto haciendo que el actor y el entorno sean componentes comunes y colocando todo lo relacionado con el agente en un directorio. El agente llamado default en distar/agent es un ejemplo de esto. Cada script por defecto utiliza importación relativa, lo que los hace portátiles a cualquier lugar como una parte completa.
Si desea crear un nuevo agente con o sin nuestro agente predeterminado, siga las instrucciones aquí
Si desea capacitar a un nuevo agente con nuestro marco, siga las instrucciones a continuación y aquí encontrará una guía con más detalles de todo el proceso de capacitación.
Se requiere el cliente StarCraftII para la decodificación de la reproducción; siga las instrucciones anteriores.
python -m distar.bin.sl_train --data < path >
La ruta podría ser un directorio con repeticiones o un archivo que incluya una ruta de reproducción en cada línea.
Opcionalmente, separar la decodificación de repetición y el entrenamiento del modelo podría ser más eficiente; ejecute los tres scripts en diferentes terminales:
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 >
Para entrenamiento distribuido:
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 >
A continuación se muestra un ejemplo de entrenamiento en una máquina con 4 GPU en modo remoto:
# 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 >
El aprendizaje por refuerzo utilizará el modelo supervisado como modelo inicial; descárguelo primero; también se requiere el cliente StarCraftII.
python -m disatr.bin.rl_train
python -m disatr.bin.rl_train --task selfplay
Se utilizan cuatro componentes para el entrenamiento RL, al igual que el entrenamiento SL, se pueden ejecutar a través de diferentes procesos:
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 formación distribuida también se admite como la formación SL.
flojo: enlace
Servidor de Discord: enlace
@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 lanzado bajo la licencia Apache 2.0.