Veuillez trouver NLE dans sa nouvelle maison sur github.com/heiner/nle
Le NetHack Learning Environment (NLE) est un environnement d'apprentissage par renforcement présenté à NeurIPS 2020. NLE est basé sur NetHack 3.6.6 et conçu pour fournir une interface RL standard au jeu, et est livré avec des tâches qui fonctionnent comme une première étape pour évaluer les agents. sur ce nouvel environnement.
NetHack est l'un des jeux vidéo les plus anciens et sans doute les plus percutants de l'histoire, ainsi que l'un des roguelikes les plus difficiles actuellement joués par les humains. Il est généré de manière procédurale, riche en entités et en dynamiques, et constitue globalement un environnement extrêmement difficile pour les agents RL de pointe actuels, tout en étant beaucoup moins cher à exécuter par rapport à d'autres bancs d'essai difficiles. A travers NLE, nous souhaitons imposer NetHack comme l’un des prochains défis de la recherche en prise de décision et en machine learning.
Vous pouvez en savoir plus sur NLE dans l'article NeurIPS 2020 et sur NetHack dans son README original, sur nethack.org et sur le wiki NetHack.
Nous remercions ngoodger d'avoir implémenté le NLE Language Wrapper qui traduit les observations non linguistiques des tâches NetHack en représentations linguistiques similaires. Les actions peuvent également être facultativement fournies sous forme de texte qui sont converties en actions discrètes du NLE.
Le code NetHack Learning Dataset (NLD) est désormais livré avec NLE
, permettant aux utilisateurs de charger des ensembles de données à grande échelle présentés dans Dungeons and Data : A Large-Scale NetHack Dataset, tout en générant et en chargeant leurs propres ensembles de données.
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...
Pour plus d'informations sur la façon de télécharger NLD-AA et NLD-NAO, consultez la documentation sur l'ensemble de données ici.
Sinon, consultez le tutoriel du notebook Colab ici.
Ouvrez une pull request pour ajouter des articles.
Commencer avec les environnements NLE est extrêmement simple, à condition d’être familier avec d’autres environnements gym/RL.
NLE nécessite que python>=3.5
, cmake>=3.15
soit installé et disponible à la fois lors de la construction du package et au moment de l'exécution.
Sur MacOS , on peut utiliser Homebrew
de la manière suivante :
$ brew install cmake
Sur une simple distribution Ubuntu 18.04 , cmake
et d'autres dépendances peuvent être installées en procédant :
# 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
Il s'agit ensuite de configurer votre environnement. Nous vous conseillons d'utiliser un environnement conda pour cela :
$ conda create -y -n nle python=3.8
$ conda activate nle
$ pip install nle
REMARQUE : Si vous souhaitez étendre/développer NLE, veuillez installer le package comme suit :
$ git clone https://github.com/facebookresearch/nle --recursive
$ pip install -e " .[dev] "
$ pre-commit install
Nous avons fourni quelques images Docker. Veuillez consulter le README correspondant.
Après l'installation, vous pouvez essayer n'importe laquelle des tâches proposées comme suit :
>> > 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 est également livré avec quelques scripts qui permettent d'obtenir des déploiements d'environnement et de jouer avec l'espace d'action :
# 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
Notez que nle.scripts.play
peut également être exécuté avec nle-play
, si le package a été correctement installé.
De plus, un agent TorchBeast est regroupé dans nle.agent
avec un modèle simple pour fournir un point de départ pour les expériences :
$ 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
Tracez le rendement moyen sur les 100 derniers épisodes :
$ 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
Nous apprécions les contributions à NLE. Si vous souhaitez contribuer, veuillez consulter ce document.
NLE est un fork direct de NetHack et contient donc du code qui fonctionne sur de nombreux niveaux d'abstraction différents. Cela va de la logique de jeu de bas niveau à l'administration de niveau supérieur de jeux Nethack répétés, et enfin à la liaison de ces jeux à l'environnement Python gym
.
Si vous souhaitez en savoir plus sur l'architecture de nle
et son fonctionnement sous le capot, consultez le document d'architecture. Cela peut être un point de départ utile pour quiconque cherche à contribuer aux éléments de niveau inférieur de NLE.
Tim & Heiner de Facebook AI Research sur la démocratisation de la recherche sur l'apprentissage par renforcement.
Si vous utilisez NLE dans l’un de vos travaux, veuillez citer :
@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 vous utilisez NLD ou les ensembles de données dans l'un de vos travaux, veuillez citer :
@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}
}