code: def start_client(ip_config, group_id=0, num_servers=1):
      dgl.distributed.register_service(
          HELLO_SERVICE_ID, HelloRequest, HelloResponse
      )
      dgl.distributed.connect_to_server(
          ip_config=ip_config,
          num_servers=num_servers,
          group_id=group_id,
      )
      req = HelloRequest(STR, INTEGER, TENSOR, simple_func)
      # test send and recv
      dgl.distributed.send_request(0, req)
      res = dgl.distributed.recv_response()
      assert res.hello_str == STR
      assert res.integer == INTEGER
      assert_array_equal(F.asnumpy(res.tensor), F.asnumpy(TENSOR))
      # test remote_call
      target_and_requests = []
      for i in range(10):
          target_and_requests.append((0, req))
      res_list = dgl.distributed.remote_call(target_and_requests)
      for res in res_list:
          assert res.hello_str == STR
          assert res.integer == INTEGER
          assert_array_equal(F.asnumpy(res.tensor), F.asnumpy(TENSOR))
      # test send_request_to_machine
      dgl.distributed.send_request_to_machine(0, req)
      res = dgl.distributed.recv_response()
      assert res.hello_str == STR
      assert res.integer == INTEGER
      assert_array_equal(F.asnumpy(res.tensor), F.asnumpy(TENSOR))
      # test remote_call_to_machine
      target_and_requests = []
      for i in range(10):
          target_and_requests.append((0, req))
      res_list = dgl.distributed.remote_call_to_machine(
          target_and_requests
      )
      for res in res_list:
          assert res.hello_str == STR
          assert res.integer == INTEGER
          assert_array_equal(F.asnumpy(res.tensor), F.asnumpy(TENSOR))
  
imports: import multiprocessing
  import os
  import socket
  import time
  import unittest
  import backend
  import dgl
  import pytest
  from numpy.testing import assert_array_equal
  from utils import generate_ip_config, reset_envs
label_desc: Use image node_id 4 for calling a global function with example usage: start_client(ip_config, group_id, num_servers) without return types