| ❗ Berita |
|---|
| Maret 2023 ⚓Kami senang mengumumkan bahwa pembaruan besar baru saja dirilis. Untuk informasi versi terperinci, silakan merujuk ke info versi. |
| Mei 2023 Berita Menyenangkan! Marllib sekarang mendukung lima tugas lagi: Mate, Gobigger, Overcooked-Ai, Mapdn, dan Aircombat. Cobalah mereka! |
| Juni 2023 Openai: Hide and Seek dan lingkungan SISL dimasukkan ke dalam Marllib. |
| Agustus 2023 ? Marllib telah diterima untuk publikasi di JMLR. |
| September 2023 Pettingzoo terbaru dengan gimnasium dapat dikompatibel di dalam Marllib. |
| November 2023 Kami saat ini sedang dalam proses membuat buku Marl langsung dan bertujuan untuk merilis draft pada akhir 2023. |
Perpustakaan Pembelajaran Penguatan Multi-Agen (Marllib) adalah perpustakaan marl yang menggunakan Ray dan salah satu toolkitnya Rllib . Ini menawarkan platform yang komprehensif untuk mengembangkan, melatih, dan menguji algoritma Marl di berbagai tugas dan lingkungan.
Berikut adalah contoh bagaimana Marllib dapat digunakan:
from marllib import marl
# prepare env
env = marl . make_env ( environment_name = "mpe" , map_name = "simple_spread" , force_coop = True )
# initialize algorithm with appointed hyper-parameters
mappo = marl . algos . mappo ( hyperparam_source = 'mpe' )
# build agent model based on env + algorithms + user preference
model = marl . build_model ( env , mappo , { "core_arch" : "mlp" , "encode_layer" : "128-256" })
# start training
mappo . fit ( env , model , stop = { 'timesteps_total' : 1000000 }, share_policy = 'group' )Di sini kami menyediakan tabel untuk perbandingan Marllib dan pekerjaan yang ada.
| Perpustakaan | Env yang didukung | Algoritma | Berbagi parameter | Model |
|---|---|---|---|---|
| Pymarl | 1 koperasi | 5 | membagikan | Gru |
| Pymarl2 | 2 Koperasi | 11 | membagikan | MLP + Gru |
| Benchmark Mappo | 4 koperasi | 1 | Bagikan + terpisah | MLP + Gru |
| Malib | 4 mandiri | 10 | Bagikan + grup + terpisah | MLP + LSTM |
| Epymarl | 4 koperasi | 9 | Bagikan + terpisah | Gru |
| Harl | 8 koperasi | 9 | Bagikan + terpisah | MLP + CNN + Gru |
| Marllib | 17 Tidak ada batasan mode tugas | 18 | Bagikan + grup + terpisah + disesuaikan | MLP + CNN + GRU + LSTM |
| Perpustakaan | Bintang GitHub | Dokumentasi | Masalah terbuka | Aktivitas | Pembaruan terakhir |
|---|---|---|---|---|---|
| Pymarl | |||||
| Pymarl2 | |||||
| Benchmark Mappo | |||||
| Malib | |||||
| Epymarl | |||||
| Harl * | |||||
| Marllib |
* Harl adalah perpustakaan Marl terbaru yang baru -baru ini dirilis: Fire:. Jika algoritma marl mutakhir dengan kinerja canggih adalah target Anda, Harl pasti patut dilihat!
? Marllib menawarkan beberapa fitur utama yang membuatnya menonjol:
Menggunakan Marllib, Anda dapat memanfaatkan berbagai manfaat, seperti:
Catatan : Harap dicatat bahwa saat ini, Marllib hanya kompatibel dengan sistem operasi Linux.
Pertama, instal dependensi Marllib untuk menjamin penggunaan dasar. Mengikuti panduan ini, akhirnya instal tambalan untuk rllib.
$ conda create -n marllib python=3.8 # or 3.9
$ conda activate marllib
$ git clone https://github.com/Replicable-MARL/MARLlib.git && cd MARLlib
$ pip install -r requirements.txtSilakan ikuti panduan ini.
Catatan : Kami merekomendasikan versi gym sekitar 0,20.0.
pip install " gym==0.20.0 " Perbaiki bug rllib menggunakan tambalan dengan menjalankan perintah berikut:
$ cd /Path/To/MARLlib/marllib/patch
$ python add_patch.py -y$ pip install --upgrade pip
$ pip install marllib Kami menyediakan DockerFile untuk membangun gambar Marllib Docker di MARLlib/docker/Dockerfile dan pengaturan DevContainer di folder MARLlib/.devcontainer . Jika Anda menggunakan DevContainer, satu hal yang perlu diperhatikan adalah bahwa Anda mungkin perlu menyesuaikan argumen tertentu di runArgs dari devcontainer.json sesuai dengan perangkat keras Anda, misalnya argumen --shm-size .
Ada empat bagian konfigurasi yang bertanggung jawab atas seluruh proses pelatihan.

Sebelum pelatihan, pastikan semua parameter diatur dengan benar, terutama yang tidak ingin Anda ubah.
Catatan : Anda juga dapat memodifikasi semua parameter yang telah ditetapkan sebelumnya melalui Marllib API.*
Pastikan semua dependensi dipasang untuk lingkungan yang Anda jalankan. Jika tidak, silakan merujuk ke dokumentasi Marllib.
| mode tugas | Contoh API |
|---|---|
| koperasi | marl.make_env(environment_name="mpe", map_name="simple_spread", force_coop=True) |
| kolaboratif | marl.make_env(environment_name="mpe", map_name="simple_spread") |
| kompetitif | marl.make_env(environment_name="mpe", map_name="simple_adversary") |
| campur aduk | marl.make_env(environment_name="mpe", map_name="simple_crypto") |
Sebagian besar lingkungan populer dalam penelitian Marl didukung oleh Marllib:
| Nama Env | Mode Pembelajaran | Kemampuan observasi | Ruang aksi | Pengamatan |
|---|---|---|---|---|
| Lbf | Koperasi + Kolaboratif | Keduanya | Diskrit | 1d |
| Rware | koperasi | Sebagian | Diskrit | 1d |
| Mpe | Kooperatif + Kolaboratif + Campuran | Keduanya | Keduanya | 1d |
| Sisl | Koperasi + Kolaboratif | Penuh | Keduanya | 1d |
| Smac | koperasi | Sebagian | Diskrit | 1d |
| Metadrive | kolaboratif | Sebagian | Kontinu | 1d |
| Magent | kolaboratif + campuran | Sebagian | Diskrit | 2d |
| Pommerman | kolaboratif + kompetitif + campuran | Keduanya | Diskrit | 2d |
| Mamujoco | koperasi | Penuh | Kontinu | 1d |
| Grf | kolaboratif + campuran | Penuh | Diskrit | 2d |
| Hanabi | koperasi | Sebagian | Diskrit | 1d |
| PASANGAN | Koperasi + Campuran | Sebagian | Keduanya | 1d |
| Gobigger | Koperasi + Campuran | Keduanya | Kontinu | 1d |
| Overcooked-Ai | koperasi | Penuh | Diskrit | 1d |
| PDN | koperasi | Sebagian | Kontinu | 1d |
| Aircombat | Koperasi + Campuran | Sebagian | Multidiskrete | 1d |
| Hideandseek | kompetitif + campuran | Sebagian | Multidiskrete | 1d |
Setiap lingkungan memiliki file readme, berdiri sebagai instruksi untuk tugas ini, termasuk pengaturan Env, instalasi, dan catatan penting.
| Menjalankan target | Contoh API |
|---|---|
| Kereta & Finetune | marl.algos.mappo(hyperparam_source=$ENV) |
| Kembangkan & debug | marl.algos.mappo(hyperparam_source="test") |
| Pihak ke -3 Env | marl.algos.mappo(hyperparam_source="common") |
Berikut adalah bagan yang menggambarkan karakteristik setiap algoritma:
| algoritma | Mode Tugas Mendukung | tindakan diskrit | tindakan berkelanjutan | Jenis Kebijakan |
|---|---|---|---|---|
| IQL * | keempatnya | ✔️ | off-policy | |
| Hal | keempatnya | ✔️ | ✔️ | On-policy |
| A2C | keempatnya | ✔️ | ✔️ | On-policy |
| Ddpg | keempatnya | ✔️ | off-policy | |
| Trpo | keempatnya | ✔️ | ✔️ | On-policy |
| PPO | keempatnya | ✔️ | ✔️ | On-policy |
| KOMA | keempatnya | ✔️ | On-policy | |
| Maddpg | keempatnya | ✔️ | off-policy | |
| Maa2c * | keempatnya | ✔️ | ✔️ | On-policy |
| Matrpo * | keempatnya | ✔️ | ✔️ | On-policy |
| Mappo | keempatnya | ✔️ | ✔️ | On-policy |
| Hatrpo | koperasi | ✔️ | ✔️ | On-policy |
| Happo | koperasi | ✔️ | ✔️ | On-policy |
| Vdn | koperasi | ✔️ | off-policy | |
| Qmix | koperasi | ✔️ | off-policy | |
| Facmac | koperasi | ✔️ | off-policy | |
| VDAC | koperasi | ✔️ | ✔️ | On-policy |
| Vdppo * | koperasi | ✔️ | ✔️ | On-policy |
* Keempat : Kooperatif Komporatif Kompetitif Campuran
IQL adalah versi multi-agen dari Q Learning. MAA2C dan Matrpo adalah versi terpusat dari A2C dan TRPO. VDPPO adalah versi dekomposisi nilai PPO.
Model agen terdiri dari dua bagian, encoder dan core arch . encoder akan dibangun oleh Marllib sesuai dengan ruang pengamatan. Pilih mlp , gru , atau lstm karena Anda ingin membangun model lengkap.
| Model Arch | Contoh API |
|---|---|
| MLP | marl.build_model(env, algo, {"core_arch": "mlp") |
| Gru | marl.build_model(env, algo, {"core_arch": "gru"}) |
| LSTM | marl.build_model(env, algo, {"core_arch": "lstm"}) |
| Arch encoder | marl.build_model(env, algo, {"core_arch": "gru", "encode_layer": "128-256"}) |
| pengaturan | Contoh API |
|---|---|
| kereta | algo.fit(env, model) |
| debug | algo.fit(env, model, local_mode=True) |
| Kondisi berhenti | algo.fit(env, model, stop={'episode_reward_mean': 2000, 'timesteps_total': 10000000}) |
| Berbagi Kebijakan | algo.fit(env, model, share_policy='all') # or 'group' / 'individual' |
| Simpan model | algo.fit(env, model, checkpoint_freq=100, checkpoint_end=True) |
| GPU mempercepat | algo.fit(env, model, local_mode=False, num_gpus=1) |
| CPU mempercepat | algo.fit(env, model, local_mode=False, num_workers=5) |
from marllib import marl
# prepare env
env = marl . make_env ( environment_name = "smac" , map_name = "5m_vs_6m" )
# initialize algorithm with appointed hyper-parameters
mappo = marl . algos . mappo ( hyperparam_source = "smac" )
# build agent model based on env + algorithms + user preference
model = marl . build_model ( env , mappo , { "core_arch" : "gru" , "encode_layer" : "128-256" })
# start training
mappo . fit (
env , model ,
stop = { "timesteps_total" : 1000000 },
checkpoint_freq = 100 ,
share_policy = "group"
)
# rendering
mappo . render (
env , model ,
local_mode = True ,
restore_path = { 'params_path' : "checkpoint/params.json" ,
'model_path' : "checkpoint/checkpoint-10" }
)Di bawah direktori kerja saat ini, Anda dapat menemukan semua data pelatihan (file logging dan tensorflow) serta model yang disimpan. Untuk memvisualisasikan kurva belajar, Anda dapat menggunakan papan tensor. Ikuti langkah -langkah di bawah ini:
pip install tensorboardtensorboard --logdir .Atau, Anda dapat merujuk pada tutorial ini untuk instruksi yang lebih rinci.
Untuk daftar semua hasil yang ada, Anda dapat mengunjungi tautan ini. Harap dicatat bahwa hasil ini diperoleh dari versi Marllib yang lebih lama, yang dapat menyebabkan ketidakkonsistenan jika dibandingkan dengan hasil saat ini.
Marllib memberikan beberapa contoh praktis untuk Anda rujuk.
ray.tune . Coba MPE + Contoh Mappo di Google Colaboratory! Dokumentasi tutorial lebih banyak tersedia di sini.
Kumpulan Makalah Penelitian dan Tinjauan Multi-Agen Penguatan Pembelajaran (MARL) tersedia. Makalah telah diatur berdasarkan tanggal publikasi mereka dan evaluasi mereka terhadap lingkungan yang sesuai.
Algoritma: Lingkungan:
| Saluran | Link |
|---|---|
| Masalah | Masalah GitHub |
Roadmap to the Future Rilis tersedia di Roadmap.md.
Kami adalah tim kecil dalam pembelajaran penguatan multi-agen, dan kami akan mengambil semua bantuan yang bisa kami dapatkan! Jika Anda ingin terlibat, berikut adalah informasi tentang pedoman kontribusi dan cara menguji kode secara lokal.
Anda dapat berkontribusi dalam berbagai cara, misalnya, melaporkan bug, menulis atau menerjemahkan dokumentasi, meninjau atau refactoring kode, meminta atau mengimplementasikan fitur baru, dll.
Jika Anda menggunakan Marllib dalam penelitian Anda, silakan kutip kertas Marllib.
@article{hu2022marllib,
author = {Siyi Hu and Yifan Zhong and Minquan Gao and Weixun Wang and Hao Dong and Xiaodan Liang and Zhihui Li and Xiaojun Chang and Yaodong Yang},
title = {MARLlib: A Scalable and Efficient Multi-agent Reinforcement Learning Library},
journal = {Journal of Machine Learning Research},
year = {2023},
}Pekerjaan yang didasarkan pada atau berkolaborasi erat dengan Marllib <link>
@InProceedings{hu2022policy,
title={Policy Diagnosis via Measuring Role Diversity in Cooperative Multi-agent {RL}},
author={Hu, Siyi and Xie, Chuanlong and Liang, Xiaodan and Chang, Xiaojun},
booktitle={Proceedings of the 39th International Conference on Machine Learning},
year={2022},
}
@misc{zhong2023heterogeneousagent,
title={Heterogeneous-Agent Reinforcement Learning},
author={Yifan Zhong and Jakub Grudzien Kuba and Siyi Hu and Jiaming Ji and Yaodong Yang},
archivePrefix={arXiv},
year={2023},
}