class_docstr: A simple module that runs forward/backward of an expert hosted on a remote machine.
  Works seamlessly with pytorch autograd. (this is essentially a simple RPC function)
  Warning: RemoteExpert currently assumes that you provide it with correct input shapes.
  Sending wrong input shapes can cause RemoteExpert to freeze indefinitely due to error in runtime.
  
  :param expert_info: RemoteExpertInfo with uid and server PeerInfo
  :param p2p: P2P instance connected to the running p2pd
class_docstr_tok: ["A","simple","module","that","runs","forward\/backward","of","an","expert","hosted","on","a","remote","machine",".","Works","seamlessly","with","pytorch","autograd",".","(","this","is","essentially","a","simple","RPC","function",")","Warning",":","RemoteExpert","currently","assumes","that","you","provide","it","with","correct","input","shapes",".","Sending","wrong","input","shapes","can","cause","RemoteExpert","to","freeze","indefinitely","due","to","error","in","runtime",".",":","param","expert_info",":","RemoteExpertInfo","with","uid","and","server","PeerInfo",":","param","p2p",":","P2P","instance","connected","to","the","running","p2pd"]
code: def uid(self):
      return self._info.uid
  
imports: from __future__ import annotations
  from concurrent.futures import Future
  from typing import Any, Dict, Iterable, List, Optional, Sequence, Tuple, Union
  import torch
  import torch.nn
  from torch.autograd.function import once_differentiable
  from hivemind import moe
  from hivemind.compression import deserialize_tensor_stream, deserialize_torch_tensor, serialize_torch_tensor
  from hivemind.dht import DHT
  from hivemind.moe.client.remote_expert_worker import RemoteExpertWorker
  from hivemind.moe.expert_uid import ExpertInfo
  from hivemind.p2p import P2P, PeerID, StubBase
  from hivemind.p2p.p2p_daemon_bindings.control import DEFAULT_MAX_MSG_SIZE, MAX_UNARY_PAYLOAD_SIZE
  from hivemind.proto import runtime_pb2
  from hivemind.utils.asyncio import amap_in_executor, iter_as_aiter
  from hivemind.utils.mpfuture import MPFuture
  from hivemind.utils.nested import nested_compare, nested_flatten, nested_pack
  from hivemind.utils.serializer import MSGPackSerializer
  from hivemind.utils.streaming import split_for_streaming
label_desc: Use image node_id 2 for calling the RemoteExpert obj's underlying member method code with example usage: obj.uid() and returns: self