code: def start_client(ip_config, num_servers, group_id):
      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, tensor_func)
      server_namebook = dgl.distributed.read_ip_config(
          ip_config, num_servers
      )
      for server_id in server_namebook.keys():
          # test send and recv
          dgl.distributed.send_request(server_id, 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((server_id, 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(server_id, 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((server_id, 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)
              )
  
file_path: dgl/tests/dist/python/rpc_basic.py
imports: import os
  import backend
  import dgl
  from numpy.testing import assert_array_equal
label_desc: Use image node_id 3 for calling a global function with example usage: start_client(ip_config, num_servers, group_id) without return types