Basic Reinforcement Learning Workflow¶
Define your target machine to run on¶
Import ROSE main modules:
from concurrent.futures import ProcessPoolExecutor
from radical.asyncflow import WorkflowEngine
from rhapsody.backends import ConcurrentExecutionBackend
from rose.metrics import GREATER_THAN_THRESHOLD
from rose.rl import SequentialReinforcementLearner
You can use and setup an HPC engine as we described in our previous Target Resources step:
engine = await ConcurrentExecutionBackend(ProcessPoolExecutor())
asyncflow = await WorkflowEngine.create(engine)
rl = SequentialReinforcementLearner(asyncflow)
Now our resource engine is defined, lets define our main RL workflow components:
@rl.environment_task
async def environment(*args):
return f'python3 environment.py'
@rl.update_task
async def update(*args):
return f'python3 update.py'
@rl.as_stop_criterion(metric_name='MODEL_REWARD', threshold=200, operator=GREATER_THAN_THRESHOLD)
async def check_reward(*args):
return 'python3 check_reward.py'
Warning
For any metric function like @rl.as_stop_criterion the invoked script like check_reward.py must return a numerical value.
Finally invoke the tasks and register them with the reinforcement learner as a workflow: