-
Notifications
You must be signed in to change notification settings - Fork 6
Get parsl.serialize.errors.SerializationError when using Parsl htex to run docking and moldesign #155
Description
Describe the problem.
Hi. I was trying to use Parsl htex to run docking. Here is my docking.toml file and my command is python3 -m taps.run --config docking.toml.
[app]
name = "failures"
base = "docking"
failure_rate = 0
failure_type = "import"
[app.config]
smi_file_name_ligand = "/work/cse-zhousc/resilient_compute/resilience_test/taiyi/debug/data/docking/dataset_orz_original_1k.csv"
receptor = "/work/cse-zhousc/resilient_compute/resilience_test/taiyi/debug/data/docking/1iep_receptor.pdbqt"
tcl_path = "/work/cse-zhousc/resilient_compute/resilience_test/taiyi/debug/data/docking/set_element.tcl"
[engine.executor]
name = "parsl-htex"
retries = 3
[engine.executor.htex]
max_workers = 32
radio_mode = "filesystem"
[engine.executor.htex.provider]
kind = "LSFProvider"
init_blocks = 1
max_blocks = 1
min_blocks = 1
nodes_per_block = 2
queue = "debug"
scheduler_options = ""
walltime = "00:30:00"
[engine.executor.monitoring]
hub_address = "localhost"
logging_endpoint = 'sqlite:///parsl-runinfo/monitoring.db'
resource_monitoring_interval = 1
hub_port = 55055But then I was reported errors as follows. Quite long error messages, but I guess the root error is TypeError: cannot pickle '_abc._abc_data' object. This also happened when I tried to run moldesign app.
[2024-09-10 19:41:42.019] ERROR (parsl.dataflow.dflow) > Task 20 failed after 3 retry attempts
Traceback (most recent call last):
File "/work/cse-zhousc/parsl_resilient/parsl/executors/high_throughput/executor.py", line 646, in submit
fn_buf = pack_apply_message(func, args, kwargs,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/work/cse-zhousc/parsl_resilient/parsl/serialize/facade.py", line 58, in pack_apply_message
b_func = serialize(func, buffer_threshold=buffer_threshold)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/work/cse-zhousc/parsl_resilient/parsl/serialize/facade.py", line 94, in serialize
raise result
File "/work/cse-zhousc/parsl_resilient/parsl/serialize/facade.py", line 86, in serialize
result = method.identifier + b'\n' + method.serialize(obj)
^^^^^^^^^^^^^^^^^^^^^
File "/work/cse-zhousc/parsl_resilient/parsl/serialize/concretes.py", line 60, in serialize
return dill.dumps(data)
^^^^^^^^^^^^^^^^
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/site-packages/dill/_dill.py", line 263, in dumps
dump(obj, file, protocol, byref, fmode, recurse, **kwds)#, strictio)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/site-packages/dill/_dill.py", line 235, in dump
Pickler(file, protocol, **_kwds).dump(obj)
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/site-packages/dill/_dill.py", line 394, in dump
StockPickler.dump(self, obj)
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/pickle.py", line 487, in dump
self.save(obj)
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/site-packages/dill/_dill.py", line 388, in save
StockPickler.save(self, obj, save_persistent_id)
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/pickle.py", line 560, in save
f(self, obj) # Call unbound method with explicit self
^^^^^^^^^^^^
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/site-packages/dill/_dill.py", line 1824, in save_function
_save_with_postproc(pickler, (_create_function, (
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/site-packages/dill/_dill.py", line 1070, in _save_with_postproc
pickler.save_reduce(*reduction, obj=obj)
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/pickle.py", line 717, in save_reduce
save(state)
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/site-packages/dill/_dill.py", line 388, in save
StockPickler.save(self, obj, save_persistent_id)
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/pickle.py", line 560, in save
f(self, obj) # Call unbound method with explicit self
^^^^^^^^^^^^
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/pickle.py", line 887, in save_tuple
save(element)
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/site-packages/dill/_dill.py", line 388, in save
StockPickler.save(self, obj, save_persistent_id)
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/pickle.py", line 560, in save
f(self, obj) # Call unbound method with explicit self
^^^^^^^^^^^^
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/site-packages/dill/_dill.py", line 1186, in save_module_dict
StockPickler.save_dict(pickler, obj)
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/pickle.py", line 972, in save_dict
self._batch_setitems(obj.items())
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/pickle.py", line 998, in _batch_setitems
save(v)
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/site-packages/dill/_dill.py", line 388, in save
StockPickler.save(self, obj, save_persistent_id)
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/pickle.py", line 560, in save
f(self, obj) # Call unbound method with explicit self
^^^^^^^^^^^^
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/site-packages/dill/_dill.py", line 1824, in save_function
_save_with_postproc(pickler, (_create_function, (
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/site-packages/dill/_dill.py", line 1070, in _save_with_postproc
pickler.save_reduce(*reduction, obj=obj)
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/pickle.py", line 717, in save_reduce
save(state)
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/site-packages/dill/_dill.py", line 388, in save
StockPickler.save(self, obj, save_persistent_id)
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/pickle.py", line 560, in save
f(self, obj) # Call unbound method with explicit self
^^^^^^^^^^^^
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/pickle.py", line 887, in save_tuple
save(element)
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/site-packages/dill/_dill.py", line 388, in save
StockPickler.save(self, obj, save_persistent_id)
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/pickle.py", line 560, in save
f(self, obj) # Call unbound method with explicit self
^^^^^^^^^^^^
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/site-packages/dill/_dill.py", line 1186, in save_module_dict
StockPickler.save_dict(pickler, obj)
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/pickle.py", line 972, in save_dict
self._batch_setitems(obj.items())
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/pickle.py", line 998, in _batch_setitems
save(v)
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/site-packages/dill/_dill.py", line 388, in save
StockPickler.save(self, obj, save_persistent_id)
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/pickle.py", line 603, in save
self.save_reduce(obj=obj, *rv)
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/pickle.py", line 692, in save_reduce
save(args)
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/site-packages/dill/_dill.py", line 388, in save
StockPickler.save(self, obj, save_persistent_id)
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/pickle.py", line 560, in save
f(self, obj) # Call unbound method with explicit self
^^^^^^^^^^^^
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/pickle.py", line 887, in save_tuple
save(element)
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/site-packages/dill/_dill.py", line 388, in save
StockPickler.save(self, obj, save_persistent_id)
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/pickle.py", line 560, in save
f(self, obj) # Call unbound method with explicit self
^^^^^^^^^^^^
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/site-packages/dill/_dill.py", line 1824, in save_function
_save_with_postproc(pickler, (_create_function, (
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/site-packages/dill/_dill.py", line 1084, in _save_with_postproc
pickler._batch_setitems(iter(source.items()))
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/pickle.py", line 998, in _batch_setitems
save(v)
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/site-packages/dill/_dill.py", line 388, in save
StockPickler.save(self, obj, save_persistent_id)
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/pickle.py", line 560, in save
f(self, obj) # Call unbound method with explicit self
^^^^^^^^^^^^
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/site-packages/dill/_dill.py", line 1698, in save_type
_save_with_postproc(pickler, (_create_type, (
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/site-packages/dill/_dill.py", line 1070, in _save_with_postproc
pickler.save_reduce(*reduction, obj=obj)
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/pickle.py", line 692, in save_reduce
save(args)
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/site-packages/dill/_dill.py", line 388, in save
StockPickler.save(self, obj, save_persistent_id)
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/pickle.py", line 560, in save
f(self, obj) # Call unbound method with explicit self
^^^^^^^^^^^^
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/pickle.py", line 902, in save_tuple
save(element)
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/site-packages/dill/_dill.py", line 388, in save
StockPickler.save(self, obj, save_persistent_id)
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/pickle.py", line 560, in save
f(self, obj) # Call unbound method with explicit self
^^^^^^^^^^^^
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/site-packages/dill/_dill.py", line 1186, in save_module_dict
StockPickler.save_dict(pickler, obj)
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/pickle.py", line 972, in save_dict
self._batch_setitems(obj.items())
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/pickle.py", line 998, in _batch_setitems
save(v)
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/site-packages/dill/_dill.py", line 388, in save
StockPickler.save(self, obj, save_persistent_id)
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/pickle.py", line 578, in save
rv = reduce(self.proto)
^^^^^^^^^^^^^^^^^^
TypeError: cannot pickle '_abc._abc_data' object
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/work/cse-zhousc/parsl_resilient/parsl/dataflow/dflow.py", line 323, in handle_exec_update
res = self._unwrap_remote_exception_wrapper(future)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/work/cse-zhousc/parsl_resilient/parsl/dataflow/dflow.py", line 593, in _unwrap_remote_exception_wrapper
result = future.result()
^^^^^^^^^^^^^^^
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/concurrent/futures/_base.py", line 449, in result
return self.__get_result()
^^^^^^^^^^^^^^^^^^^
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/concurrent/futures/_base.py", line 401, in __get_result
raise self._exception
File "/work/cse-zhousc/parsl_resilient/parsl/dataflow/dflow.py", line 653, in launch_if_ready
exec_fu = self.launch_task(task_record)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/work/cse-zhousc/parsl_resilient/parsl/dataflow/dflow.py", line 747, in launch_task
exec_fu = executor.submit(executable, task_record['resource_specification'], *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/work/cse-zhousc/parsl_resilient/parsl/executors/high_throughput/executor.py", line 649, in submit
raise SerializationError(func.__name__)
parsl.serialize.errors.SerializationError: Failed to serialize objects for an invocation of function wrapper. Refer https://parsl.readthedocs.io/en/latest/faq.html#addressing-serializationerror
So I searched for this dill error message TypeError: cannot pickle '_abc._abc_data' object and found that it was addressed in dill 0.3.7 so I upgraded dill to this version. But then I was reported:
globus-compute-sdk 2.27.1 requires dill==0.3.6; python_version >= "3.11", but you have dill 0.3.7 which is incompatible.If ignore this version conflict and run this app again, I got another error related to deserialization.
[2024-09-10 20:13:26.825] ERROR (parsl.dataflow.dflow) > Task 20 failed after 3 retry attempts
Traceback (most recent call last):
File "/work/cse-zhousc/parsl_resilient/parsl/executors/high_throughput/executor.py", line 483, in _queue_management_worker
s = deserialize(msg['exception'])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/work/cse-zhousc/parsl_resilient/parsl/serialize/facade.py", line 130, in deserialize
result = deserializer.deserialize(body)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/work/cse-zhousc/parsl_resilient/parsl/serialize/concretes.py", line 26, in deserialize
return pickle.loads(body)
^^^^^^^^^^^^^^^^^^
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/site-packages/tblib/pickling_support.py", line 26, in unpickle_exception
inst = func(*args)
^^^^^^^^^^^
TypeError: PydanticErrorMixin.__init__() missing 1 required keyword-only argument: 'code'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/work/cse-zhousc/parsl_resilient/parsl/dataflow/dflow.py", line 323, in handle_exec_update
res = self._unwrap_remote_exception_wrapper(future)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/work/cse-zhousc/parsl_resilient/parsl/dataflow/dflow.py", line 593, in _unwrap_remote_exception_wrapper
result = future.result()
^^^^^^^^^^^^^^^
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/concurrent/futures/_base.py", line 449, in result
return self.__get_result()
^^^^^^^^^^^^^^^^^^^
File "/work/cse-zhousc/miniconda3/envs/taps-docking2/lib/python3.11/concurrent/futures/_base.py", line 401, in __get_result
raise self._exception
parsl.serialize.errors.DeserializationError: Failed to deserialize objects. Reason: Received exception, but handling also threw an exception: PydanticErrorMixin.__init__() missing 1 required keyword-only argument: 'code'
I wonder whether this dill version limit is important. If so, how can we address the _abc._abc_data object pickle problem? If not, what is this PydanticErrorMixin?
How did you install TaPS?
$ git clone [email protected]:ClaudiaCumberbatch/webs.git
# synchronized with the newest TaPS version in this repoTaPS Version
Python Version
3.11
OS and Platform
x86 linux