/omni-epic

OMNI-EPIC: Open-endedness via Models of human Notions of Interestingness with Environments Programmed in Code

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

OMNI-EPIC:
Open-endedness via Models of human Notions of Interestingness with Environments Programmed in Code

Repository for Open-endedness via Models of human Notions of Interestingness (OMNI) with Environments Programmed in Code (EPIC), that endlessly create learnable and interesting environments, further propelling the development of self-improving AI systems and AI-Generating Algorithms.


Setup - Apptainer

Step 0: update your environment

Update your .bashrc with

# Add foundation model API keys to your environment
export OPENAI_API_KEY='...'
export ANTHROPIC_API_KEY='...'

# Optionally
export CUDA_VISIBLE_DEVICES=...
export WANDB_API_KEY='...'

Step 1: clone the repository

Clone the repository with git clone https://github.com/maxencefaldor/omni-epic.git.

Step 2: build the container

Go at the root of the cloned repository with cd omni-epic/ and run:

apptainer build \
	--fakeroot \
	--force \
	apptainer/container.sif \
	apptainer/container.def

Step 3: shell into the container

Go at the root of the cloned repository with cd omni-epic/ and run

apptainer shell \
	--bind $(pwd):/workspace/src/ \
	--cleanenv \
	--containall \
	--env "CUDA_VISIBLE_DEVICES=$CUDA_VISIBLE_DEVICES" \
	--env "WANDB_API_KEY=$WANDB_API_KEY" \
	--env "OPENAI_API_KEY=$OPENAI_API_KEY" \
	--env "ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY" \
	--home /tmp/ \
	--no-home \
	--nv \
	--pwd /workspace/src/ \
	--workdir apptainer/ \
	apptainer/container.sif

Running Instructions

Running OMNI-EPIC

python main_omni_epic.py

Human Playable Game

python -m game.backend.app

For prettier frontend, on another terminal

cd game/frontend/
npm i
npm run dev

See more detailed readme for this in game/frontend/README.md

File structure

  • analysis/ scripts used for plotting and analysis
  • apptainer/ for setting up apptainer, easier reproducability
  • configs/ configuration files used in training and analysis
  • dreamerv3/ code for DreamerV3, RL algorithm used to train the agents
  • game/ code for human playable game
  • omni_epic/ code for robots, example environments, and foundation model calls

Citation

If you find this project useful, please consider citing:

@article{faldor2024omni,
	title={OMNI-EPIC: Open-endedness via Models of human Notions of Interestingness with Environments Programmed in Code},
	author={Faldor, Maxence and Zhang, Jenny and Cully, Antoine and Clune, Jeff},
	journal={arXiv preprint arXiv:2405.15568},
	year={2024}
}