| ❗ Новости |
|---|
| Март 2023 г. ⚓ Мы рады сообщить, что только что было выпущено крупное обновление. Для получения подробной информации версии, пожалуйста, обратитесь к информации версии. |
| Май 2023 г. Захватывающие новости! Марллиб теперь поддерживает еще пять задач: Mate, Gobigger, Overcooked-AI, MAPDN и AirCombat. Попробуйте! |
| Июнь 2023 г. Openai: Среда прята и SISL включены в Marllib. |
| Август 2023 г. Марллиб был принят для публикации в JMLR. |
| Сентябрь 2023 г. Последние Pettingzoo с гимназией совместимы в Марллибе. |
| Ноябрь 2023 г. В настоящее время мы находимся в процессе создания практической рыночной книги и стремимся выпустить проект к концу 2023 года. |
Многоагентная библиотека обучения подкрепления (MARLLIB) -это библиотека Marl , в которой используется Ray и один из его инструментов Rllib . Он предлагает комплексную платформу для разработки, обучения и тестирования алгоритмов MALL в различных задачах и средах.
Вот пример того, как можно использовать Марллиб:
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' )Здесь мы предоставляем таблицу для сравнения Марллиба и существующей работы.
| Библиотека | Поддерживается Env | Алгоритм | Распределение параметров | Модель |
|---|---|---|---|---|
| Пимарл | 1 кооператив | 5 | делиться | Гру |
| Pymarl2 | 2 кооператив | 11 | делиться | MLP + Gru |
| Mappo Benchmark | 4 кооператив | 1 | Поделиться + отдельно | MLP + Gru |
| Малиб | 4 самостоятельно | 10 | Поделиться + группа + отдельно | MLP + LSTM |
| Эпимарл | 4 кооператив | 9 | Поделиться + отдельно | Гру |
| Харл | 8 кооператив | 9 | Поделиться + отдельно | MLP + CNN + GRU |
| Марллиб | 17 Нет ограничения в режиме задачи | 18 | Поделиться + группа + отдельная + настраиваемая | MLP + CNN + GRU + LSTM |
| Библиотека | Звезды GitHub | Документация | Проблемы открыты | Активность | Последнее обновление |
|---|---|---|---|---|---|
| Пимарл | |||||
| Pymarl2 | |||||
| Mappo Benchmark | |||||
| Малиб | |||||
| Эпимарл | |||||
| Харл * | |||||
| Марллиб |
* Harl - последняя библиотека Marl, которая была недавно выпущена: Fire:. Если передовые алгоритмы Marl с современной производительности являются вашей целью, Harl определенно стоит посмотреть!
? Марллиб предлагает несколько ключевых функций, которые выделяют его:
Используя Marllib, вы можете воспользоваться различными преимуществами, такими как:
Примечание . Обратите внимание, что в настоящее время Марллиб совместим только с операционными системами Linux.
Во -первых, установите зависимости Marllib, чтобы гарантировать базовое использование. Следуя этому руководству, наконец установите патчи для 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.txtПожалуйста, следуйте этому руководству.
Примечание . Мы рекомендуем тренажерный зал версию около 0,20.0.
pip install " gym==0.20.0 " Исправьте ошибки rllib, используя патчи, выполнив следующую команду:
$ cd /Path/To/MARLlib/marllib/patch
$ python add_patch.py -y$ pip install --upgrade pip
$ pip install marllib Мы предоставляем DockerFile для построения изображения Marllib Docker в MARLlib/docker/Dockerfile и настройку DevContainer в папке MARLlib/.devcontainer . Если вы используете DevContainer, одно можно отметить, что вам может потребоваться настроить определенные аргументы в runArgs of devcontainer.json в соответствии с вашим оборудованием, например, аргумент --shm-size .
Есть четыре части конфигураций, которые берут на себя ответственность за весь процесс обучения.

Перед тренировкой убедитесь, что все параметры установлены правильно, особенно те, которые вы не хотите менять.
Примечание . Вы также можете изменить все предварительные параметры через Marllib API.*
Убедитесь, что все зависимости установлены для среды, в которой вы работаете. В противном случае, пожалуйста, обратитесь к документации Marllib.
| Режим задачи | пример API |
|---|---|
| кооператив | marl.make_env(environment_name="mpe", map_name="simple_spread", force_coop=True) |
| совместный | marl.make_env(environment_name="mpe", map_name="simple_spread") |
| конкурентоспособный | marl.make_env(environment_name="mpe", map_name="simple_adversary") |
| смешанный | marl.make_env(environment_name="mpe", map_name="simple_crypto") |
Большинство популярных сред в исследовании Marl поддерживаются Marllib:
| Env name | Режим обучения | Наблюдаемость | Действие | Наблюдения |
|---|---|---|---|---|
| LBF | Кооператив + совместный | Оба | Дискретный | 1d |
| Rware | кооператив | Частично | Дискретный | 1d |
| Мельница | кооператив + совместный + смешанный | Оба | Оба | 1d |
| Сисл | Кооператив + совместный | Полный | Оба | 1d |
| SMAC | кооператив | Частично | Дискретный | 1d |
| Метадрив | совместный | Частично | Непрерывный | 1d |
| Магнитный | Совместный + смешанный | Частично | Дискретный | 2d |
| Поммерман | Collaborative + конкурентоспособный + смешанный | Оба | Дискретный | 2d |
| Мамухоко | кооператив | Полный | Непрерывный | 1d |
| Гриль | Совместный + смешанный | Полный | Дискретный | 2d |
| Ханаби | кооператив | Частично | Дискретный | 1d |
| ПРИЯТЕЛЬ | Кооператив + смешанный | Частично | Оба | 1d |
| Gobigger | Кооператив + смешанный | Оба | Непрерывный | 1d |
| Overcooked-AI | кооператив | Полный | Дискретный | 1d |
| Pdn | кооператив | Частично | Непрерывный | 1d |
| Aircombat | Кооператив + смешанный | Частично | Многодидрест | 1d |
| Прятки | конкурентоспособный + смешанный | Частично | Многодидрест | 1d |
В каждой среде есть файл README, который стоит в качестве инструкции для этой задачи, включая настройки ENV, установку и важные заметки.
| Запуск цели | пример API |
|---|---|
| Train & Finetune | marl.algos.mappo(hyperparam_source=$ENV) |
| Разработка и отладка | marl.algos.mappo(hyperparam_source="test") |
| 3 -я сторона Env | marl.algos.mappo(hyperparam_source="common") |
Вот диаграмма, описывающая характеристики каждого алгоритма:
| алгоритм | Режим поддержки задачи | дискретное действие | непрерывное действие | Тип политики |
|---|---|---|---|---|
| Iql * | все четыре | ✔ | вне политики | |
| Пг | все четыре | ✔ | ✔ | на политике |
| A2C | все четыре | ✔ | ✔ | на политике |
| DDPG | все четыре | ✔ | вне политики | |
| Trpo | все четыре | ✔ | ✔ | на политике |
| PPO | все четыре | ✔ | ✔ | на политике |
| Кома | все четыре | ✔ | на политике | |
| Maddpg | все четыре | ✔ | вне политики | |
| MAA2C * | все четыре | ✔ | ✔ | на политике |
| MATRPO * | все четыре | ✔ | ✔ | на политике |
| Маппо | все четыре | ✔ | ✔ | на политике |
| Hatrpo | кооператив | ✔ | ✔ | на политике |
| Happo | кооператив | ✔ | ✔ | на политике |
| Vdn | кооператив | ✔ | вне политики | |
| Qmix | кооператив | ✔ | вне политики | |
| Facmac | кооператив | ✔ | вне политики | |
| VDAC | кооператив | ✔ | ✔ | на политике |
| Vdppo * | кооператив | ✔ | ✔ | на политике |
* Все четыре : кооперативные совместные конкурентные соревновательные смешанные
IQL -это многоагентная версия Q Learning. MAA2C и MATRPO являются централизованной версией A2C и TRPO. Vdppo - это версия PPO.
Модель агента состоит из двух частей, encoder и core arch . encoder будет построен Marllib в соответствии с пространством наблюдения. Выберите mlp , gru или lstm так как вы хотите построить полную модель.
| модель арка | пример API |
|---|---|
| MLP | marl.build_model(env, algo, {"core_arch": "mlp") |
| Гру | marl.build_model(env, algo, {"core_arch": "gru"}) |
| LSTM | marl.build_model(env, algo, {"core_arch": "lstm"}) |
| Энкодер арка | marl.build_model(env, algo, {"core_arch": "gru", "encode_layer": "128-256"}) |
| параметр | пример API |
|---|---|
| тренироваться | algo.fit(env, model) |
| отлаживать | algo.fit(env, model, local_mode=True) |
| Условие остановки | algo.fit(env, model, stop={'episode_reward_mean': 2000, 'timesteps_total': 10000000}) |
| совместное использование политики | algo.fit(env, model, share_policy='all') # or 'group' / 'individual' |
| Сохранить модель | algo.fit(env, model, checkpoint_freq=100, checkpoint_end=True) |
| Графический процессор ускоряется | algo.fit(env, model, local_mode=False, num_gpus=1) |
| ЦП ускоряется | 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" }
)В соответствии с текущим рабочим каталогом вы можете найти все учебные данные (файлы журнала и Tensorflow), а также сохраненные модели. Чтобы визуализировать кривую обучения, вы можете использовать Tensorboard. Следуйте шагам ниже:
pip install tensorboardtensorboard --logdir .В качестве альтернативы, вы можете обратиться к этому уроку для более подробных инструкций.
Для списка всех существующих результатов вы можете посетить эту ссылку. Обратите внимание, что эти результаты были получены из более старой версии Marllib, что может привести к несоответствиям по сравнению с текущими результатами.
Marllib предоставляет несколько практических примеров для вас.
ray.tune . Попробуйте примеры MPE + MAPPO в Google Colaboratory! Больше учебных документов доступно здесь.
Доступен сборник исследований и обзоров многоагентных обучения подкреплению (MARL). Документы были организованы на основе даты их публикации и их оценки соответствующих сред.
Алгоритмы: среда:
| Канал | Связь |
|---|---|
| Проблемы | GitHub выпуски |
Дорожная карта к будущему выпуску доступна на Roadmap.md.
Мы-небольшая команда по обучению в области многоагентного подкрепления, и мы возьмем всю помощь, которую можем получить! Если вы хотите принять участие, вот информация о руководящих принципах взносов и о том, как проверить код локально.
Вы можете внести свой вклад несколькими способами, например, отчетность об ошибках, написании или переводе документации, просмотре или рефакторинге, запросам или реализации новых функций и т. Д.
Если вы используете Marllib в своем исследовании, пожалуйста, укажите бумагу 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},
}Работы, которые основаны на или тесно сотрудничают с Marllib <nclind>
@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},
}