DI-star: Uma plataforma de treinamento distribuída de IA de jogos em grande escala desenvolvida especialmente para StarCraft II. Já treinamos IA de grande mestre! Este projeto contém:
Jogue a demonstração e o código de teste (tente brincar com nosso agente!)
Primeira versão do agente SL e RL pré-treinado (apenas Zerg vs Zerg)
Código de treinamento de Aprendizagem Supervisionada e Aprendizagem por Reforço (atualizado em 31/01/2022)
Linha de base de treinamento com recursos limitados (um PC) e orientação de treinamento aqui (Novo! atualizado em 24/04/2022)
Agentes brigaram com Harstem (YouTube) (atualizado em 01/04/2022)
Agentes RL pré-treinados mais fortes (WIP)
Testando software no Windows | 对战软件下载
Por favor, marque-nos com uma estrela (clique no botão no canto superior direito desta página) para ajudar os agentes DI-star a crescerem mais rápido :)
Requisito ambiental:
Nota: Não existe uma versão de varejo no Linux, siga as instruções aqui
Adicione o caminho de instalação do SC2 às variáveis de ambiente SC2PATH
(pule isso se você usar o caminho de instalação padrão no MacOS ou Windows, que é C:Program Files (x86)StarCraft II
ou /Applications/StarCraft II
):
No MacOS ou Linux, insira isto no terminal:
export SC2PATH= < sc2/installation/path >
No Windows:
SC2PATH
como o local de instalação do sc2.git clone https://github.com/opendilab/DI-star.git
cd DI-star
pip install -e .
Pytorch versão 1.7.1 e CUDA são recomendados. Siga as instruções do site oficial do pytorch
Nota: A GPU é necessária para um desempenho decente no teste do agente em tempo real, você também pode usar o pytorch sem cuda, mas nenhum desempenho é garantido devido à latência de inferência na CPU. Certifique-se de definir o SC2 com a qualidade de imagem mais baixa antes de testar.
Clique duas vezes no arquivo data/replays/replay_4.10.0.SC2Replay, StarCraftII versão 4.10.0 será baixado automaticamente.
Nota: Treinamos nossos modelos com versões de 4.8.2 a 4.9.3. O patch 5.0.9 foi lançado em 15 de março de 2022. Algumas mudanças têm grande impacto no desempenho, então corrigimos nossa versão em 4.10.0 na avaliação.
python -m distar.bin.download_model --name rl_model
Nota: Especifique rl_model
ou sl_model
após --name
para baixar o modelo de aprendizagem por reforço ou modelo supervisionado.
Lista de modelos:
sl_model
: treinando com replays humanos, habilidade é igual a jogadores diamante.rl_model
: usado como padrão, treinamento com aprendizado por reforço, habilidade é igual a mestre ou grande mestre.Abathur
: um dos modelos de aprendizagem por reforço, gosta de jogar mutalisca.Brakk
: um dos modelos de aprendizagem por reforço, gosta de lingbane rush.Dehaka
: um dos modelos de aprendizagem por reforço, gosta de brincar de destruidor de baratas.Zagara
: um dos modelos de aprendizagem por reforço, gosta de corrida de baratas. Com o modelo fornecido, oferecemos vários testes com nosso agente.
python -m distar.bin.play
Ele executa 2 instâncias de StarCraftII. O primeiro é controlado pelo nosso agente RL. O jogador humano pode jogar no segundo em tela cheia como um jogo normal.
Observação:
--cpu
se você não os tiver.--model1 <model_name>
python -m distar.bin.play --game_type agent_vs_agent
Ele executa 2 instâncias StarCraftII, ambas controladas pelo nosso agente RL, especifique outro caminho do modelo com o argumento --model1 <model_name> --model2 <model_name>
python -m distar.bin.play --game_type agent_vs_bot
O agente RL joga contra o bot de elite integrado.
É necessário construir diferentes agentes dentro de uma base de código e ainda ser capaz de fazê-los jogar uns contra os outros. Implementamos isso tornando o ator e o ambiente como componentes comuns e colocando tudo relacionado ao agente em um diretório. O agente chamado default em distar/agent é um exemplo disso. Cada script padrão usa importação relativa, o que os torna portáveis para qualquer lugar como um todo.
Se você deseja criar um novo agente com/sem nosso agente padrão, siga as instruções aqui
Se você deseja treinar um novo agente com nosso framework, siga as instruções abaixo e aqui está um guia com mais detalhes de todo o pipeline de treinamento.
O cliente StarCraftII é necessário para a decodificação do replay, siga as instruções acima.
python -m distar.bin.sl_train --data < path >
path pode ser um diretório com replays ou um arquivo inclui um caminho de replay em cada linha.
Opcionalmente, separar a decodificação de repetição e o treinamento do modelo pode ser mais eficiente, execute os três scripts em terminais diferentes:
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 treinamento distribuído:
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 >
Aqui está um exemplo de treinamento em uma máquina com 4 GPUs em 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 >
O aprendizado por reforço usará o modelo supervisionado como modelo inicial, faça o download primeiro, o cliente StarCraftII também é necessário.
python -m disatr.bin.rl_train
python -m disatr.bin.rl_train --task selfplay
Quatro componentes são usados para o treinamento RL, assim como o treinamento SL, eles podem ser executados através de diferentes processos:
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
O treinamento distribuído também é compatível com o treinamento SL.
Folga: link
Servidor de Discord: 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 lançado sob a licença Apache 2.0.