mirror of
https://github.com/wassname/ray.git
synced 2026-06-28 22:53:49 +08:00
Export remote functions when first used and also fix bug in which rem… (#4844)
* Export remote functions when first used and also fix bug in which remote functions and actor classes are not exported from workers during subsequent ray sessions. * Documentation update * Fix tests. * Fix grammar
This commit is contained in:
committed by
Philipp Moritz
parent
4e281ba938
commit
49fe894e22
+11
-7
@@ -186,9 +186,12 @@ class ActorClass(object):
|
||||
task.
|
||||
_resources: The default resources required by the actor creation task.
|
||||
_actor_method_cpus: The number of CPUs required by actor method tasks.
|
||||
_last_export_session: The index of the last session in which the remote
|
||||
function was exported. This is used to determine if we need to
|
||||
export the remote function again.
|
||||
_last_driver_id_exported_for: The ID of the driver ID of the last Ray
|
||||
session during which this actor class definition was exported. This
|
||||
is an imperfect mechanism used to determine if we need to export
|
||||
the remote function again. It is imperfect in the sense that the
|
||||
actor class definition could be exported multiple times by
|
||||
different workers.
|
||||
_actor_methods: The actor methods.
|
||||
_method_decorators: Optional decorators that should be applied to the
|
||||
method invocation function before invoking the actor methods. These
|
||||
@@ -209,7 +212,7 @@ class ActorClass(object):
|
||||
self._num_cpus = num_cpus
|
||||
self._num_gpus = num_gpus
|
||||
self._resources = resources
|
||||
self._last_export_session = None
|
||||
self._last_driver_id_exported_for = None
|
||||
|
||||
self._actor_methods = inspect.getmembers(
|
||||
self._modified_class, ray.utils.is_function_or_method)
|
||||
@@ -342,12 +345,13 @@ class ActorClass(object):
|
||||
*copy.deepcopy(args), **copy.deepcopy(kwargs))
|
||||
else:
|
||||
# Export the actor.
|
||||
if (self._last_export_session is None
|
||||
or self._last_export_session < worker._session_index):
|
||||
if (self._last_driver_id_exported_for is None
|
||||
or self._last_driver_id_exported_for !=
|
||||
worker.task_driver_id):
|
||||
# If this actor class was exported in a previous session, we
|
||||
# need to export this function again, because current GCS
|
||||
# doesn't have it.
|
||||
self._last_export_session = worker._session_index
|
||||
self._last_driver_id_exported_for = worker.task_driver_id
|
||||
worker.function_actor_manager.export_actor_class(
|
||||
self._modified_class, self._actor_method_names)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user