class_docstr: Initialize the Distributed Graph Server
  
  Args:
      root_dir: the graph data dir 
  
      node_types: the node type configs
  
      edge_types: the edge type configs.
  
      symmetry: whether the edges are symmetry
  
      slots: the node feature slot 
  
      token_slot: for erniesage token slot input
  
      slot_num_for_pull_feature: total slot feature number we should pull
  
      num_parts: the sharded parts of graph data
  
      metapath_split_opt: whether use metapath split optimization
docstr: load edge serially, just used in metapath_split_opt
          
docstr_tok: ["load","edge","serially",",","just","used","in","metapath_split_opt"]
code: def load_edge_serial(self):
      """load edge serially, just used in metapath_split_opt"""
      for etype in self.etype_list:
          if etype not in self.etype2files:
              continue
          load_begin_time = time.time()
          self.graph.load_edge_file(
              etype + ":" + etype,
              self.root_dir,
              self.num_parts,
              self.reverse,
              [],
              self.use_weight,
          )
          load_end_time = time.time()
          log.info(
              "load edge[%s] to cpu, time cost: %f sec"
              % (etype, load_end_time - load_begin_time)
          )
  
          release_begin_time = time.time()
          self.graph.release_graph_edge()
          release_end_time = time.time()
          log.info(
              "STAGE [CPU RELEASE EDGE] finished, time cost: %f sec"
              % (release_end_time - release_begin_time)
          )
  
imports: import sys
  import time
  from paddle.fluid.core import GraphGpuWrapper
  from pgl.utils.logger import log
  import helper
  import util
  from place import get_cuda_places
label_desc: Use image node_id 3 for calling the DistGraph obj's underlying member method code with example usage: obj.load_edge_serial() without return types