본 프로젝트는 강화학습에 최적화된 인프라를 제공합니다. OpenAI 체육관 인터페이스를 여러 병렬 환경으로 확장하고 에이전트를 TensorFlow에서 구현하고 일괄 계산을 수행할 수 있도록 합니다. 출발점으로 Proximal Policy Optimization의 최적화된 구현인 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 | PPO 알고리즘에 대한 TensorFlow 그래프. |
단위 테스트 및 Linting을 실행하려면 다음을 입력하세요.
python2 -m unittest discover -p " *_test.py "
python3 -m unittest discover -p " *_test.py "
python3 -m pylint agents
추가 질문이 있는 경우 Github에서 문제를 열어주세요.
효율적인 알고리즘 구현을 위해 TensorFlow와 완전히 통합되는 OpenAI Gym 환경을 위한 일괄 인터페이스가 포함되어 있습니다. 이는 다음과 같은 핵심 구성 요소를 통해 달성됩니다.
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 제품이 아닙니다.