Dieses Projekt bietet eine optimierte Infrastruktur für Reinforcement Learning. Es erweitert die OpenAI-Fitness-Schnittstelle auf mehrere parallele Umgebungen und ermöglicht die Implementierung von Agenten in TensorFlow und die Durchführung von Stapelberechnungen. Als Ausgangspunkt bieten wir BatchPPO an, eine optimierte Implementierung der Proximal Policy Optimization.
Bitte zitieren Sie das TensorFlow Agents-Papier, wenn Sie in Ihrer Forschung Code aus diesem Projekt verwenden:
@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 }
}
Abhängigkeiten: Python 2/3, TensorFlow 1.3+, Gym, ruamel.yaml
Klonen Sie das Repository und führen Sie den PPO-Algorithmus aus, indem Sie Folgendes eingeben:
python3 -m agents.scripts.train --logdir=/path/to/logdir --config=pendulum
Der zu verwendende Algorithmus wird in der Konfiguration definiert und das hier gestartete pendulum
verwendet die enthaltene PPO-Implementierung. Sehen Sie sich weitere vordefinierte Konfigurationen in agents/scripts/configs.py
an.
Wenn Sie einen zuvor gestarteten Lauf fortsetzen möchten, fügen Sie dem letzten Befehl das Flag --timestamp=<time>
hinzu und geben Sie den Zeitstempel im Verzeichnisnamen Ihres Laufs an.
Um Metriken zu visualisieren, starten Sie TensorBoard von einem anderen Terminal aus und verweisen Sie dann mit Ihrem Browser auf http://localhost:2222
:
tensorboard --logdir=/path/to/logdir --port=2222
Geben Sie Folgendes ein, um Videos zu rendern und OpenAI Gym-Statistiken zum Hochladen auf die Anzeigetafel zu sammeln:
python3 -m agents.scripts.visualize --logdir=/path/to/logdir/ < time > - < config > --outdir=/path/to/outdir/
Wir veröffentlichen dieses Projekt als Ausgangspunkt, der es einfach macht, neue Ideen für verstärktes Lernen umzusetzen. Diese Dateien sind ein guter Ausgangspunkt für die Änderung des Codes:
Datei | Inhalt |
---|---|
scripts/configs.py | Experimentkonfigurationen mit Angabe der Aufgaben und Algorithmen. |
scripts/networks.py | Modelle neuronaler Netzwerke. |
scripts/train.py | Die ausführbare Datei, die das Trainingssetup enthält. |
algorithms/ppo/ppo.py | Das TensorFlow-Diagramm für den PPO-Algorithmus. |
Geben Sie Folgendes ein, um Komponententests und Linting auszuführen:
python2 -m unittest discover -p " *_test.py "
python3 -m unittest discover -p " *_test.py "
python3 -m pylint agents
Bei weiteren Fragen öffnen Sie bitte ein Issue auf Github.
Wir bieten eine Batch-Schnittstelle für OpenAI Gym-Umgebungen an, die sich für effiziente Algorithmusimplementierungen vollständig in TensorFlow integrieren lässt. Dies wird durch diese Kernkomponenten erreicht:
agents.tools.wrappers.ExternalProcess
ist ein Umgebungs-Wrapper, der eine OpenAI Gym-Umgebung innerhalb eines externen Prozesses erstellt. Aufrufe von step()
und reset()
sowie Attributzugriffe werden an den Prozess weitergeleitet und warten auf das Ergebnis. Dies ermöglicht die parallele Ausführung mehrerer Umgebungen, ohne durch die globale Interpretersperre von Python eingeschränkt zu werden.agents.tools.BatchEnv
erweitert die OpenAI Gym-Schnittstelle auf mehrere Umgebungen. Es kombiniert mehrere OpenAI Gym-Umgebungen, wobei step()
eine Reihe von Aktionen akzeptiert und eine Reihe von Beobachtungen, Belohnungen, Fertig-Flaggen und Infoobjekten zurückgibt. Wenn die einzelnen Umgebungen in externen Prozessen leben, werden sie parallel durchlaufen.agents.tools.InGraphBatchEnv
integriert eine Batch-Umgebung in das TensorFlow-Diagramm und macht seine Funktionen step()
und reset()
als Operationen zugänglich. Der aktuelle Stapel von Beobachtungen, letzten Aktionen, Belohnungen und Fertig-Flags wird in Variablen gespeichert und als Tensoren verfügbar gemacht.agents.tools.simulate()
vereint den Schritt einer In-Graph-Batch-Umgebung und eines Reinforcement-Learning-Algorithmus in einer einzigen Operation, die innerhalb der Trainingsschleife aufgerufen wird. Dies reduziert die Anzahl der Sitzungsaufrufe und bietet eine einfache Möglichkeit, zukünftige Algorithmen zu trainieren. Um den gesamten Code zu verstehen, machen Sie sich bitte mit den Kontrollflussoperationen von TensorFlow vertraut, insbesondere mit tf.cond()
, tf.scan()
und tf.control_dependencies()
.
Dies ist kein offizielles Google-Produkt.