code: def load_dataset(name, device):
      """
      Load dataset and move graph and features to device
      """
      if name not in ["ogbn-products", "ogbn-arxiv", "ogbn-mag"]:
          raise RuntimeError("Dataset {} is not supported".format(name))
      dataset = DglNodePropPredDataset(name=name)
      splitted_idx = dataset.get_idx_split()
      train_nid = splitted_idx["train"]
      val_nid = splitted_idx["valid"]
      test_nid = splitted_idx["test"]
      g, labels = dataset[0]
      g = g.to(device)
      if name == "ogbn-arxiv":
          g = dgl.add_reverse_edges(g, copy_ndata=True)
          g = dgl.add_self_loop(g)
          g.ndata["feat"] = g.ndata["feat"].float()
      elif name == "ogbn-mag":
          # MAG is a heterogeneous graph. The task is to make prediction for
          # paper nodes
          labels = labels["paper"]
          train_nid = train_nid["paper"]
          val_nid = val_nid["paper"]
          test_nid = test_nid["paper"]
          g = convert_mag_to_homograph(g, device)
      else:
          g.ndata["feat"] = g.ndata["feat"].float()
      n_classes = dataset.num_classes
      labels = labels.squeeze()
      evaluator = get_ogb_evaluator(name)
  
      print(
          f"# Nodes: {g.num_nodes()}\n"
          f"# Edges: {g.num_edges()}\n"
          f"# Train: {len(train_nid)}\n"
          f"# Val: {len(val_nid)}\n"
          f"# Test: {len(test_nid)}\n"
          f"# Classes: {n_classes}"
      )
  
      return (
          g,
          labels,
          n_classes,
          train_nid,
          val_nid,
          test_nid,
          evaluator,
      )
  
file_path: dgl/examples/pytorch/ogb/sign/dataset.py
imports: import dgl
  import dgl.function
  import numpy
  import torch
  from ogb.nodeproppred import DglNodePropPredDataset, Evaluator
label_desc: Use image node_id 3 for calling a global function with example usage: load_dataset(name, device) and returns: g,  labels,  n_classes,  train_nid,  val_nid,  test_nid,  evaluator