사용 가능한 레이아웃 중 5개. 새로운 레이아웃은 쉽게 하드코딩하거나 프로그래밍 방식으로 생성할 수 있습니다.
Overcooked-AI는 매우 인기 있는 비디오 게임 Overcooked를 기반으로 한 인간-AI 작업 수행의 완전 협력을 위한 벤치마크 환경입니다.
게임의 목표는 가능한 한 빨리 수프를 배달하는 것입니다. 각 수프는 냄비에 최대 3가지 재료를 넣고 수프가 익을 때까지 기다린 다음 대리인이 수프를 집어 배달하도록 해야 합니다. 에이전트는 높은 보상을 얻기 위해 즉석에서 작업을 분할하고 효과적으로 조정해야 합니다.
여기에서 게임을 시험해 볼 수 있습니다(이전에 교육을 받은 일부 DRL 에이전트와 함께 플레이). 이 인터페이스를 사용하여 훈련된 에이전트와 함께 플레이하거나 더 많은 인간-AI 또는 인간-인간 데이터를 수집하려면 여기에서 코드를 사용할 수 있습니다. 여기에서 이미 수집된 인간-인간 및 인간-AI 게임플레이 데이터를 찾을 수 있습니다.
해당 환경과 호환되는 DRL 구현은 src/human_aware_rl 아래 하위 모듈로 저장소에 포함되어 있습니다.
이전 human_aware_rl은 더 이상 사용되지 않으며 2019년 논문: 인간-AI 조정을 위한 인간 학습의 유틸리티에 대한 결과를 재현하는 데에만 사용해야 합니다(블로그 게시물도 참조).
환경을 간단하게 사용하려면 이 환경 래퍼를 사용하는 것이 좋습니다.
pip를 사용하여 미리 컴파일된 휠 파일을 설치할 수 있습니다.
pip install overcooked-ai
PyPI 릴리스는 안정적이지만 자주 출시되지 않습니다. 최신 개발 기능을 사용하려면 pip install -e .
.
Python 3.7로 conda 환경을 설정하는 것이 유용합니다(virtualenv도 작동함).
conda create -n overcooked_ai python=3.7
conda activate overcooked_ai
저장소 복제
git clone https://github.com/HumanCompatibleAI/overcooked_ai.git
마지막으로 Python setup-tools를 사용하여 로컬로 설치합니다.
환경만 사용하려는 경우:
pip install -e .
DRL 구현도 필요한 경우(이를 터미널에 pip install -e '.[harl]'
로 입력해야 할 수도 있음):
pip install -e .[harl]
소스에서 빌드할 때 Overcooked 단위 테스트 모음을 실행하여 설치를 확인할 수 있습니다. 다음 명령은 모두 overcooked_ai
프로젝트 루트 디렉터리에서 실행되어야 합니다.
python testing/overcooked_test.py
humam_aware_rl
이 올바르게 설치되었는지 확인하려면 src/human_aware_rl
디렉터리에서 다음 명령을 실행할 수 있습니다.
$ ./run_tests.sh
그러면 human_aware_rl 모듈에 속하는 모든 테스트가 실행됩니다. 타겟별 테스트 실행에 대한 지침은 하위 모듈의 README에서 확인할 수 있습니다. 이는 모든 디렉터리에서 시작할 수 있습니다.
계획 코드를 광범위하게 사용할 생각이라면 모든 Overcooked 액세서리 도구를 확인하는 전체 테스트 모음을 실행해야 합니다(5~10분 정도 소요될 수 있음).
python -m unittest discover -s testing/ -p "*_test.py"
overcooked_ai_py
에는 다음이 포함됩니다.
mdp/
:
overcooked_mdp.py
: 메인 Overcooked 게임 로직overcooked_env.py
: Overcooked mdp 위에 구축된 환경 클래스layout_generator.py
: 프로그래밍 방식으로 임의의 레이아웃을 생성하는 함수 agents/
:
agent.py
: 에이전트 클래스의 위치benchmarking.py
: 에이전트(훈련자와 기획자 모두)의 궤적을 샘플링하고 다양한 모델을 로드합니다. planning/
:
planners.py
: 최적에 가까운 에이전트 계획 로직search.py
: A* 검색 및 최단 경로 논리 human_aware_rl
에는 다음이 포함됩니다.
ppo/
:
ppo_rllib.py
: PPO 에이전트 교육용 코드가 있는 기본 모듈입니다. 여기에는 OvercookedEnv
의 rllib 호환 래퍼, rllib Policy
클래스를 Overcooked Agent
로 변환하는 유틸리티, 유틸리티 함수 및 콜백이 포함됩니다.ppo_rllib_client.py
에이전트 교육을 구성하고 시작하기 위한 드라이버 코드입니다. 자세한 사용법은 아래에서 확인하세요ppo_rllib_from_params_client.py
: 변수 MDP를 사용하여 Overcooked에서 PPO로 에이전트 하나를 훈련합니다.ppo_rllib_test.py
로컬 온전성 검사를 위한 재현성 테스트run_experiments.sh
5가지 기본 레이아웃에 대한 에이전트 교육용 스크립트trained_example/
테스트 목적으로 사전 훈련된 모델 rllib/
:
rllib.py
: Overcooked API를 활용하는 rllib 에이전트 및 교육 유틸리티utils.py
: 위의 유틸리티tests.py
: 위 내용에 대한 예비 테스트 imitation/
:
behavior_cloning_tf2.py
: BC 모델 학습, 저장 및 로드를 위한 모듈behavior_cloning_tf2_test.py
: 기본 재현성 테스트와 bc 모듈의 다양한 구성 요소에 대한 단위 테스트가 포함되어 있습니다. human/
:
process_data.py
스크립트data_processing_utils.py
유틸리티 utils.py
: 저장소용 유틸리티
overcooked_demo
에는 다음이 포함됩니다.
server/
:
app.py
: Flask 앱game.py
: 게임의 주요 로직입니다. 상태 전환은 게임 환경에 포함된 overcooked.Gridworld 개체에 의해 처리됩니다.move_agents.py
: 에이전트 디렉터리에 체크포인트 복사를 단순화하는 스크립트입니다. 사용 방법에 대한 지침은 파일 내부에서 확인하거나 python move_agents.py -h
실행하여 확인할 수 있습니다. up.sh
: 게임을 호스팅하는 Docker 서버를 가동하는 쉘 스크립트
Python에서 궤적을 시각화하기 위한 몇 가지 샘플 코드는 Google Colab을 참조하세요.
에이전트 교육, 로드 및 평가 과정을 사용자에게 안내하는 노트북을 통합했습니다. 이상적으로는 사용자가 Google Colab에서 노트북을 실행할 수 있도록 하고 싶습니다. 그러나 Colab의 기본 커널은 Python 3.10이고 저장소는 Python 3.7에 최적화되어 있기 때문에 일부 기능은 현재 Colab과 호환되지 않습니다. 원활한 환경을 제공하기 위해 노트북의 모든 셀을 미리 실행하여 적절한 설정에 따라 로컬로 실행할 때 예상되는 출력을 볼 수 있도록 했습니다.
Overcooked_demo는 시각화를 위해 브라우저에서 대화형 게임을 시작할 수도 있습니다. 자세한 내용은 README에서 확인할 수 있습니다.
훈련에 사용되는 원시 데이터는 100MB보다 커서 git을 통해 배포하기가 불편합니다. 코드는 학습 및 테스트를 위해 피클된 데이터프레임을 사용하지만 원본 데이터가 필요한 경우 여기에서 찾을 수 있습니다.
문제나 질문이 있는 경우 [email protected]로 Micah Carroll에게 문의할 수 있습니다.