DI-star: крупномасштабная игровая распределенная обучающая платформа с искусственным интеллектом, специально разработанная для StarCraft II. Мы уже обучили гроссмейстерского ИИ! Этот проект содержит:
Поиграйте в демо и протестируйте код (попробуйте поиграть с нашим агентом!)
Первая версия предварительно обученного агента SL и RL (только зерги против зергов)
Кодекс обучения контролируемому обучению и обучению с подкреплением (обновлен 31 января 2022 г.)
Базовый уровень обучения с ограниченными ресурсами (один компьютер) и руководство по обучению здесь (новинка! Обновлено 24 апреля 2022 г.)
Агенты дрались с Харстемом (YouTube) (обновлено 1 апреля 2022 г.)
Более сильные предварительно обученные агенты RL (WIP)
Тестирование программного обеспечения в Windows | 对战软件下载
Пожалуйста, отметьте нас (нажмите кнопку в правом верхнем углу этой страницы), чтобы помочь агентам DI-star повзрослеть быстрее :)
Требования к окружающей среде:
Примечание. Розничной версии для Linux не существует, следуйте инструкциям здесь.
Добавьте путь установки SC2 к переменным среды SC2PATH
(пропустите это, если вы используете путь установки по умолчанию в 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.
Примечание. Для обеспечения достойной производительности в тесте агента в реальном времени необходим графический процессор. Вы также можете использовать pytorch без cuda, но производительность не гарантируется из-за задержки вывода на процессоре. Перед тестированием убедитесь, что для SC2 установлено самое низкое качество изображения.
Дважды щелкните файл data/replays/replay_4.10.0.SC2Replay, и StarCraftII версии 4.10.0 будет загружен автоматически.
Примечание. Мы обучали наши модели на версиях от 4.8.2 до 4.9.3. Патч 5.0.9 вышел 15 марта 2022 г. Некоторые изменения оказывают огромное влияние на производительность, поэтому мы исправляем нашу версию на 4.10.0 в ознакомительной версии.
python -m distar.bin.download_model --name rl_model
Примечание. Укажите rl_model
или sl_model
после --name
, чтобы загрузить модель обучения с подкреплением или контролируемую модель.
Список моделей:
sl_model
: тренировка с человеческими повторами, навыки равны алмазным игрокам.rl_model
: используется по умолчанию, обучение с подкреплением, навык равен мастеру или гроссмейстеру.Abathur
: одна из моделей обучения с подкреплением, любит играть в муталиска.Brakk
: одна из моделей обучения с подкреплением, любит лингбан-раш.Dehaka
: одна из моделей обучения с подкреплением, любит играть в опустошителя тараканов.Zagara
: одна из моделей обучения с подкреплением, любит тараканьи набеги. С помощью данной модели мы проводим несколько тестов с нашим агентом.
python -m distar.bin.play
Он запускает 2 экземпляра StarCraftII. Первый контролируется нашим агентом RL. Игрок-человек может играть на втором в полноэкранном режиме, как в обычной игре.
Примечание:
--cpu
если у вас их нет.--model1 <model_name>
>python -m distar.bin.play --game_type agent_vs_agent
Он запускает 2 экземпляра StarCraftII, оба контролируются нашим агентом RL, укажите другой путь модели с аргументом --model1 <model_name> --model2 <model_name>
python -m distar.bin.play --game_type agent_vs_bot
Агент RL играет против встроенного элитного бота.
Необходимо построить разных агентов в рамках одной кодовой базы и при этом иметь возможность заставить их играть друг против друга. Мы реализуем это, сделав актера и среду общими компонентами и поместив все, что связано с агентом, в один каталог. Примером этого является агент, называемый default в distar/agent. Каждый скрипт по умолчанию использует относительный импорт, что делает его переносимым куда угодно как единое целое.
Если вы хотите создать нового агента с нашим агентом по умолчанию или без него, следуйте инструкциям здесь.
Если вы хотите обучить нового агента с помощью нашей структуры, следуйте инструкциям ниже, а вот руководство с более подробной информацией обо всем процессе обучения.
Для декодирования повтора необходим клиент 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-мя графическими процессорами в удаленном режиме:
# 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
Для обучения RL используются четыре компонента, как и для обучения SL, они могут выполняться в рамках разных процессов:
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},
}
DI-star выпущен под лицензией Apache 2.0.