45 lines
1.3 KiB
Python
45 lines
1.3 KiB
Python
# @OldAPIStack
|
|
from ray.rllib.algorithms.impala import IMPALAConfig
|
|
from ray.rllib.utils.metrics import (
|
|
ENV_RUNNER_RESULTS,
|
|
EPISODE_RETURN_MEAN,
|
|
NUM_ENV_STEPS_SAMPLED_LIFETIME,
|
|
)
|
|
|
|
stop = {
|
|
f"{ENV_RUNNER_RESULTS}/{EPISODE_RETURN_MEAN}": 150,
|
|
f"{NUM_ENV_STEPS_SAMPLED_LIFETIME}": 200000,
|
|
}
|
|
|
|
config = (
|
|
IMPALAConfig()
|
|
.api_stack(
|
|
enable_rl_module_and_learner=False,
|
|
enable_env_runner_and_connector_v2=False,
|
|
)
|
|
.environment("CartPole-v1")
|
|
# Switch on >1 loss/optimizer API for TFPolicy and EagerTFPolicy.
|
|
.experimental(_tf_policy_handles_more_than_one_loss=True)
|
|
.training(
|
|
# IMPALA will produce two separate loss terms: policy loss + value function
|
|
# loss.
|
|
_separate_vf_optimizer=True,
|
|
# Separate learning rate for the value function branch.
|
|
_lr_vf=0.00075,
|
|
num_epochs=6,
|
|
# `vf_loss_coeff` will be ignored anyways as we use separate loss terms.
|
|
vf_loss_coeff=0.01,
|
|
vtrace=True,
|
|
model={
|
|
# Make sure we really have completely separate branches.
|
|
"vf_share_layers": False,
|
|
},
|
|
)
|
|
.env_runners(
|
|
num_envs_per_env_runner=5,
|
|
num_env_runners=1,
|
|
observation_filter="MeanStdFilter",
|
|
)
|
|
.resources(num_gpus=0)
|
|
)
|