something remotely but never need to fetch it to the caller.
   Imagine the case that a driver process is setting up a parameter
   server and a trainer. The driver can create an embedding table on
   the parameter server and then share the reference to the embedding
   table with the trainer, but itself will never use the embedding
   table locally. In this case, "rpc_sync()" and "rpc_async()" are no
   longer appropriate, as they always imply that the return value will
   be returned to the caller immediately or in the future.

Remote Reference (RRef) serves as a distributed shared pointer
   to a local or remote object. It can be shared with other workers
   and reference counting will be handled transparently. Each RRef
   only has one owner and the object only lives on that owner. Non-
   owner workers holding RRefs can get copies of the object from the
   owner by explicitly requesting it. This is useful when a worker
   needs to access some data object, but itself is neither the creator
