Giter Site home page Giter Site logo

maxencefaldor / omni-epic Goto Github PK

View Code? Open in Web Editor NEW
20.0 2.0 1.0 2.06 MB

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

Home Page: https://dub.sh/omniepic

License: GNU General Public License v3.0

Python 92.59% Dockerfile 0.22% Shell 0.27% HTML 0.50% JavaScript 0.06% TypeScript 6.36% CSS 0.01%
open-ended-learning open-endedness

omni-epic's Introduction

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}
}

omni-epic's People

Contributors

maxencefaldor avatar jennyzzt avatar

Stargazers

Gabriel Béna avatar Shengran Hu avatar Yoann Fleytoux avatar Alexey Zemtsov avatar tz ✨ avatar Hany Hamed avatar Matthew Jackson avatar Tokarev Igor avatar Alexander Nikulin avatar Alejandro Dubrovsky avatar Martin Salo avatar Evolutionary-Intelligence avatar  avatar Shyam Sudhakaran avatar Rach avatar abstractee avatar  avatar Tarek avatar Evan avatar  avatar

Watchers

Evan avatar  avatar

Forkers

evdcush

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.