Пожалуйста, найдите NLE в новом доме по адресу github.com/heiner/nle.
Среда обучения NetHack (NLE) — это среда обучения с подкреплением, представленная на NeurIPS 2020. NLE основана на NetHack 3.6.6 и предназначена для предоставления стандартного интерфейса RL для игры и включает в себя задачи, которые служат первым шагом для оценки агентов. в этой новой среде.
NetHack — одна из старейших и, возможно, самых влиятельных видеоигр в истории, а также один из самых сложных рогаликов, в которые сейчас играют люди. Он генерируется процедурно, богат сущностями и динамикой и в целом представляет собой чрезвычайно сложную среду для современных агентов RL, но при этом его запуск намного дешевле по сравнению с другими сложными испытательными стендами. С помощью NLE мы хотим сделать NetHack одним из следующих вызовов для исследований в области принятия решений и машинного обучения.
Вы можете прочитать больше о NLE в документе NeurIPS 2020, а также о NetHack в оригинальном README, на сайте nethack.org и в вики NetHack.
Мы благодарим ngoodger за реализацию языковой оболочки NLE, которая переводит неязыковые наблюдения из задач NetHack в аналогичные языковые представления. Действия также могут быть дополнительно предоставлены в текстовой форме, которые преобразуются в дискретные действия NLE.
Код NetHack Learning Dataset (NLD) теперь поставляется с NLE
, что позволяет пользователям загружать крупномасштабные наборы данных, представленные в Dungeons and Data: A Large-Scale NetHack Dataset, а также генерировать и загружать свои собственные наборы данных.
import nle . dataset as nld
if not nld . db . exists ():
nld . db . create ()
# NB: Different methods are used for data based on NLE and data from NAO.
nld . add_nledata_directory ( "/path/to/nld-aa" , "nld-aa-v0" )
nld . add_altorg_directory ( "/path/to/nld-nao" , "nld-nao-v0" )
dataset = nld . TtyrecDataset ( "nld-aa-v0" , batch_size = 128 , ...)
for i , mb in enumerate ( dataset ):
foo ( mb ) # etc...
Информацию о том, как загрузить NLD-AA и NLD-NAO, см. в документе набора данных здесь.
В противном случае ознакомьтесь с учебным блокнотом Colab здесь.
Откройте запрос на включение, чтобы добавить документы.
Начать работу со средой NLE чрезвычайно просто, если вы знакомы с другими средами спортзала/RL.
NLE требует, чтобы python>=3.5
, cmake>=3.15
были установлены и доступны как при сборке пакета, так и во время выполнения.
В MacOS Homebrew
можно использовать следующим образом:
$ brew install cmake
В обычном дистрибутиве Ubuntu 18.04 cmake
и другие зависимости можно установить, выполнив следующие действия:
# Python and most build deps
$ sudo apt-get install -y build-essential autoconf libtool pkg-config
python3-dev python3-pip python3-numpy git flex bison libbz2-dev
# recent cmake version
$ wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2> /dev/null | sudo apt-key add -
$ sudo apt-add-repository ' deb https://apt.kitware.com/ubuntu/ bionic main '
$ sudo apt-get update && apt-get --allow-unauthenticated install -y
cmake
kitware-archive-keyring
После этого следует настроить среду. Мы советуем использовать для этого среду conda:
$ conda create -y -n nle python=3.8
$ conda activate nle
$ pip install nle
ПРИМЕЧАНИЕ. Если вы хотите расширить/разработать NLE, установите пакет следующим образом:
$ git clone https://github.com/facebookresearch/nle --recursive
$ pip install -e " .[dev] "
$ pre-commit install
Мы предоставили несколько изображений докеров. Пожалуйста, ознакомьтесь с соответствующим README.
После установки можно опробовать любую из предложенных задач следующим образом:
>> > import gym
>> > import nle
>> > env = gym . make ( "NetHackScore-v0" )
>> > env . reset () # each reset generates a new dungeon
>> > env . step ( 1 ) # move agent '@' north
>> > env . render ()
NLE также поставляется с несколькими скриптами, которые позволяют развертывать некоторые среды и экспериментировать с пространством действий:
# Play NetHackStaircase-v0 as a human
$ python -m nle.scripts.play
# Use a random agent
$ python -m nle.scripts.play --mode random
# Play the full game using directly the NetHack internal interface
# (Useful for debugging outside of the gym environment)
$ python -m nle.scripts.play --env NetHackScore-v0 # works with random agent too
# See all the options
$ python -m nle.scripts.play --help
Обратите внимание, что nle.scripts.play
также можно запустить с помощью nle-play
, если пакет установлен правильно.
Кроме того, агент TorchBeast включен в nle.agent
вместе с простой моделью, которая обеспечивает отправную точку для экспериментов:
$ pip install " nle[agent] "
$ python -m nle.agent.agent --num_actors 80 --batch_size 32 --unroll_length 80 --learning_rate 0.0001 --entropy_cost 0.0001 --use_lstm --total_steps 1000000000
Постройте среднюю доходность за последние 100 эпизодов:
$ python -m nle.scripts.plot
averaged episode return
140 +---------------------------------------------------------------------+
| + + ++-+ ++++++++++++++++++++++++|
| : : ++++++++||||||||||||||||||||||||
120 |-+...........:.............:...+-+.++++|||||||||||||||||||||||||||||||
| : +++++++++++++++||||||||||AAAAAAAAAAAAAAAAAAAAAA|
| +++++++++++++||||||||||||||AAAAAAAAAAAA|||||||||||||||||||
100 |-+......+++++|+|||||||||||||||||||||||AA||||||||||||||||||||||||||||||
| +++|||||||||||||||AAAAAAAAAAAAAA|||||||||||+++++++++++++++++++|
| ++++|||||AAAAAAAAAAAAAA||||||||||||++++++++++++++-+: |
80 |-++++|||||AAAAAA|||||||||||||||||||||+++++-+...........:...........+-|
| ++|||||AAA|||||||||||||||++++++++++++-+ : : |
60 |++||AAAAA|||||+++++++++++++-+............:.............:...........+-|
|++|AA||||++++++-|-+ : : : |
|+|AA|||+++-+ : : : : |
40 |+|A+++++-+...:.............:.............:.............:...........+-|
|+AA+-+ : : : : |
|AA-+ : : : : |
20 |AA-+.........:.............:.............:.............:...........+-|
|++-+ : : : : |
|+-+ : : : : |
0 |-+...........:.............:.............:.............:...........+-|
|+ : : : : |
|+ + + + + |
-20 +---------------------------------------------------------------------+
0 2e+08 4e+08 6e+08 8e+08 1e+09
steps
Мы приветствуем вклад в NLE. Если вы заинтересованы в участии, пожалуйста, ознакомьтесь с этим документом.
NLE является прямым ответвлением NetHack и поэтому содержит код, работающий на многих различных уровнях абстракции. Это варьируется от игровой логики низкого уровня до администрирования повторяющихся игр nethack более высокого уровня и, наконец, привязки этих игр к среде Python gym
.
Если вы хотите узнать больше об архитектуре nle
и о том, как она работает, ознакомьтесь с документом по архитектуре. Это может быть полезной отправной точкой для всех, кто хочет внести свой вклад в элементы NLE нижнего уровня.
Тим и Хайнер из Facebook AI Research о демократизации исследований в области обучения с подкреплением.
Если вы используете NLE в какой-либо своей работе, укажите:
@inproceedings{kuettler2020nethack,
author = {Heinrich K{"{u}}ttler and
Nantas Nardelli and
Alexander H. Miller and
Roberta Raileanu and
Marco Selvatici and
Edward Grefenstette and
Tim Rockt{"{a}}schel},
title = {{The NetHack Learning Environment}},
booktitle = {Proceedings of the Conference on Neural Information Processing Systems (NeurIPS)},
year = {2020},
}
Если вы используете НЛД или наборы данных в какой-либо своей работе, укажите:
@article{hambro2022dungeons,
title={Dungeons and Data: A Large-Scale NetHack Dataset},
author={Hambro, Eric and Raileanu, Roberta and Rothermel, Danielle and Mella, Vegard and Rockt{"a}schel, Tim and K{"u}ttler, Heinrich and Murray, Naila},
journal={Advances in Neural Information Processing Systems},
volume={35},
pages={24864--24878},
year={2022}
}