Skip to content
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] Adjust callback validation to account for MultiCallback. #50920

Open
wants to merge 3 commits into
base: master
Choose a base branch
from

Conversation

simonsays1980
Copy link
Collaborator

@simonsays1980 simonsays1980 commented Feb 26, 2025

Why are these changes needed?

The validation of Algorithm.callbacks was expecting solely a Callable from callback_class. For a MultiCallback users can, however, pass in List[RLlibCallback]. The latter was running into a validation error. This PR fixes this bug and adds a test for callbacks to the CI suite.

Related issue number

Closes #48089

Checks

  • I've signed off every commit(by using the -s flag, i.e., git commit -s) in this PR.
  • I've run scripts/format.sh to lint the changes in this PR.
  • I've included any doc changes needed for https://docs.ray.io/en/master/.
    • I've added any new APIs to the API Reference. For example, if I added a
      method in Tune, I've added it in doc/source/tune/api/ under the
      corresponding .rst file.
  • I've made sure the tests are passing. Note that there might be a few flaky tests, see the recent failures at https://flakey-tests.ray.io/
  • Testing Strategy
    • Unit tests
    • Release tests
    • This PR is not tested :(

…nd added a test for callbacks.

Signed-off-by: simonsays1980 <[email protected]>
@simonsays1980 simonsays1980 marked this pull request as ready for review February 26, 2025 13:17
@@ -0,0 +1,131 @@
import unittest
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very nice! Let's add this to BUILD ...

"returns a subclass of DefaultCallbacks, got "
f"{callbacks_class}!"
)
if isinstance(callbacks_class, list):
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: Can we simplify a bit?
Something like:

from ray.rllib.utils import force_list

to_check = force_list(callbacks_class)

if not all(callable(cc) for cc in to_check):
    raise ValueError ...

Avoids the many if blocks.

Copy link
Contributor

@sven1977 sven1977 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Just one nit and to add to BUILD. Thx @simonsays1980 !

@sven1977 sven1977 changed the title [RLlib] - Adjust callback validation to account for MultiCallback. [RLlib] Adjust callback validation to account for MultiCallback. Feb 26, 2025
…d the test to the BUILD file and removed an if-clause.

Signed-off-by: simonsays1980 <[email protected]>
Signed-off-by: simonsays1980 <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[RLlib] make_multi_callbacks function cannot pass new api stack verification
2 participants