English Readme
Данный репозиторий содержит реализацию VDN - кооперативного мульти-агентного алгоритма обучения с подкреплением. VDN основан на предпосылке о линейном разложении общей награды агентов, таким образом, общая награда всех агентов представлена в виде суммы индивидуальных наград. Несмотря на то, что данная предпосылка ограничивает класс обучаемых стратегий только кооперативными вариантами, VDN все же является хорошим бейзлайном для многих задач мультиагентного обучения с подкреплением.
Данный бейзлайн позволяет получить целевую метрику (Mean Focal Score) около 42 при ее сабмите в тестовую систему (Случайная политика, для сравнения, получает ~4).
Обучение данного алгоритма занимает примерно 3 часа при наличии GPU и требует ~15гб. оперативной памяти и ~1гб. памяти GPU. Чтобы уменьшить потребление оперативной памяти, можно сократить размер буфера данных в конфиге обучения.
Шаг 1: Установить зависимости при помощи команды pip install -r requirements.txt
.
Зависимости включают в себя открытый репозиторий
с модулем aij_multiagent_rl
, содержащим симулятор и базовый класс агентов для задачи.
В случае проблем с установкой, установите модуль из исходных файлов репозитория.
Шаг 2: Поочередно выполнить параграфы ноутбука.
Главным результатом работы ноутбука будет создание директории submission_vdn
.
Шаг 3: Запустить приложенные юнит-тесты для проверки работоспособности решения
- Вставить путь до директории решения в конфиг файл тестов
по ключу
submission_dir
. По умолчанию, значение этого поля"submission_vdn"
, так что вносить изменения не нужно. Тем не менее, вы можете заменить путь к решению в будущем, если захотите проверить работоспособность ваших собственных сабмишенов. - Запустить юнит тесты при помощи команды
pytest tests
в корне данного репозитория
Шаг 4: Запаковать решение в .zip архив и отправить его в тестирующую систему. Важно: файлы решения должны быть на верхнем уровне в запакованном архиве:
Правильно:
submission.zip
├── utils # Директория с модулями, необходимыми для класса агента (опционально)
├── model.py # Скрипт с реализацией класса агента(ов) и фабричного метода
└── agents # Директория с артефактами агентов (название фисировано)
Не правильно:
submission.zip
└── submission
├── utils # Директория с модулями, необходимыми для класса агента (опционально)
├── model.py # Скрипт с реализацией класса агента(ов) и фабричного метода
└── agents # Директория с артефактами агентов (название фисировано)
В данный репозиторий включены юнит тесты для проверки валидности решения. Сабмишен, полученный в ходе выполнения приложенного ноутбука без изменений должен проходить процедуру тестирования (и оценки в тестовой системе) без ошибок. Процедура запуска тестов описана выше.
Стоит отметить, что в один из тестов включено тестирование скорости сэмплирования действий агентами. Если конфигурация машины, на которой тесты запускаются, сильно отличается от конфигурации ресурсов контейнера в системе тестирования (см. раздел ограничения в описании задачи) возникающее предупреждение можно игнорировать, в противном случае, стоит обратить на него внимание.
Мы рекомендуем запускать тесты на своих решениях, прежде чем отправлять их в систему.
В репозиторий так же включены файлы Docker, при помощи которых можно воспроизвести среду тестовой системы, в которой будет запущено ваше решение или использовать их для локальной разработки.