Этот проект предоставляет оптимизированную инфраструктуру для обучения с подкреплением. Он расширяет интерфейс спортзала OpenAI на несколько параллельных сред и позволяет внедрять агентов в TensorFlow и выполнять пакетные вычисления. В качестве отправной точки мы предоставляем BatchPPO — оптимизированную реализацию оптимизации проксимальной политики.
Пожалуйста, цитируйте статью TensorFlow Agents, если вы используете код из этого проекта в своих исследованиях:
@article { hafner2017agents ,
title = { TensorFlow Agents: Efficient Batched Reinforcement Learning in TensorFlow } ,
author = { Hafner, Danijar and Davidson, James and Vanhoucke, Vincent } ,
journal = { arXiv preprint arXiv:1709.02878 } ,
year = { 2017 }
}
Зависимости: Python 2/3, TensorFlow 1.3+, Gym, ruamel.yaml
Клонируйте репозиторий и запустите алгоритм PPO, набрав:
python3 -m agents.scripts.train --logdir=/path/to/logdir --config=pendulum
Используемый алгоритм определен в конфигурации, и pendulum
запускаемый здесь, использует включенную реализацию PPO. Ознакомьтесь с другими предопределенными конфигурациями в agents/scripts/configs.py
.
Если вы хотите возобновить ранее начатый запуск, добавьте флаг --timestamp=<time>
к последней команде и укажите временную метку в имени каталога вашего запуска.
Чтобы визуализировать метрики, запустите TensorBoard с другого терминала, затем укажите в браузере http://localhost:2222
:
tensorboard --logdir=/path/to/logdir --port=2222
Чтобы визуализировать видео и собрать статистику OpenAI Gym для загрузки на табло, введите:
python3 -m agents.scripts.visualize --logdir=/path/to/logdir/ < time > - < config > --outdir=/path/to/outdir/
Мы выпускаем этот проект как отправную точку, которая упрощает реализацию новых идей обучения с подкреплением. Эти файлы — хорошее начало при изменении кода:
Файл | Содержание |
---|---|
scripts/configs.py | Конфигурации эксперимента с указанием задач и алгоритмов. |
scripts/networks.py | Модели нейронных сетей. |
scripts/train.py | Исполняемый файл, содержащий настройки обучения. |
algorithms/ppo/ppo.py | Граф TensorFlow для алгоритма PPO. |
Чтобы запустить модульные тесты и линтинг, введите:
python2 -m unittest discover -p " *_test.py "
python3 -m unittest discover -p " *_test.py "
python3 -m pylint agents
Если у вас есть дополнительные вопросы, пожалуйста, откройте вопрос на Github.
Мы включаем пакетный интерфейс для сред OpenAI Gym, который полностью интегрируется с TensorFlow для эффективной реализации алгоритмов. Это достигается за счет следующих основных компонентов:
agents.tools.wrappers.ExternalProcess
— это оболочка среды, которая создает среду OpenAI Gym внутри внешнего процесса. Вызовы step()
и reset()
, а также доступ к атрибутам перенаправляются процессу и ждут результата. Это позволяет запускать несколько сред параллельно, не ограничиваясь глобальной блокировкой интерпретатора Python.agents.tools.BatchEnv
расширяет интерфейс OpenAI Gym на группы сред. Он объединяет несколько сред OpenAI Gym, где step()
принимает пакет действий и возвращает пакет наблюдений, наград, флагов выполнения и информационных объектов. Если отдельные среды живут во внешних процессах, они будут действовать параллельно.agents.tools.InGraphBatchEnv
интегрирует пакетную среду в граф TensorFlow и делает ее функции step()
и reset()
доступными как операции. Текущая партия наблюдений, последних действий, наград и флагов выполнения хранится в переменных и доступна в виде тензоров.agents.tools.simulate()
объединяет этап пакетной среды в графе и алгоритм обучения с подкреплением в одну операцию, которая вызывается внутри цикла обучения. Это уменьшает количество вызовов сеанса и обеспечивает простой способ обучения будущих алгоритмов. Чтобы понять весь код, ознакомьтесь с операциями потока управления TensorFlow, особенно с tf.cond()
, tf.scan()
и tf.control_dependencies()
.
Это не официальный продукт Google.