5 dari tata letak yang tersedia. Tata letak baru mudah untuk di-hardcode atau dibuat secara terprogram.
Overcooked-AI adalah lingkungan tolok ukur untuk kinerja tugas manusia-AI yang sepenuhnya kooperatif, berdasarkan video game Overcooked yang sangat populer.
Tujuan permainan ini adalah mengantarkan sup secepat mungkin. Setiap sup memerlukan penempatan hingga 3 bahan ke dalam panci, menunggu sup matang, lalu meminta agen mengambil sup dan mengirimkannya. Agen harus membagi tugas dengan cepat dan berkoordinasi secara efektif untuk mencapai imbalan yang tinggi.
Anda dapat mencoba permainannya di sini (bermain dengan beberapa agen DRL yang telah dilatih sebelumnya). Untuk bermain dengan agen terlatih Anda menggunakan antarmuka ini, atau untuk mengumpulkan lebih banyak data manusia-AI atau manusia-manusia, Anda dapat menggunakan kode di sini. Anda dapat menemukan beberapa data gameplay manusia-manusia dan manusia-AI yang telah dikumpulkan di sini.
Implementasi DRL yang kompatibel dengan lingkungan disertakan dalam repo sebagai submodul di bawah src/human_aware_rl.
human_aware_rl yang lama tidak digunakan lagi dan hanya boleh digunakan untuk mereproduksi hasil dalam makalah tahun 2019: Tentang Utilitas Pembelajaran Manusia untuk Koordinasi Manusia-AI (lihat juga postingan blog kami).
Untuk penggunaan lingkungan yang sederhana, ada baiknya mempertimbangkan untuk menggunakan pembungkus lingkungan ini.
Anda dapat menginstal file roda yang telah dikompilasi sebelumnya menggunakan pip.
pip install overcooked-ai
Perhatikan bahwa rilis PyPI stabil tetapi jarang terjadi. Untuk fitur pengembangan terkini, buat dari sumber dengan pip install -e .
.
Berguna untuk menyiapkan lingkungan conda dengan Python 3.7 (virtualenv juga berfungsi):
conda create -n overcooked_ai python=3.7
conda activate overcooked_ai
Kloning reponya
git clone https://github.com/HumanCompatibleAI/overcooked_ai.git
Terakhir, gunakan alat pengaturan python untuk menginstal secara lokal
Jika Anda hanya ingin menggunakan lingkungan:
pip install -e .
Jika Anda juga memerlukan implementasi DRL (Anda mungkin harus memasukkannya ke terminal Anda sebagai pip install -e '.[harl]'
):
pip install -e .[harl]
Saat membangun dari sumber, Anda dapat memverifikasi instalasi dengan menjalankan rangkaian pengujian unit Overcooked. Semua perintah berikut harus dijalankan dari direktori root proyek overcooked_ai
:
python testing/overcooked_test.py
Untuk memeriksa apakah humam_aware_rl
sudah terinstal dengan benar, Anda dapat menjalankan perintah berikut dari direktori src/human_aware_rl
:
$ ./run_tests.sh
Ini akan menjalankan semua tes milik modul human_aware_rl. Anda dapat memeriksa README di submodul untuk mendapatkan instruksi menjalankan pengujian spesifik target. Ini dapat dimulai dari direktori mana pun.
Jika Anda berpikir untuk menggunakan kode perencanaan secara ekstensif, Anda harus menjalankan rangkaian pengujian lengkap yang memverifikasi semua alat aksesori yang terlalu matang (ini dapat memakan waktu 5-10 menit):
python -m unittest discover -s testing/ -p "*_test.py"
overcooked_ai_py
berisi:
mdp/
:
overcooked_mdp.py
: logika permainan utama yang terlalu matangovercooked_env.py
: kelas lingkungan yang dibangun di atas mdp Overcookedlayout_generator.py
: berfungsi untuk menghasilkan layout acak secara terprogram agents/
:
agent.py
: lokasi kelas agenbenchmarking.py
: contoh lintasan agen (baik yang terlatih maupun perencana) dan memuat berbagai model planning/
:
planners.py
: logika perencanaan agen yang hampir optimalsearch.py
: Pencarian A* dan logika jalur terpendek human_aware_rl
berisi:
ppo/
:
ppo_rllib.py
: Modul utama tempat kode untuk melatih agen PPO berada. Ini termasuk pembungkus yang kompatibel dengan rllib pada OvercookedEnv
, utilitas untuk mengonversi kelas Policy
rllib menjadi Overcooked Agent
, serta fungsi utilitas dan panggilan balikppo_rllib_client.py
Kode driver untuk mengonfigurasi dan meluncurkan pelatihan agen. Lebih detail tentang penggunaan di bawah inippo_rllib_from_params_client.py
: latih satu agen dengan PPO di Overcooked dengan variabel-MDPppo_rllib_test.py
Uji reproduktifitas untuk pemeriksaan kewarasan lokalrun_experiments.sh
Skrip untuk agen pelatihan pada 5 tata letak klasiktrained_example/
Model yang telah dilatih sebelumnya untuk tujuan pengujian rllib/
:
rllib.py
: agen rllib dan utilitas pelatihan yang menggunakan API yang terlalu matangutils.py
: utils untuk hal di atastests.py
: tes pendahuluan untuk hal di atas imitation/
:
behavior_cloning_tf2.py
: Modul untuk melatih, menyimpan, dan memuat model BCbehavior_cloning_tf2_test.py
: Berisi pengujian reproduktifitas dasar serta pengujian unit untuk berbagai komponen modul bc. human/
:
process_data.py
untuk memproses data manusia dalam format tertentu untuk digunakan oleh algoritma DRLdata_processing_utils.py
utils untuk hal di atas utils.py
: utils untuk repo
overcooked_demo
berisi:
server/
:
app.py
: Aplikasi Flaskgame.py
: Logika utama permainan. Transisi keadaan ditangani oleh objek overcooked.Gridworld yang tertanam di lingkungan gamemove_agents.py
: Skrip yang menyederhanakan penyalinan pos pemeriksaan ke direktori agen. Instruksi cara penggunaan dapat ditemukan di dalam file atau dengan menjalankan python move_agents.py -h
up.sh
: Skrip shell untuk menjalankan server Docker yang menjadi host game
Lihat Google Colab ini untuk beberapa contoh kode untuk memvisualisasikan lintasan dengan python.
Kami telah memasukkan buku catatan yang memandu pengguna dalam proses pelatihan, pemuatan, dan evaluasi agen. Idealnya, kami ingin memungkinkan pengguna menjalankan notebook di Google Colab; namun, karena kernel default Colab adalah Python 3.10 dan repositori kami dioptimalkan untuk Python 3.7, beberapa fungsi saat ini tidak kompatibel dengan Colab. Untuk memberikan pengalaman yang lancar, kami telah mengeksekusi semua sel di notebook terlebih dahulu, sehingga Anda dapat melihat output yang diharapkan saat menjalankannya secara lokal dengan mengikuti pengaturan yang sesuai.
Overcooked_demo juga dapat memulai permainan interaktif di browser untuk visualisasi. Detailnya dapat ditemukan di README-nya
Data mentah yang digunakan dalam pelatihan berukuran >100 MB, sehingga tidak nyaman untuk didistribusikan melalui git. Kode ini menggunakan kerangka data yang diasamkan untuk pelatihan dan pengujian, tetapi jika diperlukan data asli, kode tersebut dapat ditemukan di sini
Jika Anda memiliki masalah atau pertanyaan, Anda dapat menghubungi Micah Carroll di [email protected].