code: def init(config_file=None, party_name=None, device=None):
      """
      Initialize CrypTen. It will initialize communicator, setup party
      name for file save / load, and setup seeds for Random Number Generatiion.
      By default the function will initialize a set of RNG generators on CPU.
      If torch.cuda.is_available() returns True, it will initialize an additional
      set of RNG generators on GPU. Users can specify the GPU device the generators are
      initialized with device.
  
      Args:
          party_name (str): party_name for file save and load, default is None
          device (int, str, torch.device): Specify device for RNG generators on
          GPU. Must be a GPU device.
      """
      # Load config file
      if config_file is not None:
          cfg.load_config(config_file)
  
      # Return and raise warning if initialized
      if comm.is_initialized():
          warnings.warn(
              "CrypTen is already initialized.", RuntimeWarning
          )
          return
  
      # Initialize communicator
      # os.environ["GLOO_SOCKET_IFNAME"] = "en0"
      comm._init(use_threads=False, init_ttp=crypten.mpc.ttp_required())
  
      # Setup party name for file save / load
      if party_name is not None:
          comm.get().set_name(party_name)
  
      # Setup seeds for Random Number Generation
      if comm.get().get_rank() < comm.get().get_world_size():
          _setup_prng()
          if crypten.mpc.ttp_required():
              crypten.mpc.provider.ttp_provider.TTPClient._init()
  
imports: import builtins
  import copy
  import logging
  import os
  import warnings
  import crypten.common
  import crypten.communicator
  import crypten.config
  import crypten.mpc
  import crypten.nn
  import crypten.optim
  import torch
  from .None import debug
  from .config import cfg
  from .cryptensor import CrypTensor
label_desc: Use image node_id 1 for calling a global function with example usage: init(config_file, party_name, device) without return types