code: def create_dataloader(dataset_set, graph, feature, device, is_train):
      #####################################################################
      # (HIGHLIGHT) Create a data loader for efficiently loading graph data.
      #
      # - 'ItemSampler' samples mini-batches of node IDs from the dataset.
      # - 'sample_neighbor' performs neighbor sampling on the graph.
      # - 'FeatureFetcher' fetches node features based on the sampled subgraph.
      # - 'CopyTo' copies the fetched data to the specified device.
  
      #####################################################################
      # Create a datapipe for mini-batch sampling with a specific neighbor fanout.
      # Here, [10, 10, 10] specifies the number of neighbors sampled for each node at each layer.
      # We're using `sample_neighbor` for consistency with DGL's sampling API.
      # Note: GraphBolt offers additional sampling methods, such as `sample_layer_neighbor`,
      # which could provide further optimization and efficiency for GNN training.
      # Users are encouraged to explore these advanced features for potentially improved performance.
  
      # Initialize an ItemSampler to sample mini-batches from the dataset.
      datapipe = gb.ItemSampler(
          dataset_set,
          batch_size=1024,
          shuffle=is_train,
          drop_last=is_train,
      )
      # Sample neighbors for each node in the mini-batch.
      datapipe = datapipe.sample_neighbor(graph, [10, 10, 10])
      # Fetch node features for the sampled subgraph.
      datapipe = datapipe.fetch_feature(
          feature, node_feature_keys=["feat"]
      )
      # Copy the data to the specified device.
      datapipe = datapipe.copy_to(device=device)
      # Create and return a DataLoader to handle data loading.
      dataloader = gb.DataLoader(datapipe, num_workers=0)
  
      return dataloader
  
file_path: dgl/examples/sampling/pyg/node_classification.py
imports: import argparse
  import dgl.graphbolt
  import torch
  import torch.nn.functional
  import torchmetrics.functional
  from torch_geometric.nn import SAGEConv
label_desc: Use image node_id 1 for calling a global function with example usage: create_dataloader(dataset_set, graph, feature, device, is_train) and returns: dataloader