RPC¶
Actors, Learners, Environments may distributed across processes and machines. We use RPC to communicate between these processes. We try to make this deep learning framework agnostic.
An RPC object calls remote function or accepts remote function from other RPC object. In convention, we call the caller client and the callee server. Because the server RPC object provides a remote function to be called, it also has the name service.

Launchable¶
Launchable is a interface that defines init_launcher and init_execution methods.
Remotable¶
RemotableMeta is a metaclass that automatically mark methods in a class as remote functions if they have the __remote__ attribute set to True, and collects all remote method names into a list in the __remote_methods__ attribute of the class. It creates a set called remote_methods and populates it with any methods defined in the __remote_methods__ attribute in the class and any of its base classes. Any method has the __remote__ attribute set to True also be added to the set.
Worker¶
Worker is an interface for (potentially) distributed workers. Each worker is a subprocess.
class SimpleWorker(Worker):
def run(self):
print("Meow, 😻")
worker = Worker()
worker.start() # spwan a subprocess with target=run
Handle¶
Handle is an interface for Worker. handle.dereference() will return the worker object. We mainly use the handle to call remote functions on another worker.