How gpuopen-librariesandsdks/schola works
Schola is an Unreal Engine reinforcement-learning toolkit with Python framework integrations. In the main workflow, a developer defines an Unreal environment and agents; observations and actions cross the connector/protocol boundary to a Python Gym-style environment, where RLlib or Stable-Baselines3 can train or evaluate policies. The repository also includes in-game inference and a separate imitation-data workflow with Minari support. The README establishes these capabilities, while sampled source specifically confirms pipelined inference behavior; unsampled subsystem links are limited to the documented workflow and module naming.
Main entry points: EnvironmentInterface.h Environment And Agents · gym/env.py Gym Environment · PipelinedStepper.cpp Pipelined Inference · sb3/env.py SB3 Adapter
Components 25
Unreal Environment
- Environment And Agents
Source/ScholaTraining/Public/Environment/EnvironmentInterface.h - Spaces And Points
Source/Schola/Public/Spaces/Space.h - Sensors And Actuators
Source/ScholaInteractors/Public/SensorInterface.h
Protocol Transport
- Gym Connector
Source/ScholaTraining/Public/GymConnectors/IGymConnector.h - gRPC Connector
Source/ScholaProtobuf/Public/GymConnectors/gRPC/gRPCGymConnector.h - Protocol Messages
Proto/GymConnector.proto - Python Protocols
Resources/python/schola/core/protocols/protobuf/grpc_protocol.py
Python Environments
- Gym Environment
Resources/python/schola/gym/env.py - SB3 Adapter
Resources/python/schola/sb3/env.py - RLlib Adapter
Resources/python/schola/rllib/env.py
RL Workflows
- SB3 Training
Resources/python/schola/scripts/sb3/train/train.py - SB3 Evaluation
Resources/python/schola/scripts/sb3/eval/eval.py - RLlib Training
Resources/python/schola/scripts/rllib/train/train.py - RLlib Evaluation
Resources/python/schola/scripts/rllib/eval/eval.py
Inference And Imitation
- Pipelined Inference
Source/ScholaInferenceUtils/Private/Steppers/PipelinedStepper.cpp - Inference Policy
Source/ScholaNNE/Public/Policies/NNEPolicy.h - Imitation Environment
Source/ScholaImitation/Public/Environment/ImitationEnvironmentInterface.h - Imitation Connector
Source/ScholaProtobuf/Public/ImitationConnectors/gRPC/gRPCImitationConnector.h - Minari Collection
Resources/python/schola/minari/datacollector.py - Collection Command
Resources/python/schola/scripts/minari/collect.py
Other components
- Developer
- Python RL User
- Unreal Runtime
- RL Frameworks
- Minari Dataset
Connections 25
- Developer → Environment And Agents: defines
- Environment And Agents → Spaces And Points: defines spaces
- Environment And Agents → Sensors And Actuators: uses
- Environment And Agents → Gym Connector: serves environment
- Gym Connector → gRPC Connector: connects through
- gRPC Connector → Protocol Messages: exchanges messages
- Python Protocols → Protocol Messages: serializes messages
- Gym Environment → Python Protocols: uses
- Python RL User → Gym Environment: configures
- Gym Environment → SB3 Adapter: adapts for
- Gym Environment → RLlib Adapter: adapts for
- SB3 Adapter → SB3 Training: supports training
- SB3 Adapter → SB3 Evaluation: supports evaluation
- RLlib Adapter → RLlib Training: supports training
- RLlib Adapter → RLlib Evaluation: supports evaluation
- SB3 Training → RL Frameworks: trains with
- RLlib Training → RL Frameworks: trains with
- Unreal Runtime → Pipelined Inference: steps agents
- Pipelined Inference → Inference Policy: requests inference
- Pipelined Inference → Environment And Agents: collects observations
- Pipelined Inference → Environment And Agents: applies actions
- Imitation Environment → Imitation Connector: provides demonstrations
- Imitation Connector → Minari Collection: supplies data
- Collection Command → Minari Collection: collects through
- Minari Collection → Minari Dataset: writes dataset