code: def _server_runner(pipe, *args, **kwargs):
      try:
          server = Server.create(*args, start=True, **kwargs)
      except Exception as e:
          logger.exception(
              f"Encountered an exception when starting a server: {e}"
          )
          pipe.send((False, f"{type(e).__name__} {e}"))
          return
  
      try:
          dht_maddrs = server.dht.get_visible_maddrs()
          pipe.send((True, PeerInfo(server.dht.peer_id, dht_maddrs)))
          pipe.recv()  # wait for shutdown signal
  
      finally:
          logger.info("Shutting down server...")
          server.shutdown()
          server.join()
          logger.info("Server shut down")
  
imports: from __future__ import annotations
  import multiprocessing
  import random
  import threading
  from contextlib import contextmanager
  from functools import partial
  from pathlib import Path
  from typing import Dict, List, Optional
  import torch
  from hivemind.dht import DHT
  from hivemind.moe.expert_uid import UID_DELIMITER
  from hivemind.moe.server.checkpoints import CheckpointSaver, is_directory, load_experts
  from hivemind.moe.server.connection_handler import ConnectionHandler
  from hivemind.moe.server.dht_handler import DHTHandlerThread, get_experts
  from hivemind.moe.server.layers import add_custom_models_from_file, name_to_block, name_to_input, schedule_name_to_scheduler
  from hivemind.moe.server.layers.optim import ClippingWrapper
  from hivemind.moe.server.module_backend import ModuleBackend
  from hivemind.moe.server.runtime import Runtime
  from hivemind.p2p import PeerInfo
  from hivemind.proto.runtime_pb2 import CompressionType
  from hivemind.utils.logging import get_logger
  from hivemind.utils.tensor_descr import DUMMY_BATCH_SIZE, BatchTensorDescriptor
label_desc: Use image node_id 2 for calling a global function with example usage: _server_runner(pipe) without return types