Avalon
요약
Avalon은 강화학습(RL) 연구를 위해 설계된 3D 비디오 게임 환경이자 벤치마크입니다. 이 환경은 절차적으로 생성된 3D 월드에서 에이전트가 생존 과제(사냥, 채집 등)를 해결하도록 합니다. Avalon의 특징은 보상 함수와 액션 공간을 통일하고 환경 변경만으로 다양한 과제를 구성하여 일반화 및 구성적 학습 연구에 최적화되었다는 점입니다.
핵심 포인트
- RL 연구 전용 3D 게임 환경이자 벤치마크 제공
- 환경 변화를 통해 다양한 생존 과제(20개) 구현 가능
- 일반화, 과제 간 일반화 등 심층 RL 연구에 적합
- 오픈 소스로 공개되었으며 사용이 용이함
Avalon
Avalon이란?
Avalon은 강화학습(RL) 연구를 위해 처음부터 설계된 3D 비디오 게임 환경이자 벤치마크입니다. Avalon에서 체화된 에이전트(인간 또는 컴퓨터)는 절차적으로 생성된 3D 환경을 탐색하며, 지형 이동, 사냥 또는 식량 채집, 위험 회피 등과 관련된 과제를 해결하려고 시도합니다.
Avalon은 기존 RL 벤치마크들과 비교했을 때 독특한 점이 있습니다. 바로 보상 함수(reward function), 월드 역학(world dynamics), 액션 공간(action space)이 모든 과제에 동일하게 적용되며, 오직 환경을 변경함으로써 과제가 차별화된다는 것입니다. 이 20개의 과제들은 '먹기 및 던지기'부터 '사냥 및 이동하기'까지 복잡도에 걸쳐 다양하며, 각 과제마다 에이전트가 생존하기 위해 특정 기술을 수행해야 하는 세계를 만듭니다. 이러한 설정은 과제 내에서의 일반화(generalization), 과제 간의 일반화, 그리고 이전 과제에서 학습된 기술들을 결합해야 하는 구성적 과제(compositional tasks)에 대한 조사를 가능하게 합니다.
Avalon에는 매우 효율적인 게임 엔진, 베이스라인 라이브러리, 그리고 수백 시간에 달하는 인간 성능을 기준으로 평가된 스코어링 메트릭을 갖춘 벤치마크가 포함되어 있으며, 이 모든 것이 오픈 소스이며 공개적으로 이용 가능합니다. 게다가 우리는 표준 RL 베이스라인들이 대부분의 과제에서 진전하지만 여전히 인간 성능과는 거리가 멀다는 것을 발견했습니다. 이는 Avalon이 일반화 가능한 RL 연구를 발전시키기에 충분히 도전적인 환경임을 시사합니다.
Avalon을 왜 구축했는지에 대한 더 깊은 설명은 저희 연구 논문을 확인해 주세요.
빠른 시작(Quickstart)
다른 모든 gym 환경처럼 Avalon을 사용하세요.
from avalon.agent.godot.godot_gym import GodotEnvironmentParams
from avalon.agent.godot.godot_gym import TrainingProtocolChoice
from avalon.agent.godot.godot_gym import AvalonEnv
...

랜덤 월드 생성, 에이전트로서 액션 취하기, 그리고 결과 관찰값(observations) 표시의 전체 예시는 gym_interface_example를 참조하세요.
설치 (Installing)
Avalon을 고성능 강화학습 (RL) 환경으로 설계했기 때문에, NVIDIA GPU가 장착된 헤드리스 Linux 서버에서 클라우드 구동에 맞게 Avalon을 최적화했습니다. 하지만 macOS에서도 작동해야 합니다.
Avalon은 헤드리스 렌더링 및 성능에 최적화된 커스텀 Godot 바이너리에 의존합니다. 만약 커스텀 레벨을 검사, 디버깅 또는 빌드할 계획이라면, 함께 제공되는 에디터도 필요합니다:
pip install avalon-rl==1.0.0
# 환경 실행에 필요
...
참고: 바이너리는 시스템을 복잡하게 만들지 않기 위해 기본적으로 패키지의
avalon/bin/godot경로에 설치됩니다.
순수 pip 바이너리 패키징은 현재 작업 중입니다.
Ubuntu
Avalon은 헤드리스 GPU 렌더링을 위해 Linux 빌드를 설정했기 때문에 NVIDIA GPU가 필요합니다. 또한 CUDA와 함께 pytorch>=1.12.0이 설치되어야 합니다.
sudo apt install --no-install-recommends libegl-dev libglew-dev libglfw3-dev libnvidia-gl libopengl-dev libosmesa6 mesa-utils-extra
pip install avalon-rl
python -m avalon.install_godot_binary
...
만약 저희의 RL 코드를 사용하려는 경우, 추가적으로 avalon-rl[train] 확장 패키지(pip install avalon-rl[train])가 필요합니다.
Mac
Mac에서는 NVIDIA GPU가 필수는 아니지만, 환경 렌더링이 헤드리스는 아닙니다. 열어둔 각 환경마다 godot 창이 나타날 것입니다.
brew install coreutils
pip install avalon-rl
python -m avalon.install_godot_binary
...
Docker
Avalon을 실행하고 RL 베이스라인을 학습시키기 위한 Docker 이미지도 제공합니다. 이들은 호스트에 NVIDIA GPU가 필요합니다.
학습(Training) 이미지
docker build -f ./docker/Dockerfile . --target train --tag=avalon/train
# 대화형 bash 터미널로 컨테이너 시작
...
개발(Dev) 이미지
dev 이미지를 사용하면 번들된 노트북을 탐색하거나 Avalon을 기반으로 빌드할 수 있습니다.
docker build -f ./docker/Dockerfile . --target dev --tag=avalon/dev
# 기본 dev 이미지 명령어는 Jupyter Notebook을 시작하고 8888 포트에서 노출합니다.
...
## 튜토리얼
자체 RL 코드에서 Avalon 사용하기:
- [**OpenAI Gym 인터페이스를 통한 Avalon 사용**](./notebooks/gym_interface_example.sync.ipynb): 임의의 월드를 생성하고, 에이전트로서 행동을 취하며, 그 결과로 발생하는 관측값을 표시하는 예시입니다.
- [**RLlib을 사용하여 Avalon에서 PPO 에이전트 훈련하기**](./notebooks/rllib_tutorial.sync.ipynb): 외부 RL 라이브러리/코드베이스와 함께 Avalon을 사용하는 예시입니다.
- [**테스트 월드 검사하기**](./notebooks/inspecting_test_worlds.sync.ipynb): `env.debug_act` 및 godot 에디터를 사용하여 Avalon 월드를 생성하고 확인하는 방법입니다.
저희 RL 라이브러리 사용하기:
- [**Avalon RL 라이브러리를 사용한 PPO 및 Dreamer 에이전트 훈련**](./docs/avalon_baselines.md): 자체 빠르고 조정된 구현을 사용하여 RL 에이전트를 훈련하세요!
- [**논문에서 나온 RL 결과 재현하기**](./docs/avalon_baselines.md#reproducing-our-paper-results)
Avalon 기반으로 구축하거나 새로운 태스크 만들기:
- [**Avalon 월드 생성 및 검사하기**](./notebooks/create_simple_world.sync.ipynb)
- [**VR에서 Avalon 실행하기**](./docs/running_in_vr.md): Oculus Quest에서 월드를 생성하고 플레이하세요.
- [**Avalon에 사용자 정의 절차적 생성 태스크 추가하기**](./docs/tutorial_add_task/)
- [**Godot을 사용하여 완전히 사용자 지정된 비(非)Avalon RL 환경 만들기**](./docs/tutorial_custom_env)
# 리소스
* [Human scores](https://avalon-benchmark.s3.us-west-2.amazonaws.com/avalon__human_scores__935781fe-267d-4dcd-9698-714cc891e985.json)
* [Human observations](https://avalon-benchmark.s3.us-west-2.amazonaws.com/avalon__all_observations__935781fe-267d-4dcd-9698-714cc891e985.tar.gz)
* [Human normalized actions](https://avalon-benchmark.s3.us-west-2.amazonaws.com/avalon__all_actions__935781fe-267d-4dcd-9698-714cc891e985.tar.gz)
* [Human raw inputs](https://avalon-benchmark.s3.us-west-2.amazonaws.com/avalon__all_human_inputs__935781fe-267d-4dcd-9698-714cc891e985.tar.gz)
* [Evaluation worlds](https://avalon-benchmark.s3.us-west-2.amazonaws.com/avalon_worlds__benchmark_evaluation_worlds.tar.gz)
* [Custom Godot engine build](https://github.com/Avalon-Benchmark/godot/releases/)
최종 기준선 모델 가중치는 [결과 노트북](notebooks/avalon_results.sync.ipynb)에서 확인할 수 있습니다.
## Avalon 인용하기
@inproceedings{avalon,
title={Avalon: A Benchmark for {RL} Generalization Using Procedurally Generated Worlds},
author={Joshua Albrecht and Abraham J Fetterman and Bryden Fogelman and Ellie Kitanidis and Bartosz Wróblewski and Nicole Seo and Michael Rosenthal and Maksis Knutins and Zachary Polizzi and James B Simon and Kanjun Qiu},
...
## 라이선스
- Human rollout dataset: [CC-BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/)
- Godot 엔진의 [수정 사항](https://github.com/Avalon-Benchmark/godot): [MIT](https://opensource.org/licenses/MIT)
- 이 저장소의 모든 코드와 기타 관련 리소스(모델 체크포인트 등): [GPLv3](https://www.gnu.org/licenses/gpl-3.0.en.html)
## Generally Intelligent 소개
Avalon은 Generally Intelligent에서 개발한 것으로, 이 회사는 인간과 같은 지능을 가진 범용 AI 에이전트를 개발하는 독립 연구 회사입니다. 저희의 이러한 에이전트는 실제 세계에 안전하게 배포될 수 있습니다. 더 자세한 정보는 [about](https://generallyintelligent.com/about) 페이지를 확인하시거나, 저희와 함께 일하는 데 관심이 있으시다면 [careers](https://generallyintelligent.com/careers) 페이지를 방문해 주세요!
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub AI Research의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기