You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Presently, executors may need to have Covalent installed for a variety of reasons.
Since the introduction of electron hooks (call_before and call_after), each executor's environment needs Covalent installed. This happens because the calldeps and their inputs are serialized client-side as TransportableObjects to ensure that the Covalent server can send to the right executor without needing the calldep's dependencies. The reason for using TransportableObject is that it abstracts away the serialization protocol and makes it easy for us to modify it in the future. As these TransportableObjects are only deserialized in the executor's environment, the executor needs to understand the TransportableObject type.
Even before the introduction of calldeps, if an Electron refers to another Electron, then the executor needs to understand the Electron type when unpickling the first electron.
However, both the Electron and TransportableObject types can be obtained only by installing all of Covalent.
An easy mitigation is allow users to only install the SDK like pip install covalent[sdk] The SDK, which would only contain the core data types, would then be a cheap prerequisite for any executor just like how we already require cloudpickle.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
Presently, executors may need to have Covalent installed for a variety of reasons.
Since the introduction of electron hooks (call_before and call_after), each executor's environment needs Covalent installed. This happens because the calldeps and their inputs are serialized client-side as
TransportableObject
s to ensure that the Covalent server can send to the right executor without needing the calldep's dependencies. The reason for usingTransportableObject
is that it abstracts away the serialization protocol and makes it easy for us to modify it in the future. As theseTransportableObjects
are only deserialized in the executor's environment, the executor needs to understand theTransportableObject
type.Even before the introduction of calldeps, if an Electron refers to another Electron, then the executor needs to understand the
Electron
type when unpickling the first electron.However, both the
Electron
andTransportableObject
types can be obtained only by installing all of Covalent.An easy mitigation is allow users to only install the SDK like
pip install covalent[sdk]
The SDK, which would only contain the core data types, would then be a cheap prerequisite for any executor just like how we already require cloudpickle.Other suggestions?
Beta Was this translation helpful? Give feedback.
All reactions