-
Notifications
You must be signed in to change notification settings - Fork 1.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
Benchmarking toolkit wrap up #2462
Conversation
for more information, see https://pre-commit.ci
for more information, see https://pre-commit.ci
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.
It looks like you're running into an obsolete broken test -- could you rebase?
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.
Looks mostly good to me. Mainly just a few nits.
2a8f7d1
to
4c64fd6
Compare
Using the
|
EDIT: Looks like the LudwigProfiler is not serializable because of the thread that is started when entering its context. Debugging serializability: >>> from ray.util import inspect_serializability
>>> from ludwig.benchmarking.profiler_callbacks import LudwigProfilerCallback
>>> cb = LudwigProfilerCallback({'experiment_name': '/tmp', 'profiler': {'use_torch_profiler': False, 'logging_interval': 0}})
>>> inspect_serializability(cb, name="LudwigProfilerCallback")
================================================================================
Checking Serializability of <ludwig.benchmarking.profiler_callbacks.LudwigProfilerCallback object at 0xffff9d867b20>
================================================================================
(True, set())
>>> cb.on_preprocess_start()
>>> inspect_serializability(cb, name="LudwigProfilerCallback")
================================================================================
Checking Serializability of <ludwig.benchmarking.profiler_callbacks.LudwigProfilerCallback object at 0xffff9d6c4d90>
================================================================================
!!! FAIL serialization: cannot pickle '_thread.lock' object
Serializing 'preload' <function Callback.preload at 0xffff7cdbf670>...
Serializing '_abc_impl' <_abc_data object at 0xffff9d5b0300>...
!!! FAIL serialization: cannot pickle '_abc_data' object
WARNING: Did not find non-serializable object in <_abc_data object at 0xffff9d5b0300>. This may be an oversight.
================================================================================
Variable:
FailTuple(_abc_impl [obj=<_abc_data object at 0xffff9d5b0300>, parent=<ludwig.benchmarking.profiler_callbacks.LudwigProfilerCallback object at 0xffff9d6c4d90>])
was found to be non-serializable. There may be multiple other undetected variables that were non-serializable.
Consider either removing the instantiation/imports of these variables or moving the instantiation into the scope of the function/class.
If you have any suggestions on how to improve this error message, please reach out to the Ray developers on github.com/ray-project/ray/issues/
================================================================================
(False, {FailTuple(_abc_impl [obj=<_abc_data object at 0xffff9d5b0300>, parent=<ludwig.benchmarking.profiler_callbacks.LudwigProfilerCallback object at 0xffff9d6c4d90>])}) |
@jppgks Thanks for investigating! That was the issue I encountered with a ray backend. I looked at other options of how we can still achieve this (using mutliprocessing instead of threading, etc.) but didn't get to a working solution. For now, let's just default to |
This PR includes
LudwigProfiler
.