github.com/heiner/nle의 새 홈에서 NLE를 찾아보세요.
NLE(NetHack 학습 환경)는 NeurIPS 2020에서 발표된 강화 학습 환경입니다. NLE는 NetHack 3.6.6을 기반으로 하며 게임에 표준 RL 인터페이스를 제공하도록 설계되었으며 에이전트를 평가하는 첫 번째 단계로 기능하는 작업이 함께 제공됩니다. 이 새로운 환경에서.
NetHack은 역사상 가장 오래되고 가장 영향력 있는 비디오 게임 중 하나일 뿐만 아니라 현재 인간이 플레이하는 가장 어려운 로그라이크 게임 중 하나입니다. 이는 절차적으로 생성되고 엔터티와 역학이 풍부하며 전반적으로 현재 최첨단 RL 에이전트에 대한 매우 어려운 환경인 동시에 다른 까다로운 테스트베드에 비해 실행 비용이 훨씬 저렴합니다. NLE를 통해 우리는 NetHack을 의사 결정 및 기계 학습 연구의 다음 과제 중 하나로 확립하고자 합니다.
NeurIPS 2020 논문에서 NLE에 대한 자세한 내용을 읽을 수 있고, NetHack에 대한 자세한 내용은 원래 README, nethack.org 및 NetHack wiki에서 읽을 수 있습니다.
NetHack 작업의 비언어적 관찰을 유사한 언어 표현으로 변환하는 NLE Language Wrapper를 구현한 ngoodger에게 감사드립니다. 작업은 선택적으로 NLE의 개별 작업으로 변환되는 텍스트 형식으로 제공될 수도 있습니다.
이제 NLD(NetHack Learning Dataset) 코드가 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 노트북을 확인하세요.
논문을 추가하려면 끌어오기 요청을 엽니다.
다른 체육관/RL 환경에 익숙하다면 NLE 환경을 시작하는 것은 매우 간단합니다.
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의 Tim & Heiner.
귀하의 작업에 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},
}
귀하의 작업에서 NLD 또는 데이터 세트를 사용하는 경우 다음을 인용하십시오.
@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}
}