-
Notifications
You must be signed in to change notification settings - Fork 6.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[RLlib] Checkpoint and restore connectors. #26253
Conversation
rllib/connectors/connector.py
Outdated
@@ -341,6 +343,11 @@ def insert_before(self, name: str, connector: Connector): | |||
raise ValueError(f"Can not find connector {name}") | |||
self.connectors.insert(idx, connector) | |||
|
|||
print( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
same
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
rllib/connectors/connector.py
Outdated
@@ -357,6 +364,11 @@ def insert_after(self, name: str, connector: Connector): | |||
raise ValueError(f"Can not find connector {name}") | |||
self.connectors.insert(idx + 1, connector) | |||
|
|||
print( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
same
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
rllib/connectors/connector.py
Outdated
@@ -365,6 +377,11 @@ def prepend(self, connector: Connector): | |||
""" | |||
self.connectors.insert(0, connector) | |||
|
|||
print( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
same
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
rllib/connectors/connector.py
Outdated
@@ -373,6 +390,11 @@ def append(self, connector: Connector): | |||
""" | |||
self.connectors.append(connector) | |||
|
|||
print( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
same
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
@@ -0,0 +1,118 @@ | |||
"""This example script shows how to load a connector enabled policy, | |||
and adapt/use it with a different version of environment. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: "the environment"
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
@@ -0,0 +1,54 @@ | |||
"""This example script shows how to load a connector enabled policy, | |||
and adapt and use it with a different version of environment. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: "the environment" :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
updated the comment.
thanks.
@@ -740,8 +740,44 @@ def get_state(self) -> PolicyState: | |||
# The current global timestep. | |||
"global_timestep": self.global_timestep, | |||
} | |||
if self.config.get("enable_connectors", False): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you add a one-line comment here? that we are adding the connector state?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
sure
rllib/policy/policy.py
Outdated
return state | ||
|
||
@ExperimentalAPI |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should we use PublicApi(alpha)
here as well?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
state: The new state to set this policy to. Can be | ||
obtained by calling `self.get_state()`. | ||
""" | ||
# To avoid a circular dependency problem cause by SampleBatch. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Note to future ourselves: We should move SampleBatch out of the policy folder. It doesn't belong there.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yeah, totally, SampleBatch should be a pretty low level util that depends on nothing.
rllib/policy/policy.py
Outdated
self.agent_connectors = restore_connectors_for_policy( | ||
self, connector_configs["agent"] | ||
) | ||
print("restoring agent connectors:") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
logger.info
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
rllib/policy/policy.py
Outdated
self, connector_configs["action"] | ||
) | ||
print("restoring action connectors:") | ||
print(self.action_connectors.__str__(indentation=4)) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
logger.info
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
else: | ||
class_ = policy_cls | ||
self[policy_id] = class_(observation_space, action_space, merged_config) | ||
_class = get_tf_eager_cls_if_necessary(policy_cls, merged_config) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nice! thanks for cleaning this up and creating the utility function
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👌
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Awesome PR @gjoliver , thanks for the examples on connectors.
Just a few nits, then we can merge.
Oh, one last thing, we should add the new examples to BUILD!
ok, addressed all the comments. let's see if CI is happy. Also added all the examples as unit tests. |
Plus a couple of examples showing the usage of connector enabled policies.
* master: (42 commits) [dashboard][2/2] Add endpoints to dashboard and dashboard_agent for liveness check of raylet and gcs (ray-project#26408) [Doc] Fix docs feedback button (ray-project#26402) [core][1/2] Improve liveness check in GCS (ray-project#26405) [RLlib] Checkpoint and restore connectors. (ray-project#26253) [Workflow] Minor refactoring of workflow exceptions (ray-project#26398) [workflow] Workflow queue (ray-project#24697) [RLlib] Minor simplification of code. (ray-project#26312) [AIR] Update TensorflowPredictor to new API (ray-project#26215) [RLlib] Make Dataset reader default reader and enable CRR to use dataset (ray-project#26304) [runtime_env] [doc] Remove outdated info about "isolated" environment (ray-project#26314) [Doc] Fix rate-the-docs plugin (ray-project#26384) [Docs] [Serve] Has a consistent landing page style (ray-project#26029) [dashboard] Add `RAY_CLUSTER_ACTIVITY_HOOK` to `/api/component_activities` (ray-project#26297) [tune] Use `Checkpoint.to_bytes()` for store_to_object (ray-project#25805) [tune] Fix `SyncerCallback` having a size limit (ray-project#26371) [air] Serialize additional files in dict checkpoints turned dir checkpoints (ray-project#26351) [Docs] Add "rate the docs" plugin for feedback on docs (ray-project#26330) [Doc] Fix actor example (ray-project#26381) Set RAY_USAGE_STATS_EXTRA_TAGS for release tests (ray-project#26366) [Datasets] Update docs for drop_columns and fix typos (ray-project#26317) ...
Signed-off-by: Stefan van der Kleij <s.vanderkleij@viroteq.com>
Plus a couple of examples showing the usage of connector enabled policies.
Why are these changes needed?
Allow checkpoint and restore of connector pipelines.
Related issue number
Checks
scripts/format.sh
to lint the changes in this PR.