Пожалуйста, найдите 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}
}