Encuentre NLE en su nuevo hogar en github.com/heiner/nle
El entorno de aprendizaje NetHack (NLE) es un entorno de aprendizaje por refuerzo presentado en NeurIPS 2020. NLE se basa en NetHack 3.6.6 y está diseñado para proporcionar una interfaz RL estándar para el juego, y viene con tareas que funcionan como un primer paso para evaluar a los agentes. en este nuevo entorno.
NetHack es uno de los videojuegos más antiguos y posiblemente más impactantes de la historia, además de ser uno de los roguelikes más difíciles que juegan los humanos actualmente. Se genera de manera procesal, es rico en entidades y dinámicas y, en general, es un entorno extremadamente desafiante para los agentes RL de última generación actuales, a la vez que su ejecución es mucho más económica en comparación con otros bancos de pruebas desafiantes. A través de NLE, deseamos establecer NetHack como uno de los próximos desafíos para la investigación en toma de decisiones y aprendizaje automático.
Puede leer más sobre NLE en el documento NeurIPS 2020 y sobre NetHack en su archivo README original, en nethack.org y en la wiki de NetHack.
Agradecemos a ngoodger por implementar NLE Language Wrapper que traduce las observaciones no lingüísticas de las tareas de NetHack a representaciones de lenguaje similares. Opcionalmente, las acciones también se pueden proporcionar en forma de texto que se convierten en acciones discretas del NLE.
El código NetHack Learning Dataset (NLD) ahora se incluye con NLE
, lo que permite a los usuarios cargar conjuntos de datos a gran escala presentados en Dungeons and Data: A Large-Scale NetHack Dataset, al mismo tiempo que generan y cargan sus propios conjuntos de datos.
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...
Para obtener información sobre cómo descargar NLD-AA y NLD-NAO, consulte el documento del conjunto de datos aquí.
De lo contrario, consulta el tutorial del cuaderno de Colab aquí.
Abra una solicitud de extracción para agregar artículos.
Comenzar con entornos NLE es extremadamente sencillo, siempre que uno esté familiarizado con otros entornos de gimnasio/RL.
NLE requiere que python>=3.5
, cmake>=3.15
estén instalados y disponibles tanto al compilar el paquete como en tiempo de ejecución.
En MacOS , se puede utilizar Homebrew
de la siguiente manera:
$ brew install cmake
En una distribución simple de Ubuntu 18.04 , cmake
y otras dependencias se pueden instalar haciendo:
# 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
Después es cuestión de configurar su entorno. Recomendamos utilizar un entorno conda para esto:
$ conda create -y -n nle python=3.8
$ conda activate nle
$ pip install nle
NOTA: Si desea ampliar/desarrollar NLE, instale el paquete de la siguiente manera:
$ git clone https://github.com/facebookresearch/nle --recursive
$ pip install -e " .[dev] "
$ pre-commit install
Hemos proporcionado algunas imágenes de la ventana acoplable. Consulte el archivo README correspondiente.
Después de la instalación, se puede probar cualquiera de las tareas proporcionadas de la siguiente manera:
>> > 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 también viene con algunos scripts que permiten implementar algunas implementaciones del entorno y jugar con el espacio de acción:
# 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
Tenga en cuenta que nle.scripts.play
también se puede ejecutar con nle-play
, si el paquete se ha instalado correctamente.
Además, se incluye un agente TorchBeast en nle.agent
junto con un modelo simple para proporcionar un punto de partida para los experimentos:
$ 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
Trace el rendimiento medio de los últimos 100 episodios:
$ 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
Damos la bienvenida a las contribuciones a NLE. Si está interesado en contribuir, consulte este documento.
NLE es una bifurcación directa de NetHack y, por lo tanto, contiene código que opera en muchos niveles diferentes de abstracción. Esto abarca desde la lógica de juego de bajo nivel hasta la administración de nivel superior de juegos nethack repetidos y, finalmente, la vinculación de estos juegos al entorno gym
Python.
Si desea obtener más información sobre la arquitectura de nle
y cómo funciona internamente, consulte el documento de arquitectura. Este puede ser un punto de partida útil para cualquiera que quiera contribuir a los elementos de nivel inferior de NLE.
Tim & Heiner de Facebook AI Research sobre la democratización de la investigación del aprendizaje por refuerzo.
Si utiliza NLE en alguno de sus trabajos, cite:
@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},
}
Si utiliza NLD o los conjuntos de datos en cualquiera de sus trabajos, cite:
@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}
}